distributed-system - aerospike 读数的强一致性 - 为什么它们需要政权编号?

标签 distributed-system aerospike consistency cap-theorem

我正在阅读 strong consistency mode for aerospike手动的。在最后一个示例“读取的强一致性”中,他们解释说,在分区的情况下,他们需要一个称为“制度”的概念来确保读取的线性化。为什么我们需要那个?写入少数不会成功,因为它们不会被复制,所以我们担心什么呢?缺少对事件主机的写入?

最佳答案

归结为这样一个事实:当集群分区时,所有节点可能不会同时分区。

考虑 Aerospike 的单个数据分区(分片)。来自先前政权的主副本位于分区的少数一侧,没有其所有副本,那么它需要放弃成为主副本,而新政权中的副本需要提升为主副本。由于我们处于网络分区中,因此这两个节点无法协调此交换。来自先前政权的主设备可以在确定其不再是主设备之前接收读取。为了确保线性化读取,读取事务会发出副本 ping,其中包括主服务器认为其所处的当前状态。如果任何副本报告状态已高级,则读取失败,否则副本 ping 允许事务继续进行。

如果任何新写入能够在新机制上完成,则根据活跃度规则,可以确保针对旧机制的任何线性化读取都会失败。

关于distributed-system - aerospike 读数的强一致性 - 为什么它们需要政权编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60403217/

相关文章:

architecture - 允许跨网络调用函数的现代方法

go - Benchmark 给出命令执行超时

java - 数据存储和 Memcache 一致性 - Google App Engine 和 Objectify

c - 确保读取整个结构

go - ZeroMQ 在断开连接的对等点上进行循环故障转移

algorithm - 服务器中 volatile 状态的 raft 协议(protocol)中的 lastApplied 和 matchIndex 是什么?

java - 在多台机器上管理 EhCache

go - 如何使用 golang 在 aerospike 中添加列表?

INSERT 之后出现 AEROSPIKE_ERR_RECORD_NOT_FOUND

azure - CQRS:读取端 ACID