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