CAP理論
在分布式領域,有一個非常重要的理論叫做CAP理論。
-
C:Consistency(一致性)
-
A:Availability(可用性)
-
P:Partition tolerance(分區容錯性)
在分布式領域中,是必須要保證分區容錯性的,也就是必須要保證“P”,所以,我們只能保證CP或者AP。
這里,我們可以使用Redis和Zookeeper來進行簡單的對比,我們可以使用Redis實現AP架構的分布式鎖,使用Zookeeper實現CP架構的分布式鎖。
- 基於Redis的AP架構的分布式鎖模型

在基於Redis實現的AP架構的分布式鎖模型中,向Redis節點1寫入數據后,會立即返回結果,之后在Redis中會以異步的方式來同步數據。
- 基於Zookeeper的CP架構的分布式鎖模型

在基於Zookeeper實現的CP架構的分布式模型中,向節點1寫入數據后,會等待數據的同步結果,當數據在大多數Zookeeper節點間同步成功后,才會返回結果數據。
當我們使用基於Redis的AP架構實現分布式鎖時,需要注意一個問題,這個問題可以使用下圖來表示。

也就是Redis主從節點之間的數據同步失敗,假設線程向Master節點寫入了數據,而Redis中Master節點向Slave節點同步數據失敗了。
此時,另一個線程讀取的Slave節點中的數據,發現沒有添加分布式鎖,此時就會出現問題了!!!
所以,在設計分布式鎖方案時,也需要注意Redis節點之間的數據同步問題。
