NWR 协议
正文
NWR 协议是分布式系统中用于控制一致性级别的一种策略.在 Amazon 的 Dynamo 云存储系统中就应用 NWR 来控制一致性,这三个字母分别代表着:
- N: 副本数量, 例如 GFS 或 Ceph 中的 3 副本
- W: 一次成功的更新操作至少需要多少副本写入成功,在 GFS 和 Ceph 中都是需要所有副本都写入成功,也就是 3
- R: 一次成功的读操作至少要多少份副本读取成功, 在 GFS 中是 1
NWR 值的不同组合会产生不同的一致性效果, 当 W + R > N 的时候,整个系统对于客户端能保持强一致性,以 GFS 为例 N = 3, W = 3, R = 1,其他博主常用的是 N = 3, W= 2, R = 2
为什么 W + R > N 就能保证强一致性呢?因为写入 W 个 副本就相当于在N 个副本中选出 W 个子集,读 R 个副本相当于在 N 个副本中选 R 个子集,当 W + R > N 时, 写子集和读子集一定有交集,也就是说我们一定可以读到最新写入的数据,也就是可以保证强一致性.
但是我们还需要一些手段来让客户端知道最新的数据是哪一个.对于Dynamo来说,是通过NWR协议结合向量时钟来共同完成一致性保证的。对于 GFS / Ceph, 他们能保证每一份数据都是最新的,所以不需要前面的向量时钟或类似操作来保证.
引用
(NWR 协议)[https://ivanzz1001.github.io/records/post/paxos/2017/11/01/nwr-protocol]
(并发笔记:分布式一致性协议 - CAP、BASE、NWR)[https://cloud.tencent.com/developer/article/1752382]

浙公网安备 33010602011771号