Eureka對比Zookeeper,到底誰更優秀

2021-10-23 13:00:27 字數 1753 閱讀 2276

一. 作為服務註冊中心,eureka比zookeeper好在**

著名的cap理論指出,乙個分布式系統不可能同時滿足c(一致性)、a(可用性)和p(分割槽容錯性)。由於分割槽容錯性p在是分布式系統中必須要保證的,因此我們只能在a和c之間進行權衡。

因此zookeeper保證的是cp,

eureka則是ap。

二. 詳談cap理論

1.一致性

在分布式環境中,一致性是指資料在多個副本之間是否能夠保持一致的特性。在一致性的需求下,當乙個系統在資料一致的狀態下執行更新操作後,應該保證系統的資料任然處於一致的狀態。

對於乙個將資料副本分布在不同分布式節點上的系統來說,如果對第乙個節點的資料進行了更新操作並且更新成功後,卻沒有使得第二個節點的資料得到相應的更新,於是在對第二個節點的資料進行讀取操作時,獲取到的依然是老資料(或稱髒資料),這就是典型的分布式資料不一致情況。在分布式系統中,如果能夠做到針對乙個資料項的更新操作執行成功後,所有的使用者都可以讀取到其最新的值,那麼這樣的系統就被認為具有強一致性。

2.可用性

「有限的時間內」是指,對於使用者的乙個操作請求,系統必須能夠在指定的時間(即響應時間)內返回對應的處理結果,如果超過了這個時間範圍,那麼系統就被認為是不可用的。另外,「有限的時間內」是乙個在系統設計之初就設定好的系統執行指標,通常不同的系統之間回油很大的不同。

「返回結果」是可用性的另乙個非常重要的指標,它要求系統在完成對使用者請求的處理後,返回乙個正常對響應結果。正常的響應結果通常能夠明確地反映出對請求的處理結果,即成功或失敗,而不是乙個讓使用者感到困惑的返回接過。

3.分割槽容錯性

分割槽容錯性約束了乙個分布式系統需要具有如下特徵:分布式系統在遇到任何網路故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個環境都發生了故障。

三. zookeeper對比eureka

3.1zookeeper保證ap

​ 當向註冊中心查詢服務列表時,我們可以容忍註冊中心返回的是幾分鐘以前的註冊資訊,但不能接受服務直接down掉不可用。也就是說,服務註冊功能對可用性的要求要高於一致性。但是zk會出現這樣一種情況,當master節點因為網路故障與其他節點失去聯絡時,剩餘節點會重新進行leader選舉。問題在於,選舉leader的時間太長,30 ~ 120s, 且選舉期間整個zk集群都是不可用的,這就導致在選舉期間註冊服務癱瘓。在雲部署的環境下,因網路問題使得zk集群失去master節點是較大概率會發生的事,雖然服務能夠最終恢復,但是漫長的選舉時間導致的註冊長期不可用是不能容忍的。

3.2eureka保證cp

eureka看明白了這一點,因此在設計時就優先保證可用性。eureka各個節點都是平等的,幾個節點掛掉不會影響正常節點的工作,剩餘的節點依然可以提供註冊和查詢服務。而eureka的客戶端在向某個eureka註冊或時如果發現連線失敗,則會自動切換至其它節點,只要有一台eureka還在,就能保證註冊服務可用(保證可用性),只不過查到的資訊可能不是最新的(不保證強一致性)。除此之外,eureka還有一種自我保護機制,如果在15分鐘內超過85%的節點都沒有正常的心跳,那麼eureka就認為客戶端與註冊中心出現了網路故障,此時會出現以下幾種情況:

eureka不再從註冊列表中移除因為長時間沒收到心跳而應該過期的服務

eureka仍然能夠接受新服務的註冊和查詢請求,但是不會被同步到其它節點上(即保證當前節點依然可用)

當網路穩定時,當前例項新的註冊資訊會被同步到其它節點中

因此, eureka可以很好的應對因網路故障導致部分節點失去聯絡的情況,而不會像zookeeper那樣使整個註冊服務癱瘓。

Zookeep簡單記錄下

一 概念 zookeeper 作為乙個分布式的服務框架,主要用來解決分布式集群中應用系統的一致性問題,它能提供基於類似於檔案系統的目錄節點樹方式的資料儲存,zookeeper 作用主要是用來維護和監控儲存的資料的狀態變化,通過監控這些資料狀態的變化,從而達到基於資料的集群管理。zookeeper集群...

linux的shell程式設計 zookeeper

zookeeper linux當中的shell是一門指令碼語言,所見即所得 shell程式設計一般指代shell指令碼的開發,不是指代shell核心的開發shell指令碼第一行約定俗稱 bin bash shell指令碼執行的兩種方式 第一種方式 sh hello.sh 或者 bash hello....

HADOOP學習筆記總結三 zookeeper

在學習hbase時,官方文件說hbase依賴於zookeeper來管理與跟蹤其分布式資料的狀態,hregionserver與hmaster都需要向它註冊。那什麼是zookeeper呢?今天學習一下 1 zookeeper是什麼 zookeeper是一種分布式協調服務,用於管理大型主機。在分布式環境中...