弱一致性、CAP、BASE與NoSQL

       弱一致性就是不完全一致或者完全不一致。自然界沒有兩片完全一樣的葉子,分佈式系統本就是明知不可爲而爲之,CAP理論其實是證明了分佈式系統先天不足。

       如同人類發明了不合理的克隆技術,邏輯世界通過複製技術可以得到兩份完全一致的數據,但是複製是需要時間的,類似《機器貓》裏的時空穿梭門,一致性理論有一個 “一致性窗口” 的概念(即:時間窗口)。不過穿梭門是可以穿越到過去的,而一致性窗口只能穿越到未來,方法很簡單,就是“等會兒”。

      最終一致性就是等會兒就一致了,早晚會一致的。使用最終一致性的關鍵就是想方設法讓用戶“等會兒”。辦法是讓用戶知道(對用戶透明),這個方法有個學名叫“用戶感知到的一致性”,意思就是讓用戶自己知道數據已經不一致了,你再忍會兒。

        好像是缺什麼就想補什麼,一些原本就不可靠的分佈式系統就總想證明自己的可靠性,發現CAP理論以後如獲至寶,原來我們是符合“不可靠理論”的,分佈式系統本來就不可靠。所以系統你就認了吧(之前是忍了吧)。

       雖然我們NoSQL不符合ACID原則,但是我們符合“NO ACID原則”啊。我們換個詞,就叫“BASE原則(基本可用性、軟狀態與最終一致性)”。BASE的含義就是指“NoSQL數據庫設計可以通過犧牲一定的數據一致性和容錯性來換取高性能的保持甚至提高”。

       其實所有的分佈式系統都是犧牲C(一致性 Consistency )來換取P(分區容錯性 Partition Tolerance ),而不是犧牲A(可用性 Availability )。可用性是所有分佈式系統共同追求的特性。

       本文摘自PPT《開源數據庫中間件MYCAT產品介紹與企業實戰-20160115-王金劍-火龍果講堂》歡迎下載!


發佈了153 篇原創文章 · 獲贊 104 · 訪問量 129萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章