Distributed_复制_无主复制(读写quorum)

1.无主复制

Dynamo风格数据库采用的是无主复制的数据库类型

1.1无主复制中读写quorum
1.1.1.Problem:

​ 在无主复制系统中,如果有n个副本,需要有多少个副本完成写请求处理,才能被认定为写成功?

​ (写成功的含义:客户端需要向特定数量的节点查询始终可以获取最新值)

1.1.2.形式化关系:

​ 对于有n个副本的无主复制系统,写入需要w个节点确认,读取至少查询r个节点,则必须满足以下关系才可以使得每次查询都能获取最新值:
w + r > n : 即 写 入 确 认 的 节 点 集 合 与 查 询 节 点 集 合 有 交 集 w+r>n:即写入确认的节点集合与查询节点集合有交集 w+r>n:
以上w和r可以判定读、写是否有效的最低票数.(通常,在读取和写入操作时都会并发向n个副本发送,参数w和r只是在读取或写入需要等候数)

1.1.3. w、r的设置

​ 在Dynamo风格数据库中,参数n、w和r通常是可配置的。一个常见的选择是w=r=(n+1)/2.即多数节点

​ 但是对于读写负载不均衡的数据库,则读多写少的数据库(r=1、w=n),读少写多的数据库(r=n、w=1)

1.1.4 w+r<=n的优缺点

优点:这种配置可以获得更低的延迟和更高的可用性。

缺点:这种配置可能读取时候不能保证获得是最新值(因为读取请求中可能恰好没有包含新值的节点)。

1.1.5 实际情况

虽然quorum设计上似乎可以保证读取最新值,但现实情况却往往更加复杂,Dynamo风格的数据库通常是针对最终一致性场景而优化的。所以最好不要把w和r视为绝对的保证。

本文是根据阅读《数据密集型应用系统设计》和查阅相关论文等而写成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blockchain410

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值