不断增长的 NoSQL 集群中的恒定复制因子

问题描述

我有一个 RF = 3 的 Nosql 集群。这意味着,如果有 2 或 3 个节点同时宕机,某些数据(其所有副本都属于故障节点)将变得不可用。

虽然集群大小约为 10 个节点,但 2 个节点同时宕机的可能性很低。但是有了 1000 个节点,这完全是可能的。我们拥有的节点越多,任何恒定数量(等于 RF)出现故障的可能性就越大。

问题是:在集群中的实例数量不断增加的同时,丢失任何数据的机会一直很低的一般方法是什么?

附言当然,没有绝对同时发生的事件,“同时”我的意思是“在短时间内,数据无法流式传输到新节点”。

解决方法

大多数 NoSQL 系统都是基于以下概念开发的:

  • 布隆过滤器
  • 文件系统
  • 备份策略
  • 复制因子

由于您同时担心丢失节点,因此总会有从快照/文件系统或布隆过滤器等定义的数据重建策略

以上概念适用于Cassandra/MongoDB/elasticSearch等

启动的领导者和监控工具将处理角落场景。您可能无法将完整数据重建为丢失的数据。但是,它可以在节点宕机前 5 分钟捕获任何数据 [默认 AWS 快照到 S3 捕获每 5 分钟运行一次]