[技术总结]dubbo二三事

dubbo 的组件和Netty的关系

dubbo的启动流程

1、dubbo provider的启动

Main-》 ServerConfig -》 DubboProtocol#openServer :然后开始组装handler,最后调用NettyServer的doOpen()

dubbo的执行流程

1、dubbo的执行和netty的执行是怎么关联上的?

关联点在NettyServer, 里面的handler是netty的handler,但是同时传入了dubbo的ChannlHandler。 netty的各种事件处理操作,都会转发给dubbo的ChannlHandler进行处理;(dubbo 的组件和Netty的关系 的图也说明了这种关系)

dubbo的一些设计参考

1、装饰器模式

dubbo handler的组装

灵活组合各种handler ,相比netty的handler而言,dubbo的handler是必须要执行的,netty的handler是可选的,执行顺序 是不固定的;

2、扩展点设计

依赖倒转的原则,保证了各个节点的灵活性;

其实扩展点,就是策略模式的使用,只不过这里的策略的实现可能是业务定制化的,所以做成了配置化 + 反射的方式去加载各种类;(定好接口标准,业务实现)

3、url的统一设计

统一语言

4、适配器模式

(1)对于netty的适配,把dubbo和netty进行了解耦;

在dubbo的netty包,使用了dubbo的ChannelHandler进行适配;(找到适配点,定义映射关系,定义映射接口,适配)