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

2019-04-15 14:28:32 浏览数 (1)

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

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

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

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

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

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

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

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

(adsbygoogle = window.adsbygoogle || []).push({});

0 人点赞