0

我通过了CAP。经过它之后,我的理解是 CAP 仅在复制的上下文中有意义(其中写入发生在一个节点上,即主节点,然后跨从节点复制)不适用于分片/水平扩展(其中数据基于某个键进行分区。所以不同的数据位于不同的节点上)。

理想情况下,数据在分片(主要是 NoSql DB)中将始终保持一致/可用,因为单个节点包含所需的数据,并且无需将相同的数据写入其他节点。因此,在 NoSql 中,不需要分区容忍,因为节点之间存在通信节点,除非需要复制。那么为什么 CAP 定理会出现在使用分片而不是复制的 NoSql DB 中。

对我来说,选择黑白 C 和 A 应该是有意义的,我们使用复制而不是分片,这主要发生在 SQL DB 中而不是 NOSql DB 中,但阅读谷歌上的文章主要是关于 CAP 方面的 NoSql DB

我知道我错过了 CAP 定理,但不确定它是什么?

4

1 回答 1

1

如果每个分片只有一个主节点(没有任何类型的复制),那么 CAP 定理确实不适用。但大多数实现都有一个主分片加上一个、两个或多个从属分片用于只读查询。并且对于集群中的每个分片重复此配置。然后,存在复制,因此 CAP 定理适用(并且PACELC定理适用)。复制可以用于扩展分片,但主要是为了可用性。如果主分片失败,另一个分片将担任主分片。

于 2020-09-16T22:11:30.777 回答