Dubbo源码解析之集群容错架构设计

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

注:Dubbo版本是2.5.7,图1的原图在Github上,建议读者下载原图,原图清晰度高。

               Dubbo源码解析之集群容错架构设计_第1张图片

                                                      图1 Dubbo集群容错架构设计时序图

                      Dubbo源码解析之集群容错架构设计_第2张图片

                                                    图2 Dubbo官网给的集群容错的架构设计图

    图2的大体意思是:先从Directory那里拿到所有的Invoker,假设为List s1;之后用Router过滤s1,得到List s2;之后用loadBalance,从s2中中取出一个Invoker r,用r进行服务调用。

    注意:Dubbo给接口注入的不是接口的实现类,而是一个代理类,图1中的InvokerInvocationHandler实现了InvocationHandler,没错,是JDK动态代理。

  • 步骤5中,从RegistryDirectory中取出所有的List,即上述的s1。
  • 步骤7中,用Router过滤s1,得到s2。
  • 步骤15中,用loadBalance,从s2中取出r。
  • 步骤18中,用r进行服务调用。

 

    上述描述较为简略,为把握主旨,省略了很多细节。接下来可以考虑分析具体细节。图2中的Directory、LoadBalance都使用了设计模式的模板模式。

    可以参考:https://www.jianshu.com/p/8e007012367e

转载于:https://my.oschina.net/u/2518341/blog/1815478

你可能感兴趣的:(java,python,设计模式)