當前位置:
首頁 > 科技 > 是時候把分散式存儲系統的理論指導從CAP轉到PACELC

是時候把分散式存儲系統的理論指導從CAP轉到PACELC

CAP理論是當前分散式存儲系統設計的理論指導,而PACELC理論是CAP理論的擴展,分散式存儲系統設計的理論依據是時候從CAP理論擴展為PACELC理論。

PACELC在wiki上的定義是

"It states that in case ofnetwork partitioning (P) in a distributed computer system, one has to choosebetween availability (A) and consistency (C) (as per the CAP theorem), but else(E), even when the system is running normally in the absence of partitions, onehas to choose between latency (L) and consistency (C)."

簡單來說這裡的意思就是:」如果有分區partition (P),系統就必須在availability 和consistency (A and C)之間取得平衡; 否則else (E) 當系統運行在無分區情況下,系統需要在 latency (L) 和 consistency (C)之間取得平衡」

是時候把分散式存儲系統的理論指導從CAP轉到PACELC

CAP理論認為以下三者不能同時滿足:

1)一致性(Consistency): 所有的節點在同一時刻數據是完全一樣的;

2)可用性(Availability): 節點失效不會影響系統的IO;

3)分區容忍性(Partition Tolerance): 系統能支持網路分區(網路連接故障),即使分區之間的消息丟失系統也正常工作;

根據業務場景的不同,不同的分散式存儲系統會根據自身業務的需求在CAP三者之中進行權衡, CAP理論的意義是在分散式存儲系統設計時需要權衡的因素,而非絕對的三者取其二,並且在CAP理論中沒有提到時延(Latency),而時延(Latency)卻是很重要的可用性(Availability)指標。

因為CAP沒有考慮到系統中的Latency因素,因此定義了一個新的模型PACELC,添加了Latency,如下圖:

當前分散式存儲系統設計指導理論應當用PACELC理論替代CAP理論,理由如下:

1)PACELC更能滿足實際操作中分散式存儲的工作場景是更好的工程實現策略;

2)當partition (P)存在的場景下,需要在availability 和consistency (A and C)之間獲得權衡,當時實際上分散式系統中絕大多數時間裡partition (P)是不存在的,那麼就需要在latency (L) 和 consistency (C)之間取得權衡;

3)availability在不存在partition (P)的場景下跟 latency關聯,在partition (P)時跟reliable指標關聯;

4)PACELC 可以在 latency vs consistency之間獲得平衡;

5)CAP 理論忽略了 一致性和時延之間的權衡。

PACELC建立在CAP之上,二者都描述了在一致性(Consistency),可用性(Availability)和分區容忍性(Partition Tolerance)之間的限制和權衡。而PACELC更進一步描述了即使在沒有Partition的場景下,也存在Latency和Consistency之間的權衡,從而為分散式系統的Consistency模型提供了一個更為完整的理論依據。

要保證系統的高可用(high availability)那麼就必須複製數據,而進行數據複製,就會出現在Consistency和Latency之間要求做個權衡。

舉個PACELC的應用場景栗子,如下圖:

是時候把分散式存儲系統的理論指導從CAP轉到PACELC

1、在強一致性複製場景下,需要三副本都下盤才能返回ok給client端,Master向Slave 複製數據,Latancy的限制是 20ms,有時候,slave 2 硬碟或網路出現故障,Master 往 Slave 複製數據的時延超過 20ms了,這個時候如果還一致等待 slave 2 返回結果再notify 給client就會出現性能和時延抖動,而且這種抖動是經常發生的長尾效應。

2、依據PACELC理論,我們可以在 consistency和Latency之間做個權衡,比如 slave2 節點的時延超過 20ms了,就不等待slave 2 返回,master 和 slave 1 返回結果給client即可,如果 slave 2 出現 超時的 次數超過 5次那麼就認為 這個節點可能出現故障,打個故障標籤,進行後續的處理。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 中國存儲 的精彩文章:

這些技術不知道,還混什麼存儲圈!
伺服器存儲癱瘓數據恢復成功案例-伺服器數據恢復

TAG:中國存儲 |