Quorum (分布式系统)

✍ dations ◷ 2025-11-14 12:22:13 #投票,算法

Quorum 机制,是一种分布式系统中常用的,用来保证数据冗余和最终一致性的投票算法,其主要数学思想来源于鸽巢原理。

在有冗余数据的分布式存储系统当中,冗余数据对象会在不同的机器之间存放多份拷贝。但是同一时刻一个数据对象的多份拷贝只能用于读或者用于写。

该算法可以保证同一份数据对象的多份拷贝不会被超过两个访问对象读写。

算法来源于。 分布式系统中的每一份数据拷贝对象都被赋予一票。每一个读操作获得的票数必须大于最小读票数(read quorum)(Vr),每个写操作获得的票数必须大于最小写票数(write quorum)(Vw)才能读或者写。如果系统有V票(意味着一个数据对象有V份冗余拷贝),那么最小读写票数(quorum)应满足如下限制:

第一条规则保证了一个数据不会被同时读写。当一个写操作请求过来的时候,它必须要获得Vw个冗余拷贝的许可。而剩下的数量是V-Vw 不够Vr,因此不能再有读请求过来了。同理,当读请求已经获得了Vr个冗余拷贝的许可时,写请求就无法获得许可了。

第二条规则保证了数据的串行化修改。一份数据的冗余拷贝不可能同时被两个写请求修改。

在分布式系统中,冗余数据是保证可靠性的手段,因此冗余数据的一致性维护就非常重要。一般而言,一个写操作必须要对所有的冗余数据都更新完成了,才能称为成功结束。比如一份数据在5台设备上有冗余,因为不知道读数据会落在哪一台设备上,那么一次写操作,必须5台设备都更新完成,写操作才能返回。

对于写操作比较频繁的系统,这个操作的瓶颈非常大。Quorum算法可以让写操作只要写完3台就返回。剩下的由系统内部缓慢同步完成。而读操作,则需要也至少读3台,才能保证至少可以读到一个最新的数据。

Quorum的读写最小票数可以用来做为系统在读、写性能方面的一个可调节参数。写票数Vw越大,则读票数Vr越小,这时候系统读的开销就小。反之则写的开销就小。

相关

  • 舌部舌部,为汉字索引中的部首之一,康熙字典214个部首中的第一百三十五个(六划的则为第十八个)。就繁体和简体中文中,舌部归于六划部首。舌部只以左、下方为部字。且无其他部首可用者
  • 让·拉辛让·拉辛(法语:Jean Racine,1639年12月22日-1699年4月21日),法国剧作家,与高乃依和莫里哀合称十七世纪最伟大的三位法国剧作家。拉辛出身于一个小官员家庭,自幼父母双亡,被外祖母和舅
  • 寡突胶细胞寡突胶质细胞(Oligodendrocyte)是一种神经胶质细胞,最早由西班牙医学家皮奥·戴尔·里奥·霍尔特加(英语:Pío del Río Hortega)于1921年报导。寡突胶质细胞的主要功能是在中枢神
  • 中华民国海军中华民国海军(英语:The Republic of China Navy,缩写为ROCN)是中华民国国军的海上武装部队,隶属国防部海军司令部,辖下有海军舰队指挥部、海军陆战队指挥部、海军教育训练暨准则发
  • 布洛赫费利克斯·布洛赫(德语:Felix Bloch,1905年10月23日-1983年9月10日),瑞士物理学家,1952年诺贝尔物理学奖获得者。1901年:伦琴 / 1902年:洛伦兹、塞曼 / 1903年:贝克勒、皮埃尔·居里
  • 克罗布彻埃米·琼·克洛布彻(英语:Amy Jean Klobuchar,1960年5月25日-)是美国的政治人物。她目前担任明尼苏达州的资深参议员职位。她隶属民主党籍。
  • 第十三合组军团第十三双子军团(拉丁语:Legio XIII Gemina)古罗马军队建制名称。由尤利乌斯·凯撒于公元前57年为高卢战争所建立,并持续存在至公元5世纪。该军团曾先后参加高卢战争、阿莱西亚之
  • 欧拉计划欧拉计划(Project Euler)是一个解题网站,站内提供了一系列数学题供用户解答,解题的用户主要是对数学和计算机编程感兴趣的成年人及学生。目前该站包含了677道不同难度的数学题,每
  • 丹巴·恰格达尔扎布丹巴·恰格达尔扎布(蒙古语:Дамбын Чагдаржав,1880年-1922年8月31日)蒙古族,今蒙古国色楞格省人,蒙古人民党“最初七人”领袖之一,自1921年3月至4月为蒙古总理。恰
  • 鹰司政通鹰司政通(1789年8月22日-1868年11月29日/宽政元年七月初二-明治元年十月十六),是江户时代的公卿、仁孝天皇与孝明天皇的关白,也是藤原北家摄关家的鹰司家当主。鹰司政通在宽政元年(1