引言:在各種各樣的硬體裝置上運行著N多的worker,而任意一個worker都能夠獨立解決一個問題。每一個叢集有這樣的裝置成千上百個,而同時又有一打這樣的叢集互相串連互動,於是,這麼一個總的集合稱為“雲”,而其提供的服務稱為“雲端運算”。
在“雲中”的任一裝置或叢集都可以做到"進出自由"、任何崩潰的worker都能被檢測和重啟,那麼,基本上就可以稱為靠譜的雲端運算了。
對於理解雲端儲存和雲端運算,CAP,BASE,ACID以及最終一致性這些原理有著指導作用
CAP:(Consistency-Availability-Partition Tolerance一致性,可用性(在可寫的時候可讀, 可讀的時候可寫 ),分區容忍性),有研究證明對於資料系統來說,如果要滿足其中2個要素,就必須放寬其第三要素的要求,即三者不可兼得,但是對於分布式系統來說,分區容忍性是必須具備的要求,所以在分布式系統的設計中一致性和可用性是必須要捨棄一個的。
eg:
傳統資料庫一般採用CA即強一致性和高可用性
nosql,雲端儲存等一般採用降低一致性的代價來獲得另外2個因素
ACID:按照CAP分法ACID是許多CA型關聯式資料庫多採用的原則:
A:Atomicity原子性,事務作為最小單位,要麼不執行要麼完全執行
C:Consistency一致性,一個事務把一個對象從一個合法狀態轉到另一個合法狀態,如果交易失敗,把對象恢複到前一個合法狀態。即在事務開始之前和事務結束以後,資料庫的完整性條件約束沒有被破壞
I:Isolation獨立性(隔離性),事務的執行是互不干擾的,一個事務不可能看到其他事務運行時,中間某一時刻的資料。
D:Durability:事務完成以後,該事務所對資料庫所作的更改便持久的儲存在資料庫之中,並不會被復原。
BASE:一般是通過犧牲強一致性,來換取可用性和分布式
BA:Basically Aavilable基本可用:允許偶爾的失敗,只要保證絕大多數情況下系統可用
S:Soft State軟狀態:不要求任意時刻的資料都保持同步
E:Eventual Consistency最終一致性:要求資料在一定的時間內達到一致性
以雲端儲存為例:目前的雲端儲存多以整體上採用BASE局部採用ACID,由於使用分布式使用多備份所以多採用最終一致性