- 在分布式系統中,有一個基本原則叫做CAP,consistence,一致性,availability,可用性,partition tolerance分區容錯性。
- 一致性,在這里指的是分布式系統的各個副本的值要保持同步,這里強的是空間上的一致,注意和數據庫中ACID中的一致性相區分,那個一致性指的是事務執行前后的邏輯一致性,比如你轉1000塊給別人,不能你的賬戶少了1000塊,對方的賬戶卻沒有多1000塊。
- 可用性,指的是當client發出數據讀寫請求時,要在足夠短的時間內做出響應。
- 分區容錯性指的是,在不穩定和不可靠的網絡環境下,節點可能出現失聯或者盪機,網絡可能出現分區子網,在這種情況下仍然能保證數據不出錯。
- 所以,分區容錯性是我們必須最終要保證的,但是一致性和可用性是一對矛盾的東西。所以在三者中,我們只能取兩個。
- 為啥一致性和可用性是一對矛盾的東西呢?因為要實現一致性,在本質上都是進行副本之間的同步,而這個是需要花時間的,如果要保證強一致性,那么在同步的這一段時間中,是不可用的。