疑问
dubbo是什么?
我X,这都不知道你是怎么点进来的
为什么用dubbo?
1、dubbo不仅仅是一个rpc调用工具,dubbo更是一个强大的rpc生态,dubbo支持市面上流行的各种rpc协议,俗话说就是你使用dubbo就可以和各种使用不同协议的rpc框架无缝对接(dubbo支持的)。
2、dubbo的SPI机制,可以让拓展游刃有余,所有关键点皆可拓展替换
3、dubbo不仅仅是一个rpc框架,dubbo提供了强大的服务治理、容错,以及必不可少的devops。
4、太多了不说了,看看国内生产应用就好
为什么分析dubbo时老找不到北,不知道调用链路跑哪了?
1、分析dubbo源码要先去理解dubbo的SPI机制,这个搞不懂,你不可能看懂dubbo(如果有需要讲解,后续可以单独出一篇详细介绍)
2、dubbo的责任链链条非常多,包装类、增强类特别多,这块看的时候一定要记下来
分析
下面分析均拿netty和zk做例子,当然这些全都可以无缝替换。下面只分析最核心的过程以及关键点,当然也勾勒出来了许多细节。话不多说,直接上图。
dubbo服务发布过程
dubbo服务注册过程
ReferenceAnnotationBeanPostProcessor注册过程看服务发布过程步骤4
服务调用过程
其实大家如果通过上面的图分析过整个流程后,就会发现服务调用的过程,其实就是上面的封装而已。下面这张图更能体会到dubbo中的责任链以及过滤链之长,当然也是我们需要学习的一种设计思想。
总结
其实源码能说的地方真的挺少的,更重要的是看源码的思路和理解作者的设计理念以及设计思想,是非常值得我们学习的(当然这只有你自己分析才能悟出来的)。这篇文章主要引导分析dubbo源码时遇到坎坷的同学提供更清晰的思路,以及记录自己分析时的整个一条链路,以及悟出来的关键点。更深入的东西这里并没有说,需要要同学自己去实践分析了才会理解。