为什么三个节点是Couchbase建议的最小节点数?

 DSSDD 发布于 2022-12-14 10:06

对于Cassandra,假设复制因子为1(即数据集的两个副本),则最少需要三个节点来启用具有强一致性的写入.Couchbase似乎没有这个要求,至少我没有在任何地方找到它.尽管如此,Couchbase仍然建议生产系统至少使用三个节点.

我发现的唯一动机是(1)双节点系统中的单节点故障会产生单点故障,(2)双节点系统在扩展到第三个节点时需要更加努力,而不是三节点系统(我假设这是因为重新平衡).

没有任何动机对我来说特别引人注目:

原因(1)感觉有点像说双磁盘RAID-1没用,只有三磁盘RAID-6(一个数据,两个校验和)是可以接受的.然而,RAID-1非常流行(远远超过三磁盘RAID-6:es),通常被认为是相对安全的.据推测,丢失节点将导致管理员快速行动,因此风险应该是短暂的.

原因(2)对我来说似乎更加短暂.当添加第三个节点时,两个节点需要更加努力地工作.尽管如此,这只是一个问题,并且大多数应用程序每天都有负载变化,可以完成重新平衡的调整.

所以我想知道是否有任何其他原因可以避免双节点Couchbase集群,假设这两个节点能够很好地承载负载?

1 个回答
  • 主要原因是使用少于三个节点禁用自动故障转移.这是为了防止出现"裂脑"的情况.考虑两个节点,节点A和节点B.如果一个节点不可访问(由于网络问题),则:

    节点A无法到达节点B,并且没有其他节点可以协商,因此他进行了故障转移(从群集中删除B并推广自己的副本)

    节点B无法到达节点A,类似的是没有其他节点,因此他进行了故障转移(从群集中删除A).

    任何仍然可以看到两个节点的客户现在基本上都有两个独立的集群,他们都认为他们拥有整个数据集.

    基本上在这种情况下,您违反了CAP中的一致性.

    因此,Couchbase 不会在少于三个节点的情况下执行自动故障转移,并且由于这是在生产系统中使用的推荐功能,因此群集中至少需要三个节点.

    有关详细信息,请参阅Couchbase管理指南中的故障转移注意事项一章.

    2022-12-14 10:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有