具有一致性级别和复制因子的cassandra如何处理cap定理?

2w3rbyxf  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(429)

根据cap定理的定义,任何分布式系统只能满足2个条件。传统上,cassandra是ap系统。如果我们使用像local\u quorum这样的一致性级别,它也可以确保强一致性。
假设我们总是要保持分区容限,如果我们使用本地仲裁和复制因子,我们可以确保很强的一致性和可用性。这违背了cap定理还是我遗漏了什么?
ps:为了简单起见,我们只有一个数据中心。

sshcrbum

sshcrbum1#

不,不幸的是,你不能用Cassandra来欺骗cap定理。不过,cassandra允许您根据需要调整一致性。 LOCAL_QUORUM 意味着对于读写操作,客户端将等待大多数(例如三个节点中的两个)节点确认操作,然后返回。如果客户使用 LOCAL_QUORUM 对于读写操作,它将一致性置于可用性之上。这并不意味着它需要所有的节点在任何时候都处于运行状态,但大多数节点必须处于运行状态。在这种情况下,如果集群已分区,则看到少数分区的客户端将无法继续。
客户机还可以通过在一致性级别写入来确定一致性的优先级 ALL 阅读 ONE 反之亦然- 但在这种情况下,所有节点都必须启动。
如果客户端使用读写不一定重叠的一致性级别组合,例如 ONE 对于读写操作,它优先考虑可用性。使用分区集群,客户机可以继续读写,只要它可以与任何节点通信。
客户机还可以混合不保证一致性的一致性级别,但不太容易受到一致性错误的影响,例如使用 LOCAL_QUORUM 对于写入和 ONE 为了阅读。当您希望确保写入不会丢失时,这种组合非常有用,但读取立即更新并不重要。

相关问题