昨天講到執行時序的問題。當需要解決資料時序的問題時,表示已經放棄強一致性 (Strong Consistency)了,轉而只追求最終一致性 (Eventually Consistency)
最終一致性是說,只要資料不再更新,終有個時刻,所有節點會協調出一個一致的狀態。這聽起來相當的不可靠啊XD
這的確是很不可靠。之前提到的執行順序的問題,許多系統是利用Vector clock,透過訊息傳遞來歸納出執行的時序。但由於Vector clock需要透過訊息交換logical timestamp,才能整理出時序。所以如果有節點很孤僻不常跟其他人講話,那推敲出來的時序就不精準。實際上,Vector clock不保證能推測出完整時序(total order),只能推測出部分時序(partial order),也就是可能只能推敲出類似這樣的結果:A < D, B < D, C < D,那你說A, B, C的順序呢?很抱歉,因為只有部分時序,所以不知道。
所以真的是很不可靠啊,那為什麼還要用這種不可靠的東西呢?還是取捨的問題,因為想捨棄Strong Consistency來換其他的特性。
下次就來講CAP Theorem囉,CAP只能最多三選二~