Quorum (分布式系统)

✍ dations ◷ 2025-12-03 04:10:49 #投票,算法

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

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

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

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

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

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

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

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

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

相关

  • 注射剂全身麻醉剂(英语:general anesthetics)是麻醉药中的一类。麻醉药根据作用部位的不同,可分为全身麻醉药(general anesthetics)和局部麻醉药(local anesthetics)。全身麻醉药作用于中
  • 贾思勰贾思勰(?-?),齐郡益都县(今山东省寿光市西南),北魏农学家,官至高阳郡太守(今山东省淄博市临淄区一带)。他精通农业科学,在复兴由于战乱而荒废的华北农业时,将旱地农业技术体系化,于北魏末年
  • 基质细胞基质细胞或基底层细胞可以是任何器官(比如子宫粘膜(子宫内膜)、前列腺、骨髓和卵巢)的结缔组织,它支持那个器官实质细胞的功能。成纤维细胞、免疫细胞、周细胞、内皮细胞和炎症细
  • 鞑靼鞑靼是明朝对北元灭亡后,由也速迭儿开始,达延汗统一的东部蒙古的泛称,也称蒙古本部,与西部蒙古瓦剌对立,分为察哈尔、土默特、科尔沁(含喀喇沁)、鄂尔多斯、阿速等部。鞑靼是明朝所
  • 扎纳巴扎尔龙扎纳巴扎尔龙属(属名:Zanabazar)是伤齿龙科恐龙的一属,生存于白垩纪晚期的蒙古。扎纳巴扎尔龙的化石发现于蒙古的纳摩盖吐组(Nemegt Formation)。在1974年,瑞钦·巴思钵(Rinchen Bar
  • 耿葳耿葳(1990年10月31日-),女,生于新北市,中国国民党籍,台北市议员。姑母厉耿桂芳为前台北市议员。2018年以中国国民党籍参选台北市议会第13届议员,选区为第6选举区(大安区、文山区),当选
  • CanocoCanoco(canonical community ordination)是生态学方面多元数据排序分析的一个商业软件。
  • 纹袋鼬属纹袋鼬属,哺乳纲的一属,而与纹袋鼬属同科的动物尚有长爪袋鼬属(长爪袋鼬)、里氏袋鼬属(里氏袋鼬)、林袋鼬属(短毛袋鼬)、袋鼬属(澳洲袋鼬)等之数种哺乳动物。
  • VagrantVagrant是一款用于构建及配置虚拟开发环境的软件,基于Ruby,主要以命令行的方式运行。主要使用Oracle的开源VirtualBox虚拟化系统,与Chef,Salt,Puppet等环境配置管理软件搭配使用
  • 燕赵镇燕赵镇,是中华人民共和国河北省保定市曲阳县下辖的一个乡镇级行政单位。燕赵镇下辖以下地区:东么罗二队村、东么罗三队村、西么罗村、南管头村、中管头村、管头庄村、燕赵村、