Dubbo源碼解析之集羣容錯架構設計

注:Dubbo版本是2.5.7,圖1的原圖在Github上,建議讀者下載原圖,原圖清晰度高。git

               

                                                      圖1 Dubbo集羣容錯架構設計時序圖github

                      

                                                    圖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代理

相關文章
相關標籤/搜索