了解Local_Quorum

Lea*_*ner 1 cassandra

我们有一个3 DC(美国,欧盟,亚洲),每个都有3个节点,所以共有9个节点.我们正在进行实验,所以如果需要我们可以增加.

我们计划使用每DC 2的RF.在这种情况下,我们的法定人数达到2.

local_quorum我假设使用R/W一致性,我们可以容忍每个DC 1个节点的故障.只有当数据中心的第二个节点出现故障时,我们才会遇到麻烦.

但是这个计算器另有说明.在这里,如果我们选择3的簇大小和RF:2,WL/RL作为仲裁 - 它说我们可以在没有节点丢失的情况下存活.我遗漏了与仲裁规模和总数有关的事情.集群中的机器数量?

Aar*_*ron 5

但是这个计算器另有说明.在这里,如果我们选择3的簇大小和RF:2,WL/RL作为法定数量 - 它说我们可以在没有节点丢失的情况下存活.我遗漏了与法定人数和总数相关的东西.集群中的机器数量?

那个计算器是正确的.

假设您使用"A"键将数据写入群集.3个DC中的3个节点和2的RF,您的写入将如下所示:

US          EU           ASIA
node1- A    node1- A     node1- A
node2- A    node2- A     node2- A
node3-      node3-       node3-
Run Code Online (Sandbox Code Playgroud)

我们可以容忍每个DC 1个节点的故障

由于高可用性是您要解决的问题,让我问一个问题:

如何在节点发生故障时保证它始终是node3?

有时它会.但有时您可能会丢失node1或node2,其中包含数据"A"的副本.当发生这种情况,并且您在LOCAL_QUORUM查询时,它将在DC中查找两个副本.如果一个节点关闭,并且该节点恰好包含"A"的副本,则查询将失败.

所以这里有两点.MarcintheCloud是对的,如果可用性确实是您的关注点,那么您应该将RF增加到3.

第二,你应该问自己是否真的需要在LOCAL_QUORUM查询.Netflix在2013 Cassandra峰会上做了一个演讲,讨论了他们如何尝试"最终的一致性"和LOCAL_ONE.这是相当不错.它会让你仔细思考你真正需要使用QUORUM一致性的严重程度.

Netflix实验:最终的一致性!=希望的一致性