八茧痕、Eureka服務(wù)注冊(cè)與發(fā)現(xiàn)

一、Eureka

?????????Eureka是Netflix的一個(gè)子模塊疲憋,也是核心模塊之一凿渊。Eureka是一個(gè)基于REST的服務(wù),用于定位服務(wù)缚柳,以實(shí)現(xiàn)云端中間層服務(wù)發(fā)現(xiàn)和故障轉(zhuǎn)移埃脏。服務(wù)注冊(cè)與發(fā)現(xiàn)對(duì)于微服務(wù)架構(gòu)來(lái)說(shuō)是非常重要的,有了服務(wù)發(fā)現(xiàn)與注冊(cè)秋忙,只需要使用服務(wù)的標(biāo)識(shí)符彩掐,就可以訪(fǎng)問(wèn)到服務(wù),而不需要修改服務(wù)調(diào)用的配置文件了灰追。功能類(lèi)似于dubbo的注冊(cè)中心堵幽,比如Zookeeper。


二弹澎、在設(shè)計(jì)Eureka的時(shí)候遵守的是AP原則

? ??????CAP原則又稱(chēng)CAP定理朴下,指的是在一個(gè)分布式系統(tǒng)中,Consistency(一致性)苦蒿、 Availability(可用性)殴胧、Partition tolerance(分區(qū)容錯(cuò)性),三者不可兼得佩迟,P必須有团滥,在A和C之間選擇一個(gè)。


三报强、Eureka的基本架構(gòu)

Spring Cloud 封裝了 Netflix 公司開(kāi)發(fā)的 Eureka 模塊來(lái)實(shí)現(xiàn)服務(wù)注冊(cè)和發(fā)現(xiàn)(請(qǐng)對(duì)比Zookeeper)灸姊。

Eureka 采用了 C-S 的設(shè)計(jì)架構(gòu)。Eureka Server 作為服務(wù)注冊(cè)功能的服務(wù)器秉溉,它是服務(wù)注冊(cè)中心力惯。

而系統(tǒng)中的其他微服務(wù)碗誉,使用 Eureka 的客戶(hù)端連接到 Eureka Server并維持心跳連接。這樣系統(tǒng)的維護(hù)人員就可以通過(guò) Eureka Server 來(lái)監(jiān)控系統(tǒng)中各個(gè)微服務(wù)是否正常運(yùn)行夯膀。SpringCloud 的一些其他模塊(比如Zuul)就可以通過(guò) Eureka Server 來(lái)發(fā)現(xiàn)系統(tǒng)中的其他微服務(wù)诗充,并執(zhí)行相關(guān)的邏輯。

????????????????????????????????????????????????????請(qǐng)注意和Dubbo的架構(gòu)對(duì)比

? ??????????????

Eureka包含兩個(gè)組件:Eureka Server和Eureka Client

Eureka Server提供服務(wù)注冊(cè)服務(wù)

各個(gè)節(jié)點(diǎn)啟動(dòng)后诱建,會(huì)在EurekaServer中進(jìn)行注冊(cè),這樣EurekaServer中的服務(wù)注冊(cè)表中將會(huì)存儲(chǔ)所有可用服務(wù)節(jié)點(diǎn)的信息碟绑,服務(wù)節(jié)點(diǎn)的信息可以在界面中直觀的看到

EurekaClient是一個(gè)Java客戶(hù)端俺猿,用于簡(jiǎn)化Eureka Server的交互,客戶(hù)端同時(shí)也具備一個(gè)內(nèi)置的格仲、使用輪詢(xún)(round-robin)負(fù)載算法的負(fù)載均衡器押袍。在應(yīng)用啟動(dòng)后,將會(huì)向Eureka Server發(fā)送心跳(默認(rèn)周期為30秒)凯肋。如果Eureka Server在多個(gè)心跳周期內(nèi)沒(méi)有接收到某個(gè)節(jié)點(diǎn)的心跳谊惭,EurekaServer將會(huì)從服務(wù)注冊(cè)表中把這個(gè)服務(wù)節(jié)點(diǎn)移除(默認(rèn)90秒)


Eureka三大角色

(1)、Eureka server? 提供服務(wù)與發(fā)現(xiàn)

(2)侮东、Service Prodiver? 服務(wù)提供方圈盔,將自身服務(wù)注冊(cè)到Eureka,從而使消費(fèi)方能夠找到

(3)悄雅、Service Consumer? 服務(wù)消費(fèi)方從Eureka獲取服務(wù)注冊(cè)列表驱敲,從而能夠消費(fèi)服務(wù)


四、作為服務(wù)注冊(cè)中心宽闲,Eureka比Zookeeper好在哪里众眨?

? ? ? 著名的CAP理論指出,一個(gè)分布式系統(tǒng)不可能同時(shí)滿(mǎn)足C(一致性)容诬、A(可用性)和P(分區(qū)容錯(cuò)性)娩梨。由于分區(qū)容錯(cuò)性P在是分布式系統(tǒng)中必須要保證的,因此我們只能在A和C之間進(jìn)行權(quán)衡览徒。

? ? ? 因此

? ? ? Zookeeper保證的是CP,

? ? ? Eureka則是AP狈定。

4.1 Zookeeper保證CP

? ? ? ?當(dāng)向注冊(cè)中心查詢(xún)服務(wù)列表時(shí),我們可以容忍注冊(cè)中心返回的是幾分鐘以前的注冊(cè)信息吱殉,但不能接受服務(wù)直接down掉不可用掸冤。也就是說(shuō),服務(wù)注冊(cè)功能對(duì)可用性的要求要高于一致性友雳。但是zk會(huì)出現(xiàn)這樣一種情況稿湿,當(dāng)master節(jié)點(diǎn)因?yàn)榫W(wǎng)絡(luò)故障與其他節(jié)點(diǎn)失去聯(lián)系時(shí),剩余節(jié)點(diǎn)會(huì)重新進(jìn)行l(wèi)eader選舉押赊。問(wèn)題在于饺藤,選舉leader的時(shí)間太長(zhǎng)包斑,30 ~ 120s, 且選舉期間整個(gè)zk集群都是不可用的,這就導(dǎo)致在選舉期間注冊(cè)服務(wù)癱瘓涕俗。在云部署的環(huán)境下罗丰,因網(wǎng)絡(luò)問(wèn)題使得zk集群失去master節(jié)點(diǎn)是較大概率會(huì)發(fā)生的事,雖然服務(wù)能夠最終恢復(fù)再姑,但是漫長(zhǎng)的選舉時(shí)間導(dǎo)致的注冊(cè)長(zhǎng)期不可用是不能容忍的萌抵。

4.2 Eureka保證AP

? ? ? ?Eureka看明白了這一點(diǎn),因此在設(shè)計(jì)時(shí)就優(yōu)先保證可用性元镀。Eureka各個(gè)節(jié)點(diǎn)都是平等的绍填,幾個(gè)節(jié)點(diǎn)掛掉不會(huì)影響正常節(jié)點(diǎn)的工作,剩余的節(jié)點(diǎn)依然可以提供注冊(cè)和查詢(xún)服務(wù)栖疑。而Eureka的客戶(hù)端在向某個(gè)Eureka注冊(cè)或時(shí)如果發(fā)現(xiàn)連接失敗讨永,則會(huì)自動(dòng)切換至其它節(jié)點(diǎn),只要有一臺(tái)Eureka還在遇革,就能保證注冊(cè)服務(wù)可用(保證可用性)卿闹,只不過(guò)查到的信息可能不是最新的(不保證強(qiáng)一致性)。除此之外萝快,Eureka還有一種自我保護(hù)機(jī)制锻霎,如果在15分鐘內(nèi)超過(guò)85%的節(jié)點(diǎn)都沒(méi)有正常的心跳,那么Eureka就認(rèn)為客戶(hù)端與注冊(cè)中心出現(xiàn)了網(wǎng)絡(luò)故障杠巡,此時(shí)會(huì)出現(xiàn)以下幾種情況:

? ? ?1. Eureka不再?gòu)淖?cè)列表中移除因?yàn)殚L(zhǎng)時(shí)間沒(méi)收到心跳而應(yīng)該過(guò)期的服務(wù)

? ? ?2. Eureka仍然能夠接受新服務(wù)的注冊(cè)和查詢(xún)請(qǐng)求量窘,但是不會(huì)被同步到其它節(jié)點(diǎn)上(即保證當(dāng)前節(jié)點(diǎn)依然可用)

? ? ? 3. 當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),當(dāng)前實(shí)例新的注冊(cè)信息會(huì)被同步到其它節(jié)點(diǎn)中

? ? ? 因此氢拥, Eureka可以很好的應(yīng)對(duì)因網(wǎng)絡(luò)故障導(dǎo)致部分節(jié)點(diǎn)失去聯(lián)系的情況蚌铜,而不會(huì)像zookeeper那樣使整個(gè)注冊(cè)服務(wù)癱瘓。


五嫩海、Eureka自我保護(hù)

? ? ?一句話(huà)冬殃,某時(shí)刻某一個(gè)服務(wù)不可用了,eureka不會(huì)立刻清理叁怪,依舊會(huì)對(duì)該微服務(wù)的信息進(jìn)行保存

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末审葬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奕谭,更是在濱河造成了極大的恐慌涣觉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件血柳,死亡現(xiàn)場(chǎng)離奇詭異官册,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)难捌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)膝宁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鸦难,“玉大人,你說(shuō)我怎么就攤上這事员淫『媳危” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵介返,是天一觀的道長(zhǎng)拴事。 經(jīng)常有香客問(wèn)我,道長(zhǎng)映皆,這世上最難降的妖魔是什么挤聘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮捅彻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞍陨。我一直安慰自己步淹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布诚撵。 她就那樣靜靜地躺著缭裆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寿烟。 梳的紋絲不亂的頭發(fā)上澈驼,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音筛武,去河邊找鬼缝其。 笑死,一個(gè)胖子當(dāng)著我的面吹牛徘六,可吹牛的內(nèi)容都是我干的内边。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼待锈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼漠其!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起竿音,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤和屎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后春瞬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體柴信,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年快鱼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颠印。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纲岭。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖线罕,靈堂內(nèi)的尸體忽然破棺而出止潮,到底是詐尸還是另有隱情,我是刑警寧澤钞楼,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布喇闸,位于F島的核電站,受9級(jí)特大地震影響询件,放射性物質(zhì)發(fā)生泄漏燃乍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一宛琅、第九天 我趴在偏房一處隱蔽的房頂上張望刻蟹。 院中可真熱鬧,春花似錦嘿辟、人聲如沸舆瘪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)英古。三九已至,卻和暖如春昙读,著一層夾襖步出監(jiān)牢的瞬間召调,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工蛮浑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唠叛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓陵吸,卻偏偏與公主長(zhǎng)得像玻墅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子壮虫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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