更新時(shí)間:2022年07月13日15時(shí)55分 來源:傳智教育 瀏覽次數(shù):
Zookeeper保證了CP(C:一致性,P:分區(qū)容錯(cuò)性),Eureka保證了AP(A:高可用,P:分區(qū) 容錯(cuò))
1、Zookeeper—–當(dāng)向注冊(cè)中心查詢服務(wù)列表時(shí),我們可以容忍注冊(cè)中心返回的是幾分鐘以前的信息,但不能容忍直接down掉不可用的。也就是說服務(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ì)重新選leader。問題在于,選取leader的時(shí)間過長(zhǎng)(30~120s),且選取期間zk集群 都不可用,這樣就會(huì)導(dǎo)致選取期間注冊(cè)服務(wù)癱瘓。在云部署的環(huán)境下,因網(wǎng)絡(luò)問題使得zk集群 失去master節(jié)點(diǎn)是較大概率會(huì)發(fā)生的事,雖然服務(wù)最終恢復(fù),但是漫長(zhǎng)的選擇時(shí)間導(dǎo)致的注冊(cè) 長(zhǎng)期不可用是不能容忍的
2、Eureka則看明白這一點(diǎn),因此再設(shè)計(jì)的優(yōu)先保證了高可用性。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ù)的可用(保證可用性),只不過查到的信息可能不是最新 的(不保證一致性)。除此之外Eureka還有一種自我保護(hù)機(jī)制,如果在15分鐘內(nèi)超過85%的節(jié) 點(diǎn)都沒有正常心跳,那么Eureka就認(rèn)為客戶端與注冊(cè)中心出現(xiàn)了網(wǎng)絡(luò)故障,此時(shí)就會(huì)出現(xiàn)以下 幾種情況:
1)Eureka不再?gòu)淖?cè)列表移除因?yàn)殚L(zhǎng)時(shí)間沒收到心跳而應(yīng)該過期的服務(wù)
2)Eureka仍然能夠接受新服務(wù)的注冊(cè)和查詢請(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還有客戶端緩存功能(Eureka分為客戶端程序和服務(wù)器端程序兩個(gè)部分,客戶端程序負(fù) 責(zé)向外提供注冊(cè)與發(fā)現(xiàn)服務(wù)接口)。所以即便Eureka集群中所有節(jié)點(diǎn)都失效,或者發(fā)生網(wǎng)絡(luò)分 隔故障導(dǎo)致客戶端不能訪問任何一臺(tái)Eureka服務(wù)器;Eureka服務(wù)的消費(fèi)者任然可以通過 Eureka客戶端緩存來獲取所有的服務(wù)注冊(cè)信息。甚至最極端的環(huán)境下,所有正常的Eureka節(jié) 點(diǎn)都不對(duì)請(qǐng)求產(chǎn)生響應(yīng)也沒有更好的服務(wù)器解決方案來解決這種問題時(shí);得益于Eureka的客戶 端緩存技術(shù),消費(fèi)者服務(wù)仍然可以通過Eureka客戶端查詢與獲取注冊(cè)服務(wù)信息,這點(diǎn)很重要, 因此Eureka可以很好的應(yīng)對(duì)網(wǎng)絡(luò)故障導(dǎo)致部分節(jié)點(diǎn)失去聯(lián)系的情況,而不像Zookeeper那樣 使整個(gè)注冊(cè)服務(wù)癱瘓。
猜你喜歡:Zookeeper數(shù)據(jù)發(fā)布與訂閱主要應(yīng)用場(chǎng)景有哪些?
ZooKeeper在集群Master選舉中應(yīng)用介紹
Spring eureka原理介紹【微服務(wù)架構(gòu)基礎(chǔ)】
北京校區(qū)