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

为什么三个节点是Couchbase建议的最小节点数?,couchbase,minimum,Couchbase,Minimum,对于Cassandra,假设复制因子为1(即数据集的两个副本),则至少需要三个节点才能启用具有强一致性的写入。Couchbase似乎没有这个要求,至少我还没有在任何地方找到它。尽管如此,Couchbase仍然建议生产系统至少使用三个节点 我发现的唯一动机是(1)两节点系统中的单节点故障将导致单点故障,(2)两节点系统在扩展到第三节点时需要比三节点系统更努力地工作(我假设这是因为重新平衡) 这些动机对我来说都不是特别有吸引力: 原因(1)感觉有点像说两个磁盘的RAID-1没有用,只有三个磁盘的RA

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

我发现的唯一动机是(1)两节点系统中的单节点故障将导致单点故障,(2)两节点系统在扩展到第三节点时需要比三节点系统更努力地工作(我假设这是因为重新平衡)

这些动机对我来说都不是特别有吸引力:

原因(1)感觉有点像说两个磁盘的RAID-1没有用,只有三个磁盘的RAID-6(一个数据,两个校验和)是可以接受的。尽管如此,RAID-1还是相当流行(比三个磁盘的RAID-6:es多得多),并且通常被认为是相对安全的。可能节点丢失会导致管理员快速采取行动,因此风险应该是短期的

理由(2)对我来说似乎更短暂。添加第三个节点时,两个节点需要比添加第四个节点时三个节点更努力地工作。尽管如此,这只是一次出现问题,而且大多数应用程序的负载每天都会发生变化,可以进行重新平衡的安装


因此,假设两个节点能够很好地承载负载,我想知道是否还有其他原因可以避免使用两个节点的Couchbase群集?

主要原因是自动故障切换被禁用,节点数少于三个。这是为了防止出现“大脑分裂”的情况。考虑两个节点,节点A和节点B。如果一个节点不能到达(由于网络问题),那么:

  • 节点A无法到达节点B,并且没有其他节点可以协商,因此他进行了故障切换(将B从群集中删除并升级他自己的副本)
  • 节点B无法到达节点A,同样,也没有其他节点,因此他会进行故障切换(将A从集群中移除)
任何仍然可以看到两个节点的客户机现在基本上都有两个独立的集群,它们都认为自己拥有整个数据集

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

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


有关更多详细信息,请参阅Couchbase管理指南中的章节。

谢谢!这听起来是一个很好的理由!我找到了这个链接:更详细地解释问题。如果您将答案(或其他来源)包括在内,您的答案可能会有所改进。