新聞中心
是時候把分布式存儲系統(tǒng)的理論指導從CAP轉到PACELC
作者:常平 2018-06-08 09:10:49
存儲
存儲軟件
分布式 CAP理論是當前分布式存儲系統(tǒng)設計的理論指導,而PACELC理論是CAP理論的擴展,分布式存儲系統(tǒng)設計的理論依據(jù)是時候從CAP理論擴展為PACELC理論。

CAP理論是當前分布式存儲系統(tǒng)設計的理論指導,而PACELC理論是CAP理論的擴展,分布式存儲系統(tǒng)設計的理論依據(jù)是時候從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)."
簡單來說這里的意思就是:”如果有分區(qū)partition (P),系統(tǒng)就必須在availability 和consistency (A and C)之間取得平衡; 否則else (E) 當系統(tǒng)運行在無分區(qū)情況下,系統(tǒng)需要在 latency (L) 和 consistency (C)之間取得平衡”
CAP理論認為以下三者不能同時滿足:
1)一致性(Consistency): 所有的節(jié)點在同一時刻數(shù)據(jù)是完全一樣的;
2)可用性(Availability): 節(jié)點失效不會影響系統(tǒng)的IO;
3)分區(qū)容忍性(Partition Tolerance): 系統(tǒng)能支持網(wǎng)絡分區(qū)(網(wǎng)絡連接故障),即使分區(qū)之間的消息丟失系統(tǒng)也正常工作;
根據(jù)業(yè)務場景的不同,不同的分布式存儲系統(tǒng)會根據(jù)自身業(yè)務的需求在CAP三者之中進行權衡, CAP理論的意義是在分布式存儲系統(tǒng)設計時需要權衡的因素,而非絕對的三者取其二,并且在CAP理論中沒有提到時延(Latency),而時延(Latency)卻是很重要的可用性(Availability)指標。
因為CAP沒有考慮到系統(tǒng)中的Latency因素,因此定義了一個新的模型PACELC,添加了Latency,如下圖:
當前分布式存儲系統(tǒng)設計指導理論應當用PACELC理論替代CAP理論,理由如下:
1)PACELC更能滿足實際操作中分布式存儲的工作場景是更好的工程實現(xiàn)策略;
2)當partition (P)存在的場景下,需要在availability 和consistency (A and C)之間獲得權衡,當時實際上分布式系統(tǒng)中絕大多數(shù)時間里partition (P)是不存在的,那么就需要在latency (L) 和 consistency (C)之間取得權衡;
3)availability在不存在partition (P)的場景下跟 latency關聯(lián),在partition (P)時跟reliable指標關聯(lián);
4)PACELC 可以在 latency vs consistency之間獲得平衡;
5)CAP 理論忽略了 一致性和時延之間的權衡。
PACELC建立在CAP之上,二者都描述了在一致性(Consistency),可用性(Availability)和分區(qū)容忍性(Partition Tolerance)之間的限制和權衡。而PACELC更進一步描述了即使在沒有Partition的場景下,也存在Latency和Consistency之間的權衡,從而為分布式系統(tǒng)的Consistency模型提供了一個更為完整的理論依據(jù)。
要保證系統(tǒng)的高可用(high availability)那么就必須復制數(shù)據(jù),而進行數(shù)據(jù)復制,就會出現(xiàn)在Consistency和Latency之間要求做個權衡。
舉個PACELC的應用場景栗子,如下圖:
1、在強一致性復制場景下,需要三副本都下盤才能返回ok給client端,Master向Slave 復制數(shù)據(jù),Latancy的限制是 20ms,有時候,slave 2 硬盤或網(wǎng)絡出現(xiàn)故障,Master 往 Slave 復制數(shù)據(jù)的時延超過 20ms了,這個時候如果還一致等待 slave 2 返回結果再notify 給client就會出現(xiàn)性能和時延抖動,而且這種抖動是經常發(fā)生的長尾效應。
2、依據(jù)PACELC理論,我們可以在 consistency和Latency之間做個權衡,比如 slave2 節(jié)點的時延超過 20ms了,就不等待slave 2 返回,master 和 slave 1 返回結果給client即可,如果 slave 2 出現(xiàn) 超時的 次數(shù)超過 5次那么就認為 這個節(jié)點可能出現(xiàn)故障,打個故障標簽,進行后續(xù)的處理。
分享文章:是時候把分布式存儲系統(tǒng)的理論指導從CAP轉到PACELC
本文地址:http://www.5511xx.com/article/coijghc.html


咨詢
建站咨詢
