其中一些差异是由于原始迁移/再平衡设计中的一个问题造成的,并在中的协议更改中得到了解决
Aerospike 3.13
. 在3.13中更改协议之前,运行时
replication-factor
2.运营商必须一次升级一个节点,然后等待迁移完成。
额外的差异是避免过多计数
master-objects
和复制对象(即。
prole-objects
)在迁移过程中。同样在3.13中,我们为
non-replica-objects
它们是当前不作为主对象或副本的对象。这些是(a)具有入站迁移并最终将作为副本的分区上的对象,或者(b)这些是不参与的分区上的对象,并且在该分区的迁移终止时将被丢弃。
在3.13之前,
non-replica-object
类型(a)将减少两者的计数
主对象
或
prole对象
. 这是因为在协议更改之前,当一个分区返回以前的主分区时,它会立即恢复为主分区,即使它没有在不在时发生的新写操作。这不是最佳行为,但不会丢失数据,因为我们将从
非副本对象
在其他节点上。在协议更改之后,返回的“主”分区将不会恢复为“主”分区,直到它接收到来自其他节点的所有迁移。
在3.13之前,
非副本对象
类型(b)的将立即下降,并将减少
prole对象
. 这会导致
复制因子
当一个节点不在时写入的记录的数量减少一(例如。
replication-factor 2
暂时变成
replication-factor 1
). 这也是在继续升级下一个节点之前等待迁移完成很重要的原因。协议更改后(除非仅在内存中运行),不再需要等待节点升级之间的迁移完成,因为不会删除临时“子集分区”,这会阻止记录的更新
复制因子
从减少(实际上,使用新协议,在迁移过程中
复制因子
+1份记录)。