例如,我有Master(M)和Slave1(S1)和Slave2(S2)。如果我按如下所示进行同步复制,
但以上并不是很强的一致性。
读取Slave1或Slave2的用户可以在某个时刻获得不同的值。
在这种情况下,Master应取消对S1的写入。但是用户可能已经阅读过了。
因此很难保持强大的一致性。因此,如果有必要,公司会使用哪些算法来保持强一致性? 如何使最终写入值在完全相同的时间对客户端可见? 感谢。
答案 0 :(得分:3)
以最简单的形式放置东西;
有两种方法可以提供一致性
首先是在将任何内容写入数据库之前获取锁定 缓存系统。这确保了读写锁定。这包括 主服务器也是。
为了进一步增强锁定机制,密钥的分配是 保持这样,所以读取总是重新指向 一致的服务器(如果当时还添加了新的服务器)。
此时锁定,操作也可以缓冲(超时) 所以当应用新值时。返回。