微服務(wù)化改造系列之二:服務(wù)注冊中心

前情概要:微服務(wù)化改造系列之一:總覽

服務(wù)注冊中心概述

這篇文章是微服務(wù)化改造系列的第二篇稚晚,主題是服務(wù)注冊中心崇堵。作為微服務(wù)架構(gòu)最基礎(chǔ)也是最重要的組件之一,服務(wù)注冊中心本質(zhì)上是為了解耦服務(wù)提供者和服務(wù)消費者客燕。對于任何一個微服務(wù)鸳劳,原則上都應存在或者支持多個提供者,這是由微服務(wù)的分布式屬性決定的也搓。更進一步赏廓,為了支持彈性擴縮容特性,一個微服務(wù)的提供者的數(shù)量和分布往往是動態(tài)變化的傍妒,也是無法預先確定的幔摸。因此,原本在單體應用階段常用的靜態(tài)LB機制就不再適用了颤练,需要引入額外的組件來管理微服務(wù)提供者的注冊與發(fā)現(xiàn)既忆,而這個組件就是服務(wù)注冊中心。

設(shè)計或者選型一個服務(wù)注冊中心,首先要考慮的就是服務(wù)注冊與發(fā)現(xiàn)機制尿贫〉缦保縱觀當下各種主流的服務(wù)注冊中心解決方案,大致可歸為三類:

  • 應用內(nèi):直接集成到應用中庆亡,依賴于應用自身完成服務(wù)的注冊與發(fā)現(xiàn)匾乓,最典型的是Netflix提供的Eureka
  • 應用外:把應用當成黑盒,通過應用外的某種機制將服務(wù)注冊到注冊中心又谋,最小化對應用的侵入性拼缝,比如Airbnb的SmartStack,HashiCorp的Consul
  • DNS:將服務(wù)注冊為DNS的SRV記錄彰亥,嚴格來說咧七,是一種特殊的應用外注冊方式,SkyDNS是其中的代表

注1:對于第一類注冊方式任斋,除了Eureka這種一站式解決方案继阻,還可以基于ZooKeeper或者Etcd自行實現(xiàn)一套服務(wù)注冊機制,這在大公司比較常見废酷,但對于小公司而言顯然性價比太低瘟檩。

注2:由于DNS固有的緩存缺陷,本文不對第三類注冊方式作深入探討澈蟆。

除了基本的服務(wù)注冊與發(fā)現(xiàn)機制墨辛,從開發(fā)和運維角度,至少還要考慮如下五個方面:

  • 測活:服務(wù)注冊之后趴俘,如何對服務(wù)進行測活以保證服務(wù)的可用性睹簇?
  • 負載均衡:當存在多個服務(wù)提供者時,如何均衡各個提供者的負載寥闪?
  • 集成:在服務(wù)提供端或者調(diào)用端太惠,如何集成注冊中心?
  • 運行時依賴:引入注冊中心之后疲憋,對應用的運行時環(huán)境有何影響垛叨?
  • 可用性:如何保證注冊中心本身的可用性,特別是消除單點故障柜某?

以下就圍繞上述幾個方面嗽元,簡單分析一下Eureka,SmartStack喂击,Consul的利弊剂癌。

Eureka

從設(shè)計角度來看,Eureka可以說是無懈可擊翰绊,注冊中心佩谷、提供者旁壮、調(diào)用者邊界清晰,通過去中心化的集群支持保證了注冊中心的整體可用性谐檀,但缺點是Eureka屬于應用內(nèi)的注冊方式抡谐,對應用的侵入性太強,且只支持Java應用桐猬。

SmartStack

SmartStack可以說是三種方案中最復雜的麦撵,涉及了ZooKeeper、HAProxy溃肪、Nerve和Synapse四種異構(gòu)組件免胃,對運維提出了很高的要求。它最大的好處是對應用零侵入惫撰,且適用于任意類型的應用羔沙。

Consul

Consul本質(zhì)上屬于應用外的注冊方式,但可以通過SDK簡化注冊流程厨钻。而服務(wù)發(fā)現(xiàn)恰好相反扼雏,默認依賴于SDK,但可以通過Consul Template(下文會提到)去除SDK依賴夯膀。

最終方案

最終我們選擇了Consul作為服務(wù)注冊中心的實現(xiàn)方案诗充,主要原因有兩點:

  1. 最小化對已有應用的侵入性,這也是貫穿我們整個微服務(wù)化改造的原則之一
  2. 降低運維的復雜度棍郎,Consul Agent既可以運行在服務(wù)器模式,又可以運行在客戶端模式

Consul Template

上文提到使用Consul银室,默認服務(wù)調(diào)用者需要依賴Consul SDK來發(fā)現(xiàn)服務(wù)涂佃,這就無法保證對應用的零侵入性。所幸通過Consul Template蜈敢,可以定時從Consul集群獲取最新的服務(wù)提供者列表并刷新LB配置(比如nginx的upstream)辜荠,這樣對于服務(wù)調(diào)用者而言,只需要配置一個統(tǒng)一的服務(wù)調(diào)用地址即可抓狭。改造后的調(diào)用關(guān)系如下:

Spring Cloud Consul

由于我們選用了Spring Boot作為統(tǒng)一的微服務(wù)實現(xiàn)框架伯病,很自然的,可以利用Spring Cloud提供的Consul組件進一步簡化服務(wù)注冊流程否过,省去額外的服務(wù)提供端的Consul配置午笛。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市苗桂,隨后出現(xiàn)的幾起案子药磺,更是在濱河造成了極大的恐慌,老刑警劉巖煤伟,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件癌佩,死亡現(xiàn)場離奇詭異木缝,居然都是意外死亡,警方通過查閱死者的電腦和手機围辙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門我碟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姚建,你說我怎么就攤上這事矫俺。” “怎么了桥胞?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵恳守,是天一觀的道長。 經(jīng)常有香客問我贩虾,道長催烘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任缎罢,我火速辦了婚禮伊群,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘策精。我一直安慰自己舰始,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布咽袜。 她就那樣靜靜地躺著丸卷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪询刹。 梳的紋絲不亂的頭發(fā)上谜嫉,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音凹联,去河邊找鬼沐兰。 笑死,一個胖子當著我的面吹牛蔽挠,可吹牛的內(nèi)容都是我干的住闯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼澳淑,長吁一口氣:“原來是場噩夢啊……” “哼比原!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起杠巡,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤春寿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后忽孽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绑改,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡谢床,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厘线。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片识腿。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖造壮,靈堂內(nèi)的尸體忽然破棺而出渡讼,到底是詐尸還是另有隱情,我是刑警寧澤耳璧,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布成箫,位于F島的核電站,受9級特大地震影響旨枯,放射性物質(zhì)發(fā)生泄漏蹬昌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一攀隔、第九天 我趴在偏房一處隱蔽的房頂上張望皂贩。 院中可真熱鬧,春花似錦昆汹、人聲如沸明刷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辈末。三九已至,卻和暖如春映皆,著一層夾襖步出監(jiān)牢的瞬間挤聘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工劫扒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留檬洞,地道東北人狸膏。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓沟饥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親湾戳。 傳聞我的和親對象是個殘疾皇子贤旷,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

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