淺說(shuō) Dubbo 服務(wù)自省

Dubbo 2.7.5 引入了服務(wù)自省特性,今天就來(lái)聊一下這個(gè)特性相關(guān)的內(nèi)容。我們先從 Dubbo 引入應(yīng)用級(jí)服務(wù)模型說(shuō)起。

應(yīng)用級(jí)服務(wù)模型

Dubbo 之前的服務(wù)是接口級(jí)的,即 com.abc.UserService 這樣一個(gè) Java 接口就表示一個(gè)服務(wù)。一個(gè)應(yīng)用里能包含多個(gè)服務(wù)。而 Spring Cloud 和 Kubernetes 的服務(wù)是應(yīng)用級(jí),即 IP + Port 表示一個(gè)服務(wù)。Dubbo 的接口級(jí)服務(wù)模型包含的信息更完整,不僅包含地址信息,也包含接口信息,但這種設(shè)計(jì)產(chǎn)生的服務(wù)信息過(guò)多,而且有很多冗余信息。這樣在大規(guī)模分布式系統(tǒng)中會(huì)導(dǎo)致服務(wù)注冊(cè)中心壓力過(guò)大,網(wǎng)絡(luò)開(kāi)銷(xiāo)和 Consumer 端內(nèi)存開(kāi)銷(xiāo)也會(huì)很大。

Dubbo 為了與 Spring Cloud、Kubernetes 的服務(wù)模型保持一致,更好地互聯(lián)互通和集成,在 2.7.5 版本中引入了應(yīng)用級(jí)服務(wù)模型。通常來(lái)說(shuō),一個(gè)應(yīng)用包含3至5個(gè)接口,因此,使用應(yīng)用級(jí)服務(wù)模型,可使數(shù)據(jù)推送、內(nèi)存占用降低至少60%。

所以,Dubbo 引入應(yīng)用級(jí)服務(wù)的目的有兩個(gè):一是降低服務(wù)注冊(cè)中心壓力,支持更大規(guī)模 Dubbo 微服務(wù)的治理;二是與 Spring Cloud、Kubernetes 服務(wù)模型保持一致,為互聯(lián)互通和集成打基礎(chǔ)。

應(yīng)用與接口的映射關(guān)系

Dubbo 中的一個(gè)服務(wù)完整標(biāo)識(shí)包含協(xié)議、接口、版本、服務(wù)組 (${protocol}:${interface}:${version}:${group})。在引入應(yīng)用級(jí)服務(wù)后,Consumer 需要根據(jù)服務(wù)標(biāo)識(shí)找到對(duì)應(yīng)的應(yīng)用,然后在根據(jù)服務(wù)注冊(cè)中心的數(shù)據(jù)找到服務(wù)對(duì)應(yīng)的地址。因此,需要有地方維護(hù)服務(wù)標(biāo)識(shí) -> 應(yīng)用的映射。Dubbo 提供了兩種方式實(shí)現(xiàn)這一點(diǎn):中心配置和本地配置。

中心配置使用配置中心實(shí)現(xiàn)(有些繞口),目前能作為 Dubbo 配置中心的有 ZK、Consul 和 Nacos。

本地配置方式則需要在代碼或外部配置文件中維護(hù)服務(wù)標(biāo)識(shí)與應(yīng)用的映射(代碼示例可見(jiàn)小馬哥的文章)。

引入應(yīng)用與接口配置設(shè)計(jì)后 Dubbo 架構(gòu)如下(再次引用自小馬哥的文章):

image

(其中服務(wù)對(duì)應(yīng)我文中的應(yīng)用,Service 對(duì)應(yīng)我文中的接口)

元數(shù)據(jù)服務(wù)

這樣就夠了嗎?不是。引入應(yīng)用級(jí)服務(wù)特性后,注冊(cè)中心里的數(shù)據(jù)主要就是應(yīng)用地址信息,配置信息主要是接口與應(yīng)用的映射,但真正要調(diào)用起來(lái)還需要更多信息,這些就是元數(shù)據(jù),除了 IP、端口等信息外,還有比如參數(shù)數(shù)據(jù),這些是注冊(cè)中心和配置(中心)所沒(méi)有的數(shù)據(jù)。

因此,Dubbo 2.7.5 引入元數(shù)據(jù)服務(wù),元數(shù)據(jù)服務(wù)也是一個(gè) Dubbo 服務(wù)(接口),它用于描述其它 Dubbo 接口的接口(這就是 MetadataService 名字的由來(lái))。

Dubbo 2.7.0 引入了元數(shù)據(jù)中心,但是去中心化的元數(shù)據(jù)服務(wù)是更好的選擇。

引入元數(shù)據(jù)服務(wù)后的 Dubbo 架構(gòu)

image

小結(jié)

總結(jié)來(lái)說(shuō),引入服務(wù)自省以及應(yīng)用級(jí)服務(wù)模型特性后,Dubbo 注冊(cè)中心的數(shù)據(jù)量大幅降低,減少的數(shù)據(jù)在去重后轉(zhuǎn)移到了配置中心(或本地配置)和元數(shù)據(jù)服務(wù)中。通過(guò)這樣的改進(jìn),Dubbo 便能夠承載更大規(guī)模的微服務(wù)體系了,也能是注冊(cè)中心運(yùn)行的更加穩(wěn)定高效,節(jié)約網(wǎng)絡(luò)和內(nèi)存開(kāi)銷(xiāo)。

本文算是我在了解 Dubbo 2.7.5 服務(wù)自省特性后的一個(gè)總結(jié)。因?yàn)檫@個(gè)特性是目前最新的 Dubbo 特性之一,我本人既沒(méi)有實(shí)踐,查閱的文章也很有限,難免有描述錯(cuò)誤和不周的地方,所以歡迎大家指正和交流。

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,556評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事?!?“怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,463評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,009評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,778評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,218評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,436評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,969評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,795評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,993評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,229評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,659評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,917評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,687評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,990評(píng)論 2 374