多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > 16. Dubbo原理解析-集群&容錯之router路由服務

16. Dubbo原理解析-集群&容錯之router路由服務

來源:程序員人生   發布時間:2015-01-13 08:56:51 閱讀次數:9345次

Router服務路由, 根據路由規則從多個Invoker當選出1個子集AbstractDirectory是所有目錄服務實現的上層抽象, 它在list羅列出所有invokers后,會在通過Router服務進行路由過濾。

Router接口定義

public interface Router extendsComparable<Router> {

    URL getUrl();

<T> List<Invoker<T>> route(List<Invoker<T>>invokers, URL url, Invocation invocation)throws RpcException;

}

 

ConditionRouter: 條件路由

我們這里簡單分析下代碼實現具體功能參考官方文檔

條件表達式以 => 分割為whenRule和thenRule

 

ConditionRouter創建,構造器初始

1)從url根據RULE_KEY獲得路由條件路由內容

2)rule.indexOf("=>") 分割路由內容

3)分別調用parseRule(rule) 解析路由為whenRule和thenRules

 

ConditionRouter履行route方法

1)如果url不滿足when條件即過來條件, 不過濾返回所有invokers

2)遍歷所有invokers判斷是不是滿足then條件, 將滿足條件的加入集合result

3)Result不為空,有滿足條件的invokers返回

4)Result為空, 沒有滿足條件的invokers, 判斷參數FORCE_KEY是不是強迫過來,如果強迫過濾返回空, 不是返回所有即不過濾

 

ScriptRouter: 腳本路由,

通過url的RULE_KEY參數獲得腳本內容,然后通過java的腳本引擎履行腳本代碼, dubbo的測試用例都是通過javascript作為腳本但是理論上也支持groovy, jruby腳本,大家可以參考下測試用例ScriptRouterTest。

 

ScriptRouter創建,構造器初始化

1)從url獲得腳本類型javascript, groovy等等

2)從url根據RULE_KEY獲得路由規則內容

3)根據腳本類型獲得java支持的腳本履行引擎

 

ScriptRouter履行route方法

1)履行引擎創建參數綁定

2)綁定履行的參數

3)履行引擎編譯路由規則得到履行函數CompiledScript

4)CompiledScript.eval(binds) 根據參數履行路由規則

 

Dubbo提供了ConditionRouterFactory, ScriptRouterFactory來創建對應的路由,路由的規則從url的RULE_KEY參數來獲得,路由規則可以通過監控中心或治理中心寫入注冊中心

RegistryFactory registryFactory =ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();

Registry registry =registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181");

registry.register(URL.valueOf("condition://0.0.0.0/com.foo.BarService?category=routers&dynamic=false&rule="+ URL.encode("http://10.20.160.198/wiki/display/dubbo/host = 10.20.153.10=> host = 10.20.153.11") + "));

 

Dubbo也支持通過FileRouterFactory從文件讀取路由規則,將讀取的規則設置到url的RULE_KEY參數上, 文件的后綴代表了路由的類型,選擇具體的路由工廠 ConditionRouterFactory,ScriptRouterFactory來創建路由規則
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------

上一篇 mysql使用總結

下一篇 UML中的圖

分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美精品国产综合久久 | 香蕉免费看一区二区三区 | 午夜成人免费视频 | 国产午夜精品久久久久 | 秋霞一级在线理论片欧美 | 色阁阁日韩欧美在线 | 欧美一区二区三区不卡视频 | 一级特黄色大片 | 国产免费69成人精品视频 | 日本欧美一区二区三区视频麻豆 | 欧美日本一道道一区二区三 | 四虎一区二区三区精品 | 欧美日本韩国一区二区 | 欧美一级视频精品观看 | 日韩成人精品日本亚洲 | 亚洲天堂中文字幕 | 波多野结衣gvg-238 | 亚洲精品视频在线免费 | 色中色欧美 | 亚洲天堂一区二区三区四区 | 加勒比一区二区三区 | 中文字幕一区二区三区永久 | 日韩中文字幕一区二区不卡 | 国产精品国产午夜免费福利看 | 手机在线一区二区三区 | a丫久久久久久一级毛片 | 亚洲在线资源 | 欧美人欧美人与动人物性行为 | xxx日本在线| 91大片| 亚洲色图首页 | 国产精品免费视频一区一 | 亚洲网站在线看 | 春色视频www免费视频观看 | 国产中文 | 精品国产福利片在线观看 | 69国产精品视频免费 | 三级黄在线 | 欧美日本一道道一区二区三 | 久久国产经典视频 | freesexvideos性大全性亚洲 |