根据Cap定理的CA分布式系统如何存在

时间:2017-11-28 19:14:00

标签: cap-theorem

分布式系统如何保持一致和可用 - CA.因为当分区发生时,CA是不可能的。如果我们说分区不会发生那么只有它们是CA,那么所有CP或AP的系统也将是CA以防分区不会发生?

2 个答案:

答案 0 :(得分:3)

有点迟到了,抱歉:

它不能。

正如经常提到的那样,原始形式的CAP定理有点误导。它可以重述为

  

在存在网络分区的情况下,分布式系统可用或一致

所以你是对的。通常,系统不能仅归类为CA,CP或AP,因为分区容差是系统的属性,它描述了在网络分区的情况下要选择的内容。因此,系统有时可能会根据AP运行,而其他时间可能会运行CP(但这并不常见)。

另一个有趣的部分是RDBMS数据库通常位于三角形的CA侧。这只是单节点设置中的情况。即使使用主(写) - 从(读)设置,系统也不是CA(或者如果它是CA,则可能发生拆分分支方案,为分区选择新的主设备等等。) / p>

有用的阅读:https://codahale.com/you-cant-sacrifice-partition-tolerance/

答案 1 :(得分:0)

  

博士Stonebraker说:CAP定理的指导是您   存在网络分区时,必须选择A或C。照原样   在现实世界中很明显,可以同时实现C和A   这种失败模式。

请参阅this,以了解为什么CA可以存在:

  

CA是操作范围的规范:您指定   系统在分区下无法正常运行,或者更确切地说,   分区不在系统的运行范围内。

我的背景远非这些理论考虑,我必须说这非常令人困惑。我正在研究分布式区块链系统,但我不明白为什么C,A,P的“一般”定义必须始终适用。如果假设有5%的节点发生故障或以其他方式进行了分区,则共识仍然有效。如果最终用户已连接到分区节点,则该节点可以让用户知道其失去了连接。如果没有定义诸如“如果一定数量的节点发生故障或被分区,共识就会停止”之类的条件,我什至看不到任何主要的区块链网络是CP。