Eventual Consistency(最終一致性) - 分佈式數據庫相關理論 Part2

1. Eventual Consistency 概述

分佈式數據庫必需要有 分區容忍性(Partition Tolerant),因此主要是在 一致性(Consistent)可用性(Available) 之間作選擇。
雖然在 CAP 理論中,選擇了 Availability 就不可能獲得真正的 Consistency,可是你能夠追求 最終一致性(Evental Consistency)數據庫

evental Consistency 背後的思路是:每一個系統節點老是 Available 的,同時任何的寫(修改數據)操做都會在後臺同步給系統的其餘節點。
這意味着,在任意時刻,整個系統是Inconsistent(不一致的),然而從機率上講,大多數的請求獲得的值是準確的。服務器

互聯網的 DNS(域名服務) 就是最終一致性的一個很是好的例子。你註冊了一個域名,
這個新域名須要幾天的時間才能通知給全部的 DNS 服務器。可是無論何時,你可以鏈接到的任意 DNS 服務器對你來講都是 'Available' 的。分佈式

2. Eventual Consistency 小故事

讓咱們接着以前的小故事.code

假設你不是深山裏,是被抓到一個孤島上造方舟。事件

2015年7月3日——距離你被抓來造方舟已經將近3個月,你在孤島的海邊撿到了一個漂流瓶,裏面寫着:get

最新一期暴走大事件是第四季第2期

因此你知道:最新一期暴走大事件至少是第四季第2期同步

假設暴漫的粉絲喜歡玩漂流瓶——只要暴走大事件有更新,就會把最新一期的暴走大事件寫在紙上,而後經過漂流瓶扔向大海。
這樣,像你這樣的被 Partition 的人,老是能時不時地收到記錄着最新一期暴走大事件是什麼的漂流瓶。
換句話說,雖然每一時刻,關於「最新一期暴走大事件是什麼」你並不必定知道的是正確的答案,但你老是會 eventually(最終) 知道正確答案。域名

相關文章
相關標籤/搜索