溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

eureka與zookeeper的原理是什么

發(fā)布時(shí)間:2021-06-26 14:17:19 來(lái)源:億速云 閱讀:118 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“eureka與zookeeper的原理是什么”,在日常操作中,相信很多人在eureka與zookeeper的原理是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”eureka與zookeeper的原理是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

 CAP 理論

什么叫 CAP 理論呢?CAP 理論是由 Eric Brewer 教授提出,是分布式系統(tǒng)中的一個(gè)重要的概念。具體如下:

C(Consistency):數(shù)據(jù)一致性。大家都知道,分布式系統(tǒng)中,數(shù)據(jù)會(huì)有副本。由于網(wǎng)絡(luò)或者機(jī)器故障等因素,可能有些副本數(shù)據(jù)寫(xiě)入正確,有些卻寫(xiě)入錯(cuò)誤或者失敗,這樣就導(dǎo)致了數(shù)據(jù)的不一致了。而滿足數(shù)據(jù)一致性規(guī)則,就是保證所有數(shù)據(jù)都要同步。

A(Availability):可用性。我們需要獲取什么數(shù)據(jù)時(shí),都能夠正常的獲取到想要的數(shù)據(jù)(當(dāng)然,允許可接受范圍內(nèi)的網(wǎng)絡(luò)延遲),也就是說(shuō),要保證任何時(shí)候請(qǐng)求數(shù)據(jù)都能夠正常響應(yīng)。

P(Partition Tolerance):分區(qū)容錯(cuò)性。當(dāng)網(wǎng)絡(luò)通信發(fā)生故障時(shí),集群仍然可用,不會(huì)因?yàn)槟硞€(gè)節(jié)點(diǎn)掛了或者存在問(wèn)題,而影響整個(gè)系統(tǒng)的正常運(yùn)作。

對(duì)于分布式系統(tǒng)來(lái)說(shuō),出現(xiàn)網(wǎng)絡(luò)分區(qū)是不可避免的,因此分區(qū)容錯(cuò)性是必須要具備的,也就是說(shuō),CAP三者,P是必須的,是個(gè)客觀存在的事實(shí),不可避免,也無(wú)法繞過(guò)。

1. Zookeeper 的 CP 原則

對(duì)于 zookeeper 來(lái)說(shuō),它是 CP 的。也就是說(shuō),zookeeper 是保證數(shù)據(jù)的一致性的,但是這里還需要注意一點(diǎn)是,zookeeper 它不是強(qiáng)一致的,什么意思呢?

打個(gè)比方,現(xiàn)在客戶端 A 提交一個(gè)寫(xiě)操作,zookeeper 在過(guò)半數(shù)節(jié)點(diǎn)操作成功之后就可以返回,但此時(shí),客戶端 B 的讀操作請(qǐng)求的是 A 寫(xiě)曹操尚未同步到的節(jié)點(diǎn),那么讀取的就不是 A 最新提交的數(shù)據(jù)了。

那如何保證強(qiáng)一致性呢?我們可以在讀取數(shù)據(jù)的時(shí)候先執(zhí)行一下 sync 操作,即與 leader 節(jié)點(diǎn)先同步一下數(shù)據(jù),再去取,這樣才能保證數(shù)據(jù)的強(qiáng)一致性。

但是 zookeeper 也有個(gè)缺陷,剛剛提到了 leader 節(jié)點(diǎ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)行 leader 選舉。問(wèn)題在于,選舉 leader 的時(shí)間太長(zhǎng),30 ~ 120s, 且選舉期間整個(gè) zookeeper 集群都是不可用的,這就導(dǎo)致在選舉期間注冊(cè)服務(wù)癱瘓。

在云部署的環(huán)境下,因網(wǎng)絡(luò)問(wèn)題使得 zookeeper 集群失去 master 節(jié)點(diǎn)是較大概率會(huì)發(fā)生的事,雖然服務(wù)能夠最終恢復(fù),但是漫長(zhǎng)的選舉時(shí)間導(dǎo)致的注冊(cè)長(zhǎng)期不可用是不能容忍的。比如雙十一當(dāng)天,那就是災(zāi)難性的。

2. Eureka 的 AP 原則

大規(guī)模網(wǎng)絡(luò)部署時(shí),失敗是在所難免的,因此我們無(wú)法回避這個(gè)問(wèn)題。當(dāng)向注冊(cè)中心查詢服務(wù)列表時(shí),我們可以容忍注冊(cè)中心返回的是幾分鐘以前的注冊(cè)信息,但不能接受服務(wù)直接 down 掉不可用。

Eureka 在被設(shè)計(jì)的時(shí)候,就考慮到了這一點(diǎn),因此在設(shè)計(jì)時(shí)優(yōu)先保證可用性,這就是 AP 原則。Eureka 各個(gè)節(jié)點(diǎn)都是平等的,幾個(gè)節(jié)點(diǎn)掛掉不會(huì)影響正常節(jié)點(diǎn)的工作,剩余的節(jié)點(diǎn)依然可以提供注冊(cè)和查詢服務(wù)。

而 Eureka 的客戶端在向某個(gè) Eureka 注冊(cè)或時(shí)如果發(fā)現(xiàn)連接失敗,則會(huì)自動(dòng)切換至其它節(jié)點(diǎn),只要有一臺(tái) Eureka 還在,就能保證注冊(cè)服務(wù)可用(即保證A原則),只不過(guò)查到的信息可能不是最新的(不保證C原則)。

正因?yàn)閼?yīng)用實(shí)例的注冊(cè)信息在集群的所有節(jié)點(diǎn)間并不是強(qiáng)一致的,所以需要客戶端能夠支持負(fù)載均衡以及失敗重試。在 Netflix 的生態(tài)中,ribbon 可以提供這個(gè)功能。

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

3. 結(jié)果

作為服務(wù)注冊(cè)中心,最重要的是要保證可用性,可以接收段時(shí)間內(nèi)數(shù)據(jù)不一致的情況。個(gè)人覺(jué)得 Eureka 作為單純的服務(wù)注冊(cè)中心來(lái)說(shuō)要比 zookeeper 更加適合一點(diǎn)。

到此,關(guān)于“eureka與zookeeper的原理是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI