Redis 如何在分布式计算中保持强一致性?
例如,我有Master和Slave1S1和Slave2S2。如果我按如下方式执行同步复制 更新主机,并锁定写入 复制Slave1和Slave2 解锁母版的写入。 但以上的一致性不强 场景1,当S1和S2的复制都成功时, 阅读Slave1或Slave2的用户在特定时刻可以得到不同的值 场景2,复制S1成功,但复制到S2失败。 在这种情况下,主机应取消对S1的写入。但用户可能已经读过了 所以很难保持很强的一致性。因此,如果有必要,公司会使用什么算法来保持强一致性? 如何使最终写入值同时对客户端可见?Redis 如何在分布式计算中保持强一致性?,redis,consistency,Redis,Consistency,例如,我有Master和Slave1S1和Slave2S2。如果我按如下方式执行同步复制 更新主机,并锁定写入 复制Slave1和Slave2 解锁母版的写入。 但以上的一致性不强 场景1,当S1和S2的复制都成功时, 阅读Slave1或Slave2的用户在特定时刻可以得到不同的值 场景2,复制S1成功,但复制到S2失败。 在这种情况下,主机应取消对S1的写入。但用户可能已经读过了 所以很难保持很强的一致性。因此,如果有必要,公司会使用什么算法来保持强一致性? 如何使最终写入值同时对客户端可见?
谢谢。用最简单的方式表达 有两种方法可以提供一致性 首先是在向数据库或数据库写入任何内容之前获取锁 缓存系统。这确保了读写锁定。这包括 主服务器也是如此 为了进一步增强锁定机制,需要分配钥匙 保持这种状态,以便读取总是重新指向 如果同时添加了新服务器,则为一致的服务器 在锁定时,也可以使用超时缓冲操作 因此,当应用新值时。这是返回的 其次,如果复制失败,那么就增加了复杂层 翻车次数。这确保了数据的一致性,如果不一致,则是一致的 不适用。
所以,为了保持强一致性,所有的读写操作都必须通过主服务器和您提到的一致性服务器,对吗?谢谢。我的错,我已经在服务器上添加了一个s。我的意思是,为了适应集群中添加的新服务器,它首先需要从集群的稳定部分进行验证。简言之,先拿锁,然后做事,然后释放锁。如果其他操作失败,请执行回滚。简单的交易非常感谢。我检查了MongoDB文档。如果用户总是从master读/写,则具有很强的一致性。如果用户将其配置为SlaveOK,则用户将以最终一致性从从机读取数据。再次感谢。没问题,很高兴我能帮忙: