我正在阅读 strong consistency mode for aerospike手动的。在最后一个示例“读取的强一致性”中,他们解释说,在分区的情况下,他们需要一个称为“制度”的概念来确保读取的线性化。为什么我们需要那个?写入少数不会成功,因为它们不会被复制,所以我们担心什么呢?缺少对事件主机的写入?
最佳答案
归结为这样一个事实:当集群分区时,所有节点可能不会同时分区。
考虑 Aerospike 的单个数据分区(分片)。来自先前政权的主副本位于分区的少数一侧,没有其所有副本,那么它需要放弃成为主副本,而新政权中的副本需要提升为主副本。由于我们处于网络分区中,因此这两个节点无法协调此交换。来自先前政权的主设备可以在确定其不再是主设备之前接收读取。为了确保线性化读取,读取事务会发出副本 ping,其中包括主服务器认为其所处的当前状态。如果任何副本报告状态已高级,则读取失败,否则副本 ping 允许事务继续进行。
如果任何新写入能够在新机制上完成,则根据活跃度规则,可以确保针对旧机制的任何线性化读取都会失败。
关于distributed-system - aerospike 读数的强一致性 - 为什么它们需要政权编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60403217/