NWR協議

NWR是一種在分佈式存儲系統中用於控制一致性級別的一種策略。在Amazon的Dynamo雲存儲系統中,就應用NWR來控制一致性。


讓我們先來看看這三個字母的含義:
N:在分佈式存儲系統中,有多少份備份數據
W:代表一次成功的更新操作要求至少有w份數據寫入成功
R: 代表一次成功的讀數據操作要求至少有R份數據成功讀取
NWR值的不同組合會產生不同的一致性效果,當W+R>N的時候,整個系統對於客戶端來講能保證強一致性。當W+R 以常見的N=3、W=2、R=2爲例:
N=3,表示,任何一個對象都必須有三個副本(Replica),W=2表示,對數據的修改操作(Write)只需要在3個Replica中的2個上面完成就返回,R=2表示,從三個對象中要讀取到2個數據對象,才能返回。
在分佈式系統中,數據的單點是不允許存在的。即線上正常存在的Replica數量是1的情況是非常危險的,因爲一旦這個Replica再次錯誤,就 可能發生數據的永久性錯誤。假如我們把N設置成爲2,那麼,只要有一個存儲節點發生損壞,就會有單點的存在。所以N必須大於2。N約高,系統的維護和整體 成本就越高。工業界通常把N設置爲3。
當W是2、R是2的時候,W+R>N,這種情況對於客戶端就是強一致性的。
NWR
在上圖中,如果R+W>N,則讀取操作和寫入操作成功的數據一定會有交集(如圖中的B),這樣就可以保證一定能夠讀取到最新版本的更新數據,數據的強一致性得到了保證。在滿足數據一致性協議的前提下,R或者W設置的越大,則系統延遲越大,因爲這取決於最慢的那份備份數據的響應時間。而如果R+W<=N,則無法保證數據的強一致性,因爲成功寫和成功讀集合可能不存在交集,這樣讀操作無法讀取到最新的更新數值,也就無法保證數據的強一致性。
在具體實現系統時,僅僅依靠NWR協議還不能完成一致性保證,因爲在上述過程中,當讀取到多個備份數據時,需要判斷哪些數據是最新的,如何判斷數據的新舊?這需要向量時鐘來配合,所以對於Dynamo來說,是通過NWR協議結合向量時鐘來共同完成一致性保證的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章