1

Aerospike 在复制因子大于 1 的集群环境中支持 ACID,其中任何写入都将写入 Master 和 Replica,然后只会将其标记为客户端成功。

但是,我们可以通过将write.commit_levelall更改为master来更改上述默认行为。

在这种情况下,假设在Master节点写入/更新成功并通知客户端,但在Replica节点写入失败,会发生什么?

Aerospike 是否会在集群中为相同的键提供不一致的数据?
还是会在 Replica 重试?
或者 Master 上的写入会被回滚吗?

请注意,副本节点没有关闭,只是由于任何原因导致写入失败,例如停止写入 pct在副本节点被破坏等。

4

1 回答 1

2

如果您选择write.commit_level=master,并且如果 prole 写入失败,客户端将不会收到有关失败的通知。副本将与主服务器保持不一致。主写入不会回滚。副本将在成功复制的下一次写入时得到修复。即它将被最新记录覆盖。

顺便说一句,需要注意的重要一点是,stop-writes它在主服务器而不是副本中受到尊重。因此,副本写入失败将是一个坏主意。只要您在内存(没有 malloc 故障)和磁盘方面有一些空间,当节点本身没有关闭时,几乎没有任何副本写入失败的机会。

于 2015-05-29T07:07:54.250 回答