EACH_QUORUM 只有一个 Cassandra 数据中心的语义
Semantics of EACH_QUORUM with only one Cassandra data-centre
documentation for Cassandra consistency levels 谈到 EACH_QUORUM
一致性级别:
A write must be written to the commit log and memtable on a quorum of replica nodes in all data centers. Used in multiple data center clusters...
只有一个数据中心时EACH_QUORUM
一致性级别的语义是什么?我可以想到两种可能性:
- 术语 "all" 包括只有一个的情况,因此
EACH_QUORUM
要求在唯一数据中心的法定节点上写入。
- 一致性级别仅在您有多个数据中心时使用("Used in multiple data center clusters"措辞是限制性的,不是描述性的),当您只有一个数据中心。在这种情况下,请改用
QUORUM
。
经过一些实验,使用 Cassandra 2.1.5 和 Datastax Java 驱动程序 2.1.5,我发现 实现了 (如果不是 intended 语义)是 EACH_QUORUM
一致性级别仅在您拥有多个数据中心时才有效。当只有一个数据中心时,Java 驱动程序失败 EACH_QUORUM
写入,抛出一个 UnavailableException
抱怨有 0 个节点可用。使用 QUORUM
写入工作正常。
因此,如果您只有一个数据中心,请不要使用EACH_QUORUM
一致性级别。请改用 QUORUM
。
documentation for Cassandra consistency levels 谈到 EACH_QUORUM
一致性级别:
A write must be written to the commit log and memtable on a quorum of replica nodes in all data centers. Used in multiple data center clusters...
只有一个数据中心时EACH_QUORUM
一致性级别的语义是什么?我可以想到两种可能性:
- 术语 "all" 包括只有一个的情况,因此
EACH_QUORUM
要求在唯一数据中心的法定节点上写入。 - 一致性级别仅在您有多个数据中心时使用("Used in multiple data center clusters"措辞是限制性的,不是描述性的),当您只有一个数据中心。在这种情况下,请改用
QUORUM
。
经过一些实验,使用 Cassandra 2.1.5 和 Datastax Java 驱动程序 2.1.5,我发现 实现了 (如果不是 intended 语义)是 EACH_QUORUM
一致性级别仅在您拥有多个数据中心时才有效。当只有一个数据中心时,Java 驱动程序失败 EACH_QUORUM
写入,抛出一个 UnavailableException
抱怨有 0 个节点可用。使用 QUORUM
写入工作正常。
因此,如果您只有一个数据中心,请不要使用EACH_QUORUM
一致性级别。请改用 QUORUM
。