Dubbo源码解析实战 - 服务本地暴露流程分析

Dubbo 处理服务暴露的关键就在 Invoker 转换到 Exporter 的过程

面试主要问得多是远程暴露,因为远程暴露涉及到了zookeeper和netty.比如和zookeeper相关的最常问的两道题是服务提供者能实现失效踢出是根据什么原理?,dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?.当然如果这两个你答得好,还会往下问,比如zookeeper实现分布式锁,zookeeper选举机制等等,netty能问得可就很多了,AIO BIO NIO,线程模型等等,netty如果要问的话一般要问得比zookeeper要深一些.

虽然本地暴露面试问得不多,但是我们看源码的初心是为了解决问题,可以把本地暴露当做一个学习远程暴露前的预热

讲讲dubbo服务暴露中本地暴露,并画图辅助说明

Dubbo源码解析实战 - 服务本地暴露流程分析

对于一些细节的地方,还是要加以辅助说明,首先还是拿文档中的服务暴露图来唤醒大家回忆
Dubbo源码解析实战 - 服务本地暴露流程分析

比如图中的1-4就是对应具体服务到invoker的转换,5-11对应Invoker转换为Exporter

  • 在7中,做的是过滤器操作, dubbo默认的过滤器是8个
    Dubbo源码解析实战 - 服务本地暴露流程分析

第10步中利用exporterMap缓存了exporter
Dubbo源码解析实战 - 服务本地暴露流程分析

  • 最后整个过程转化完成
    Dubbo源码解析实战 - 服务本地暴露流程分析

参考

dubbo源码解析-本地暴露