法定人数与版本控制,我什么时候应该使用什么?

Quorum Vs Versioning, when should i use what?

在数据库中,如果最新版本总是给我最新的正确记录。 什么时候以及为什么我应该将 Quorum 用于分布式系统。

在分布式环境中需要仲裁,您是 运行 机器集群,这些机器中的任何一个都可以接受 write/modify 请求并更新数据。在这种情况下,Quorum 用于识别将接受写入的领导者或确定哪个节点可以接受 write/modify 对给定键范围的请求。

让我们考虑一个场景,您有 3 个主服务器接受写入,在这种情况下,如果您想更新数据,我们是否可以只匹配其中一个主服务器上的版本并假设更新是安全的?

不,因为在同一时刻对其他主服务器的一些其他写请求也可以假定相同,因此您最终会在不同的机器上得到不同的数据状态。

在这种情况下,您需要仲裁来识别将接受给定数据范围写入的领导者,然后您可以使用版本控制(乐观锁定)来确保数据在所有机器和序列化之间保持一致。

但是,当您有一个主服务器接受写入并且多个用户可能想尝试更新数据时,版本控制很有用,在这里使用版本控制可以帮助您实现乐观锁定。这通常在锁定机会很低时很有用。