如何在分布式计算中保持强一致性?

How to maintain strong consistency in distributed computing?

例如我有 Master(M) 和 Slave1(S1) 和 Slave2(S2)。如果我如下进行同步复制,

  1. 更新Master,并锁定写入
  2. 复制 Slave1 和 Slave2
  3. 解锁大师的写法

但以上一致性不强

读取Slave1或Slave2的用户在某个时刻可以得到不同的值

在这种情况下,Master应该取消对S1的写入。但用户可能已经阅读了它。


所以很难保持强一致性。那么,如果有必要,公司会使用什么算法来保持强一致性呢? 如何使最终的写入值在同一时间对客户端可见? 谢谢。

用最简单的形式表达;

有两种方法可以提供一致性

  • 首先是在向数据库写入任何内容之前获取锁或者 缓存系统。这样就保证了读写锁。这包括 还有主服务器。

    为了进一步增强锁定机制,密钥的分配是 保持这样,所以读取总是被重定向到 一致的服务器(如果当时还添加了新服务器)。

    此时加锁,操作也可以缓冲(有超时) 所以当应用新值时。返回。

  • 其次,如果复制失败则添加复杂层 翻车。这确保数据是一致的,如果不一致,那么它是 未应用。