日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > 框架設(shè)計(jì) > 16. Dubbo原理解析-集群&容錯(cuò)之router路由服務(wù)

16. Dubbo原理解析-集群&容錯(cuò)之router路由服務(wù)

來源:程序員人生   發(fā)布時(shí)間:2015-01-13 08:56:51 閱讀次數(shù):9353次

Router服務(wù)路由, 根據(jù)路由規(guī)則從多個(gè)Invoker當(dāng)選出1個(gè)子集AbstractDirectory是所有目錄服務(wù)實(shí)現(xiàn)的上層抽象, 它在list羅列出所有invokers后,會(huì)在通過Router服務(wù)進(jìn)行路由過濾。

Router接口定義

public interface Router extendsComparable<Router> {

    URL getUrl();

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

}

 

ConditionRouter: 條件路由

我們這里簡單分析下代碼實(shí)現(xiàn)具體功能參考官方文檔

條件表達(dá)式以 => 分割為whenRule和thenRule

 

ConditionRouter創(chuàng)建,構(gòu)造器初始

1)從url根據(jù)RULE_KEY獲得路由條件路由內(nèi)容

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

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

 

ConditionRouter履行route方法

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

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

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

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

 

ScriptRouter: 腳本路由,

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

 

ScriptRouter創(chuàng)建,構(gòu)造器初始化

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

2)從url根據(jù)RULE_KEY獲得路由規(guī)則內(nèi)容

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

 

ScriptRouter履行route方法

1)履行引擎創(chuàng)建參數(shù)綁定

2)綁定履行的參數(shù)

3)履行引擎編譯路由規(guī)則得到履行函數(shù)CompiledScript

4)CompiledScript.eval(binds) 根據(jù)參數(shù)履行路由規(guī)則

 

Dubbo提供了ConditionRouterFactory, ScriptRouterFactory來創(chuàng)建對(duì)應(yīng)的路由,路由的規(guī)則從url的RULE_KEY參數(shù)來獲得,路由規(guī)則可以通過監(jiān)控中心或治理中心寫入注冊中心

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從文件讀取路由規(guī)則,將讀取的規(guī)則設(shè)置到url的RULE_KEY參數(shù)上, 文件的后綴代表了路由的類型,選擇具體的路由工廠 ConditionRouterFactory,ScriptRouterFactory來創(chuàng)建路由規(guī)則
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 在线国产区 | 中文在线а√天堂官网 | 国产精品久久久久一区二区 | 91中文字幕在线播放 | 99久久精品国产一区二区三区 | 国产一区二区欧美 | 欧美一a一片一级一片 | 91久久国产综合久久91猫猫 | 国产精品福利视频 | 久久久精品久久久久 | 免费在线观看污视频 | 天堂视频在线观看 | 国内在线视频 | 免费av高清 | 黄色网址在线免费观看 | 91精品国产高清 | 久久aⅴ乱码一区二区三区 蜜桃永久免费 | 欧美一区免费 | 国产在线观看一区二区三区 | 久久在线播放 | 国产精品久久久久久久免费软件 | 久草成人在线 | 免费视频亚洲 | 久久国产精品免费视频 | 国产精品久久久久av福利动漫 | 可以在线观看的av网站 | 久久精品无码一区二区三区 | 国产精品一区二区三区四区在线观看 | 一区免费视频 | 亚洲欧美日韩在线 | 9191久久 | 99久久久久久 | 91视频免费在线观看 | 精品国产精品三级精品av网址 | 国产成人精品一区二区三区在线 | 激情综合色综合久久综合 | 欧美日韩一区二 | 欧美一级淫片丝袜脚交 | 久久久久久久综合 | 日韩中文字幕视频在线观看 | 精品国产第一国产综合精品 |