Quorum Vs Versioning,我啥时候应该使用啥?

Posted

技术标签:

【中文标题】Quorum Vs Versioning,我啥时候应该使用啥?【英文标题】:Quorum Vs Versioning, when should i use what?Quorum Vs Versioning,我什么时候应该使用什么? 【发布时间】:2021-12-19 01:37:51 【问题描述】: 法定人数是指必须就特定操作达成一致才能继续前进的服务器的多数数。 版本控制是每条记录的计数器。

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

【问题讨论】:

【参考方案1】:

Quorum 在分布式环境中是必需的,在该环境中,您正在运行一组机器,并且这些机器中的任何一台都可以接受写入/修改请求并更新数据。在这种情况下,Quorum 用于识别将接受写入的领导者或确定哪个节点可以接受给定范围的键的写入/修改请求。

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

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

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

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

【讨论】:

谢谢,我以为我们只有矢量时钟和副本同步解决脑裂问题。

以上是关于Quorum Vs Versioning,我啥时候应该使用啥?的主要内容,如果未能解决你的问题,请参考以下文章

我啥时候应该使用 Tracing vs Logger.NET、Enterprise Library、log4net 或 Ukadc.Diagnostics?

我啥时候应该在 NavLink 上使用 Link?

我啥时候应该使用 FutureBuilder?

我啥时候应该增加 xcdatamodeld 版本?

我啥时候使用 ,啥时候不在 JavaScript 中导入 [重复]

我啥时候应该使用 QThread::HighestPriority