我有2个问题。
1-我需要2个节点集群。我必须写&读取1个节点是否消失
我想我需要=复制因子:2一致性:1
但它肯定不应该是任何数据的丢失。
2-我需要3个节点集群,节点可能会随着时间的推移而增加。我应该可以使用此设置添加更多节点 我想我需要=复制因子:3一致性:2
问题是:我对这种配置是否正确?
谢谢你的回答。
答案 0 :(得分:3)
<强> tldr;使用3节点群集,写入/读取仲裁。
请注意:Write Consistency + Read Consistency > Replication factor
以确保您的数据一致。
您也可以同时使用3节点群集。或者,在您的第一个设置中(2个节点)与1个节点&#39;群集相同。因为您要么写入ALL,要么您的阅读不会保持一致。
对于RF 2中的设置1,您需要:
Write(2) + Read(1)
如果某个节点出现故障,您将无法再写入群集。Read(2) + write(1)
如果某个节点出现故障,您将无法再从群集中读取数据,并且您已丢失数据。Write(2) + Read(2)
与3节点集群相同。为什么2?这两者都不是理想的,并且2节点集群在1节点集群上的唯一优势就是#c>如果你要写信给所有人,至少你不会在节点死亡时丢失数据。
理想情况下,您可以使用法定人数,否则您更有可能遭受停电。
Write(2) + Read(2) > RF
Quorum(选项1)使1个节点死亡,您的群集正常运行。Write(3) + Read(1) > RF
写入3允许您只读取1个节点,如果节点断开连接,则会以写入失败为代价加速读取。Write(1) + Read(3) > RF
阅读3加速写入,但会在节点出现故障时丢失数据。答案 1 :(得分:0)
您应该记住,每台服务器都将保留100%的数据。所以在速度方面你可能不会获得太多收益。否则,读取和写入的CL均为1不会导致数据丢失。另外,如果1个节点出现故障并将其启动,请不要忘记提示。
对于这个你也可以使用QUORUM。这意味着副本中的一半加上1应该响应操作。
另外,我建议您阅读Configuring data consistency和Replication, High Availability and Consistency in Cassandra