從CAP到zookeeper和eureka對比

2022-04-25 00:46:31 字數 1087 閱讀 3667

今天看了一篇eureka對比zookeeper的文章,對zookeeper滿足cap中的cp,eureka滿足ap產生了一點疑問,故寫此篇文章進行一些**。

首先我們來看看cap的定義

中文叫做"一致性"。意思是,寫操作之後的讀操作,必須返回該值。舉例來說,某條記錄是 v0,使用者向 g1 發起乙個寫操作,將其改為 v1,接下來,使用者的讀操作就會得到 v1。這就叫一致性。

中文叫做"可用性",意思是只要收到使用者的請求,伺服器就必須給出回應。使用者可以選擇向 g1 或 g2 發起讀操作。不管是哪台伺服器,只要收到請求,就必須告訴使用者,到底是 v0 還是 v1,否則就不滿足可用性。

中文叫做"分割槽容錯",大多數分布式系統都分布在多個子網路。每個子網路就叫做乙個區(partition)。分割槽容錯的意思是,區間通訊可能失敗。比如,一台伺服器放在中國,另一台伺服器放在美國,這就是兩個區,它們之間可能無法通訊。

即在乙個分布式系統中,只能滿足其中的兩個,且在一般情況下,都是要滿足分割槽容錯性的。

eureka既然說滿足ap特性,是否說明eureka是乙個不滿足一致性的註冊中心呢,這樣一來作為乙個註冊中心中介軟體肯定是無法接受的,所以我們來細究下。

eureka各個節點都是平等的,幾個節點掛掉不會影響正常節點的工作,剩餘的節點依然可以提供註冊和查詢服務。而eureka的客戶端在向某個eureka註冊或時如果發現連線失敗,則會自動切換至其它節點,只要有一台eureka還在,就能保證註冊服務可用(保證可用性),只不過查到的資訊可能不是最新的(不保證強一致性),其中說明了,eureka是不滿足強一致性,但還是會保證最終一致性,所以可以得出乙個結論,eureka不是不滿足一致性,只是在同等情況下,eureka會首先保證可用性,在一定程度內再去進行一致性的同步。

同樣我們來看zookeeper,zookeeper在選舉leader時,會停止服務,直到選舉成功之後才會再次對外提供服務,這個時候就說明了服務不可用,但是在選舉成功之後,因為一主多從的結構,zookeeper在這時還是乙個高可用註冊中心,只是在優先保證一致性的前提下,zookeeper才會顧及到可用性。

所以這裡從zk的cp和eureka的ap**得出乙個結果,cap其實在分布式系統中,是優先保證滿足其中兩個特性,而不是傳統意義上的單純只滿足其中兩個特性而捨棄另乙個特性。

從paxos到zookeeper讀書筆記(第四章)

netty集群簡單的集群方案 zk用來實現服務發現的功能,通過高效能的netty網路框架作為伺服器,註冊到zk中,client請求到zk中選取可用的netty伺服器,選取策略有 輪詢 雜湊 ip分組 加權分組 均衡負載和服務發現的功能 netty伺服器關閉時主動到zk登出。zab演算法 zookee...

從paxos到zookeeper讀書筆記(第六章)

zookeeper的典型應用場景 zookeeper應用場景主要包括 發布 訂閱 負載均衡 命名服務 分布式協調 通知 註冊功能 集群管理 master選舉 分布式鎖 分布式訊息佇列。zk實現資料發布 訂閱服務 發布 訂閱通常有兩種模式 push poll的方式為客戶端提供服務。主要應用於分布式中,...

CAP原理分析 4 ACID和CAP的詳盡比較

事務機制acid和cap理論是資料管理和分布式系統中兩個重要的概念,很不巧,這兩個概念中都有相同的 c 代表 consistency 一致性,但是實際上是完全不同的意義,下面是比較兩個概念的不同之處。事務的定義和實現一直隨著資料管理的發展在演進,當計算機越來越強大,它們就能夠被用來管理越來越多資料,...