您当前的位置: 首页 > 

无主复制系统(2)-读写quorum

发布时间:2022-07-31 16:02:10 ,浏览量:0

图-10中,三副本若有两个以上完成处理,写即可认为成功了。若三副本中只有一个完成写入,会怎样?到底几个副本完成才能认为写成功?

成功写操作,要求三副本的至少两个完成,即至多有一个副本可能包含旧值。因此,在读取时需至少向两个副本发起读请求,通过版本号可确定一定至少有一个包含新值。若第三个副本停机或响应慢,则读取仍可继续并返回最新值。

若有n副本,写入须w个节点确认,至少为每个读取查询r个节点。只要 w + r > n,我们期望在读取时获得最新值,因为r个读取中至少有一个节点最新。遵循这些r值,w值的读写称为法定人数(quorum)读写。也可认为r和w是判定读、写是否有效的最低票数。

Dynamo风格DB的参数n,w和r一般可配置。常见选择是n为奇数(3或5)并设置 w = r = ( n + 1 ) / 2 w = r =(n + 1)/ 2 w=r=(n+1)/2(向上取整)。但可按需更改数字。如设置 w = n w = n w=n和 r = 1 r = 1 r=1的写入很少且读取次数较多的工作负载可能会受益。这使得读取速度更快,但具有只有一个失败节点导致所有数据库写入失败的缺点。

集群中可能存在多于n的节点。(集群的机器数可能多于副本数目),但任何给定的值只能存储在n个节点上。这允许对数据集进行分区,从而可以支持比单个节点的存储能力更大的数据集。

仲裁条件 w + r > n w + r> n w+r>n定义了系统可容忍的失效节点个数:

  • 若 w < n w

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0869s