Mongo vs cassandra:单点失败



在Cassandra与Mongo的辩论中,据说由于Mongo具有主从架构,因此它只有一个单点故障(master(,因为当master发生故障时,从节点需要时间来决定新的master,因此有一个停机窗口。

对于Cassandra,我们没有这个问题,因为所有节点都是相等的。但Cassandra也有一个系统,其中节点使用八卦协议来保持自己的更新。在八卦协议中,需要最少数量的节点参与。假设其中一个参与节点发生故障,则需要一个新节点来替换它。但生成一个新的替换节点需要时间,这种情况类似于mongo中的master故障。

那么,就单点故障而言,2之间有什么区别呢?

你对卡桑德拉的假设是不正确的,请允许我解释一下。

Gossip不需要多个节点就可以工作。有可能有一个单节点集群,八卦仍然可以工作,所以这句话是不正确的:

在八卦协议中,需要最少数量的节点才能参与。

对于最佳做法,我们建议每个数据中心中有3个副本(复制系数为3(,因此每个数据中心至少需要3个节点。复制因子为3时,您的应用程序可以在ONELOCAL_ONE或推荐的LOCAL_QUORUM的一致性级别的节点中断中幸存下来,因此这些语句也不正确:

假设其中一个参与节点发生故障,则需要一个新节点来替换它。但生成一个新的替换节点需要时间,这种情况类似于mongo中的master故障。

将单点故障引入Cassandra集群的唯一方法是:

  • 在单个物理主机上部署多个实例(不推荐(
  • 为所有节点使用共享存储(如SAN、NAS、NFS((不推荐(

顺便说一句,这是一个友好的警告,其他用户可能会投票结束你的问题,因为比较通常是不受欢迎的,因为答案通常是基于意见的。干杯

此外,您对MongoDB的假设也不正确。

MongoDB 4.0版(当前版本为5.0(中删除了主从复制,现在它使用副本集

通常连接到一个副本集,而不是单个副本集成员。当当前PRIMARY关闭时,将选择一个新的PRIMARY,您的应用程序将自动重新连接并重试对新PRIMARY的写入操作。它可能会挂起几秒钟,但应该继续运行。

最新更新