揭祕分佈式CAP理論——爲什麼不能同時滿足三個?

CAP理論定義:
     CAP定理又稱CAP原則,指的是在一個分佈式系統中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區容錯性),最多隻能同時三個特性中的兩個,三者不可兼得。

解析三原則

1、一致性原則(Consistency)
     “all nodes see the same data at the same time”,即在多節點情況下,各個節點的數據同時更新保持同步,這個就是分佈式一致性。

2、可用性原則(Availability)
     “Reads and writes always succeed”,指的是所有的服務都可以在規定的時間內正常訪問,而且是一直可用。這裏可以參考euraka的失效剔除功能,保證了服務可用性。

3、分區容錯性(Partition tolerance)
     分佈式系統在遇到某節點或網絡分區故障的時候,仍然能夠對外提供滿足一致性或可用性的服務。

上面可以理解爲:

  1. 一致性:數據同步
  2. 可用性:服務保活
  3. 容錯性:集羣部署

爲什麼CAP原則?

解析:

  1. 如果CA滿足看P是否能滿足?
  2. 如果AP滿足看C是否能滿足?
  3. 如果CP滿足看A是否能滿足?

1、如果CA滿足看P是否能滿足?
我們來分析:當C(Consistency)一致性A(Availability)可用性都滿足時會發生什麼?爲了保持數據的一致性,數據在各個節點間同步需要花費時間,同時保證服務可用意味着服務器的數量不能過多,因爲過多就會導致數據同步時間過長,而導致超時觸發熔斷降級機制,這與可用性相悖。但是如果要滿足容錯的話就必須是多節點,而多節點意味着同步數據同步時間必定過長,這兩無法做到同時滿足所以就導致了情況1是無法滿足。

2、如果AP滿足看C能否滿足?
我們來分析:當A(Availability)可用性和P(Partition tolerance)分區容錯性都滿足的情況下會發生什麼?服務器多節點部署,導致服務器數量劇增,同時需要保證服務節點可用,這就說明服務節點與節點之間的調用時間無法過長,否則就會導致服務節點不可用。如果在這種情況下,滿足C(Consistency)一致性,就會出現服務器因同步數據而導致浪費大量的時間,導致服務器不可用(超過了規定時間範圍),所以當AP滿足時是無法同時滿足C的。

3、如果CP滿足看A是否能滿足?
我們來分析:當C(Consistency)一致性和P(Partition tolerance)分區容錯性都滿足時,這個時候的服務器情況是怎麼樣的?必定是數量多並且爲了保證數據同步大量的服務器節點會進入“超長待機”狀態,此時如果再讓服務滿足A(可用性)的話,就會出現大部分的服務節點不可用,線程池被擠爆,然後整個項目宕機。所以情況3是無法滿足的。

如何抉擇/取捨?
一般來講P(容錯性)是一定要滿足的,其他可以根據項目需求選擇A或者C。
就目前市場來說,CP更加符合金融類項目,AP更加適合商城類項目。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章