dubbo 你該懂的概念

[TOC]

1 為何要使用dubbo

大規(guī)模服務(wù)化之前员舵,應(yīng)用可能只是通過(guò)RMI或Hessian等工具藕畔,簡(jiǎn)單的暴露和引用遠(yuǎn)程服務(wù)注服,通過(guò)配置服務(wù)的URL地址進(jìn)行調(diào)用,通過(guò)F5等硬件進(jìn)行負(fù)載均衡女淑。

(1) 當(dāng)服務(wù)越來(lái)越多時(shí)鸭你,服務(wù)URL配置管理變得非常困難擒权,F(xiàn)5硬件負(fù)載均衡器的單點(diǎn)壓力也越來(lái)越大。

此時(shí)需要一個(gè)服務(wù)注冊(cè)中心愉老,動(dòng)態(tài)的注冊(cè)和發(fā)現(xiàn)服務(wù)俺夕,使服務(wù)的位置透明劝贸。并通過(guò)在消費(fèi)方獲取服務(wù)提供方地址列表逗宁,實(shí)現(xiàn)軟負(fù)載均衡和Failover,降低對(duì)F5硬件負(fù)載均衡器的依賴件甥,也能減少部分成本。

(2) 當(dāng)進(jìn)一步發(fā)展瓣颅,服務(wù)間依賴關(guān)系變得錯(cuò)蹤復(fù)雜宫补,甚至分不清哪個(gè)應(yīng)用要在哪個(gè)應(yīng)用之前啟動(dòng)曾我,架構(gòu)師都不能完整的描述應(yīng)用的架構(gòu)關(guān)系抒巢。

這時(shí),需要自動(dòng)畫(huà)出應(yīng)用間的依賴關(guān)系圖稚晚,以幫助架構(gòu)師理清理關(guān)系蜈彼。

(3) 接著俺驶,服務(wù)的調(diào)用量越來(lái)越大,服務(wù)的容量問(wèn)題就暴露出來(lái)还绘,這個(gè)服務(wù)需要多少機(jī)器支撐拍顷?什么時(shí)候該加機(jī)器塘幅?

為了解決這些問(wèn)題电媳,第一步,要將服務(wù)現(xiàn)在每天的調(diào)用量捞稿,響應(yīng)時(shí)間娱局,都統(tǒng)計(jì)出來(lái),作為容量規(guī)劃的參考指標(biāo)任斋。其次仁卷,要可以動(dòng)態(tài)調(diào)整權(quán)重犬第,在線上歉嗓,將某臺(tái)機(jī)器的權(quán)重一直加大鉴分,并在加大的過(guò)程中記錄響應(yīng)時(shí)間的變化带膀,直到響應(yīng)時(shí)間到達(dá)閥值,記錄此時(shí)的訪問(wèn)量伦糯,再以此訪問(wèn)量乘以機(jī)器數(shù)反推總?cè)萘俊?/p>

2 dubbo實(shí)戰(zhàn)

關(guān)于dubbo項(xiàng)目搭建敛纲,實(shí)戰(zhàn)的例子淤翔。網(wǎng)上可以找到很多佩谷,這里提供一個(gè)我覺(jué)得寫(xiě)的比較清晰的,Dubbo與Zookeeper抡谐、SpringMVC整合和使用

3 基本概念

節(jié)點(diǎn)角色說(shuō)明

Container: 服務(wù)運(yùn)行容器童叠。
Provider: 暴露服務(wù)的服務(wù)提供方厦坛。
Consumer: 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方。
Registry: 服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心放仗。
Monitor: 統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時(shí)間的監(jiān)控中心撬碟。

調(diào)用關(guān)系說(shuō)明

  1. 服務(wù)容器負(fù)責(zé)啟動(dòng),加載惶傻,運(yùn)行服務(wù)提供者银室。
  2. 服務(wù)提供者在啟動(dòng)時(shí)励翼,向注冊(cè)中心注冊(cè)自己提供的服務(wù)。
  3. 服務(wù)消費(fèi)者在啟動(dòng)時(shí)抓狭,向注冊(cè)中心訂閱自己所需的服務(wù)否过。
  4. 注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更叠纹,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者誉察。
  5. 服務(wù)消費(fèi)者惹谐,從提供者地址列表中氨肌,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用怎囚,如果調(diào)用失敗,再選另一臺(tái)調(diào)用考婴。
  6. 服務(wù)消費(fèi)者和提供者沥阱,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心策精。

負(fù)載均衡策略崇棠,可選值:random(隨機(jī)),roundrobin(輪循),leastactive(最少活躍調(diào)用)

集群容錯(cuò)模式

可以自行擴(kuò)展集群容錯(cuò)策略枕稀,參見(jiàn):集群擴(kuò)展

Failover Cluster

  1. 失敗自動(dòng)切換,當(dāng)出現(xiàn)失敗,重試其它服務(wù)器骄恶。(缺省)
  2. 通常用于讀操作僧鲁,但重試會(huì)帶來(lái)更長(zhǎng)延遲。
  3. 可通過(guò)retries="2"來(lái)設(shè)置重試次數(shù)(不含第一次)斟叼。

Failfast Cluster

  1. 快速失敗春寿,只發(fā)起一次調(diào)用绑改,失敗立即報(bào)錯(cuò)。
  2. 通常用于非冪等性的寫(xiě)操作识腿,比如新增記錄渡讼。

Failsafe Cluster

  1. 失敗安全,出現(xiàn)異常時(shí)展箱,直接忽略析藕。
  2. 通常用于寫(xiě)入審計(jì)日志等操作。

Failback Cluster

  1. 失敗自動(dòng)恢復(fù)账胧,后臺(tái)記錄失敗請(qǐng)求治泥,定時(shí)重發(fā)遮精。
  2. 通常用于消息通知操作。

Forking Cluster

  1. 并行調(diào)用多個(gè)服務(wù)器准脂,只要一個(gè)成功即返回檬洞。
  2. 通常用于實(shí)時(shí)性要求較高的讀操作狸膏,但需要浪費(fèi)更多服務(wù)資源湾戳。
    可通過(guò)forks="2"來(lái)設(shè)置最大并行數(shù)砾脑。

Broadcast Cluster

  1. 廣播調(diào)用所有提供者艾杏,逐個(gè)調(diào)用购桑,任意一臺(tái)報(bào)錯(cuò)則報(bào)錯(cuò)其兴。(2.1.0開(kāi)始支持)
  2. 通常用于通知所有提供者更新緩存或日志等本地資源信息。

重試次數(shù)配置如:(failover集群模式生效)

<dubbo:service retries="2" />

或者
<dubbo:reference retries="2" />

或者
<dubbo:reference>
    <dubbo:method name="findFoo" retries="2" />
</dubbo:reference>

集群模式配置


<dubbo:service cluster="failsafe" />
或者
<dubbo:reference cluster="failsafe" />

4 負(fù)載均衡

可以自行擴(kuò)展負(fù)載均衡策略榴徐,參見(jiàn):負(fù)載均衡擴(kuò)展

Random LoadBalance

  1. 隨機(jī)坑资,按權(quán)重設(shè)置隨機(jī)概率袱贮。
  2. 在一個(gè)截面上碰撞的概率高,但調(diào)用量越大分布越均勻嗽仪,而且按概率使用權(quán)重后也比較均勻闻坚,有利于動(dòng)態(tài)調(diào)整提供者權(quán)重窿凤。

RoundRobin LoadBalance

  1. 輪循跨蟹,按公約后的權(quán)重設(shè)置輪循比率。
  2. 存在慢的提供者累積請(qǐng)求問(wèn)題相种,比如:第二臺(tái)機(jī)器很慢品姓,但沒(méi)掛腹备,當(dāng)請(qǐng)求調(diào)到第二臺(tái)時(shí)就卡在那植酥,久而久之弦牡,所有請(qǐng)求都卡在調(diào)到第二臺(tái)上驾锰。

LeastActive LoadBalance

  1. 最少活躍調(diào)用數(shù)椭豫,相同活躍數(shù)的隨機(jī),活躍數(shù)指調(diào)用前后計(jì)數(shù)差医增。
  2. 使慢的提供者收到更少請(qǐng)求,因?yàn)樵铰奶峁┱叩恼{(diào)用前后計(jì)數(shù)差會(huì)越大搬素。

ConsistentHash LoadBalance

  1. 一致性Hash熬尺,相同參數(shù)的請(qǐng)求總是發(fā)到同一提供者囱淋。
  2. 當(dāng)某一臺(tái)提供者掛時(shí)妥衣,原本發(fā)往該提供者的請(qǐng)求税手,基于虛擬節(jié)點(diǎn)芦倒,平攤到其它提供者兵扬,不會(huì)引起劇烈變動(dòng)。
  3. 算法參見(jiàn):http://en.wikipedia.org/wiki/Consistent_hashing津坑。
  4. 缺省只對(duì)第一個(gè)參數(shù)Hash傲霸,如果要修改疆瑰,請(qǐng)配置<dubbo:parameter key="hash.arguments" value="0,1" />
  5. 缺省用160份虛擬節(jié)點(diǎn),如果要修改昙啄,請(qǐng)配置<dubbo:parameter key="hash.nodes" value="320" />

配置方式:

<dubbo:service interface="..." loadbalance="roundrobin" />

<dubbo:reference interface="..." loadbalance="roundrobin" />

<dubbo:service interface="...">
    <dubbo:method name="..." loadbalance="roundrobin"/>
</dubbo:service>

<dubbo:reference interface="...">
    <dubbo:method name="..." loadbalance="roundrobin"/>
</dubbo:reference>

關(guān)于一致性hash穆役,五分鐘理解一致性哈希算法(consistent hashing)

更多關(guān)于dubbo的信息,查看dubbo官方網(wǎng)站

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梳凛,一起剝皮案震驚了整個(gè)濱河市耿币,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌韧拒,老刑警劉巖掰读,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秘狞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蹈集,警方通過(guò)查閱死者的電腦和手機(jī)减响,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)颂鸿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事闲擦。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵蜕琴,是天一觀的道長(zhǎng)恃逻。 經(jīng)常有香客問(wèn)我凸郑,道長(zhǎng),這世上最難降的妖魔是什么救氯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任甲抖,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己或链,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布筛婉。 她就那樣靜靜地躺著入蛆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天岖瑰,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的证九。 我是一名探鬼主播叫搁,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼音诫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤偿曙,失蹤者是張志新(化名)和其女友劉穎朵纷,沒(méi)想到半個(gè)月后威创,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摩瞎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岸梨。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情易遣,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布担巩,位于F島的核電站先匪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏激涤。R本人自食惡果不足惜犁嗅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望美浦。 院中可真熱鬧抵代,春花似錦、人聲如沸晦嵌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至辱魁,卻和暖如春请唱,著一層夾襖步出監(jiān)牢的瞬間甚亭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工偶摔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留暇唾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓辰斋,卻偏偏與公主長(zhǎng)得像策州,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宫仗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 時(shí)間過(guò)得可真快够挂,小家伙不知不覺(jué)已在學(xué)校度過(guò)了16天。 這短短的16天藕夫,從哭鬧不肯上學(xué)到現(xiàn)在的主動(dòng)刷牙上學(xué)下硕,從要求媽...
    向著太陽(yáng)奔跑的石頭閱讀 145評(píng)論 0 0
  • 第十一章:如果一個(gè)人的感情得到了解脫丁逝,那么另一個(gè)人將走向可怕的地獄。 鳳九努力從風(fēng)雨中睜開(kāi)眼梭姓,看清了眼前人霜幼,略帶哭...
    簡(jiǎn)爾妍之閱讀 26,806評(píng)論 4 86
  • 弘丹參考的是錢(qián)穆的《論語(yǔ)新解》以及傅佩榮的《人能弘道-傅佩榮談?wù)撜Z(yǔ)》,綠窗幽夢(mèng)參考的是朱熹的《四書(shū)章句集注》誉尖,由弘...
    弘丹閱讀 822評(píng)論 1 3
  • 大西北總是這樣罪既,按段子手的話來(lái)說(shuō),南方的春天是美麗溫柔的春姑娘铡恕,而北方的春天就是一個(gè)女瘋子琢感。 我一直在想那只漂浮在...
    蘇藎郃閱讀 236評(píng)論 0 4