强一致性模式下的 Cassandra 可用性损失

Posted

技术标签:

【中文标题】强一致性模式下的 Cassandra 可用性损失【英文标题】:Cassandra availability penalty in strong consistency mode 【发布时间】:2016-09-24 20:55:55 【问题描述】:

当我得到 Cassandra 时,它具有所有一致性级别。它提供:“最高的一致性和最低的可用性”。如果这个级别提供强一致性?

它有什么可用性损失?我没有看到数据不可用的情况。任何人都可以举一个这样的例子。

【问题讨论】:

【参考方案1】:

如果您使用 ALL 的一致性级别,那么协调器必须接收来自所有节点的响应。这意味着:

写入成功后,没有人会读取之前的状态(高一致性)。 即使单个节点无法响应,整个读/写操作也会失败(可用性低)。

如需进一步阅读,请参阅CAP theorem。


谁能举个例子。

节点因维护而断开连接。 一个节点崩溃了。 服务器机房/数据中心断电。 节点由于高负载而无响应。 到节点的网络连接断开或变得太慢。 数据尚未传播到所有节点。

【讨论】:

这些例子暗示了这一点,但答案并没有直接出来,说 CL=ALL 是一个玩具和一个教学工具。没有人将它用于实际应用程序的生产中,这样做会很疯狂,因为即使单个节点变慢/变慢也会导致查询错误。将 LOCAL_QUORUM 用于读取和写入实际上可以为您提供相同数量的一致性,但具有合理的可用性权衡(>每个副本集中一半的副本需要响应)。

以上是关于强一致性模式下的 Cassandra 可用性损失的主要内容,如果未能解决你的问题,请参考以下文章

持续可用与CAP理论 - 一个数据库系统开发者的观点

zookeeper下的基本操作

BASE 理论

云图说|初识云数据库GaussDB(for Cassandra)

云图说|初识云数据库GaussDB(for Cassandra)

认识Cassandra