Cassandra在NetworkTopologyStrategy中读/写一致性等级

时间:2016-10-18 07:06:49

标签: cassandra datastax-enterprise datastax-startup

我在2个数据中心设置了cassandra,每个数据中心有4个节点,复制因子为2。

一致性级别为1(默认设置)

在尝试以一致性级别读取数据时,我遇到了一致性问题。 正如在DataStax文档中所读到的,一致性级别(读取+写入)应该大于复制因子。

我决定将写入一致性级别更改为TWO,并将一致性级别读为ONE,以解决单个数据中心中的不一致问题。 但是在多个数据中心的情况下,问题将通过一致性级别解决为LOCAL_QUORUM。

如何实现该写入应该是(LOCAL_QUORUM + TWO),以便我应该写入本地数据中心以及2个节点。

1 个答案:

答案 0 :(得分:1)

只需在您想要的数据中心中使用LOCAL_QUORUM进行编写即可。如果每个数据中心的复制因子为2,那么您在“本地”数据中心中写入的数据最终将在“其他”数据中心中复制(但您无法保证何时)。

LOCAL_QUORUM表示:“在写入操作返回后,数据已在本地数据中心的法定数量的节点上有效地写入”

TWO表示:“在写入操作返回后,数据已在任何数据中心的至少2个节点上写入”

如果您想在同一数据中心中阅读刚刚使用LOCAL_QUORUM编写的数据,则应使用LOCAL_ONE一致性。如果您使用ONE阅读,那么最接近的副本可能位于“远程”数据中心,因此Cassandra尚未复制。

这还取决于在驱动程序级别配置的负载平衡策略。您可以在此处详细了解:https://datastax.github.io/java-driver/manual/load_balancing/