我在两个数据中心安装了cassandra,每个节点有4个节点,复制因子为2。
一致性级别为1(默认设置)
当我试图在一致性级别读取数据时,我遇到了一致性问题。在DataStax文档中,一致性级别(读+写)应该大于复制因子。
我决定将写入一致性级别改为2,读取一致性级别改为1,从而解决了单个数据中心的不一致性问题。但是,在多个数据中心的情况下,问题可以通过一致性级别(如LOCAL_QUORUM )来解决。
我如何实现写应该是(LOCAL_QUORUM +2),以便我应该写到本地数据中心,也是在2个节点上。
发布于 2016-10-18 09:08:58
只需在您想要的数据中心使用LOCAL_QUORUM
编写即可。如果每个数据中心的复制因子为2,那么您在“本地”数据中心中写入的数据最终将在“其他”数据中心中复制(但您无法保证什么时候)。
LOCAL_QUORUM
的意思是:“在写操作返回后,数据已经有效地写入到本地数据中心的节点的仲裁中”。
TWO
的意思是:“在写操作返回后,数据已被写入到任何数据中心中的至少2个节点上”。
如果您想在同一个数据中心中读取刚才用LOCAL_QUORUM
编写的数据,则应该使用LOCAL_ONE
一致性。如果您使用ONE
阅读,那么最近的副本可能在“远程”数据中心中,因此还没有被Cassandra复制。
这还取决于在驱动程序级别配置的负载平衡策略。您可以在这里阅读更多关于这一点的信息:balancing/
https://stackoverflow.com/questions/40101706
复制相似问题