1

当说系统是 CP(一致和分区)时,这是否意味着我们不能在复制的数据节点之间使用异步同步,并且每次写入都必须同步(甚至事务)复制?

据我了解,一致性意味着对于每次写入,后续读取(来自任何节点)都将获得最新更新。如果我们写入特定节点并异步同步其他节点,则在同步结束之前将发生的读取可能无法获得最新的写入。

4

1 回答 1

1

当说系统是 CP(一致和分区)时,这是否意味着我们不能在复制的数据节点之间使用异步同步

CP是的,在异步复制的基础上构建系统是不可能的。

我也不同意 inCP P代表“分区”,因为分区与数据库可伸缩性问题有关。我认为这CP应该被视为“在网络分区的情况下保持一致”。

并且每次写入都必须同步复制?

没错,但有一个优化:同步复制数据不是到所有节点,而是到大多数节点,并异步复制到其余节点。

(甚至是事务性的)

我认为这取决于数据库的类型(它是否支持事务)以及如何定义事务术语本身(例如,ACID 兼容与否)。从我的角度来看,它实际上与 CAP 定理的要点无关。

一致性意味着对于每次写入,后续读取(来自任何节点)都将获得最新更新。

一般情况下是的,但是还有更多的一致性模型,请参考https://jepsen.io/consistency

如果我们写入特定节点并异步同步其他节点,则在同步结束之前将发生的读取可能无法获得最新的写入。

真的。

于 2019-04-14T17:55:55.977 回答