是否可以将节点添加到同步复制数据的群集?



如果我有将数据写入存储的系统。

在群集设置中,如果数据是同步复制的,那就是当我收到更改跨所有节点更新的数据的请求时,然后返回响应。

在这种情况下,是否可以动态添加节点?

也就是说,假设有 2 个节点,并且在该集群上执行一些事务。是否可以添加群集仍在运行的第三个节点?

如果像这样添加新节点,会不会破坏集群的强一致性?

我相信您正在寻找的是 一致散列(维基百科( 它允许您以某种方式分配内存,以便在多个节点之间正确复制数据,并且添加或删除节点具有较少的与之相关的开销,我建议您通过链接 一致哈希的简单魔力

一个简单和示意图的例子(只是许多可能的变体之一(:

  1. 在记录模式下添加一个节点。群集的行为就像新节点不存在一样,但还会将需要驻留在其上的对象的更新复制到此节点。
  2. 确定哪些现有对象需要驻留在新节点上。快照在每个现有节点上创建并发送到新节点。新节点处理它们(插入到其存储中(,可能以批处理模式处理它们。
  3. 在记录阶段累积的更新将在新节点上重播,而新更新仍在记录中。如果某些更新已作为快照的一部分进行核算,则应跳过这些更新,或者不会导致任何更改。
  4. 重播所有更新后,如果过程中没有错误,群集将切换到新配置(新节点完全启动(。对应驻留在新节点上的对象的更新将停止发送到其旧目标。从旧目标清除数据。
  5. 如果在此过程中的任何时候发生错误,则会中止并可能重新重复。

可能的调整:

  • 在切换到新配置之前,查询旧节点和新节点一段时间,并比较返回的结果。如果有任何差异,请中止并调查。
  • 在切换到新配置之前进行完整比较(可能是校验和(。

相关内容

最新更新