分布式数据一致性协议之NWR协议

1.什么是NWR协议?

NWR协议是一种用在分布式数据库中的机制,用来确保数据在多台机器上存储时的一致性和可靠性。简单来说,就是保证数据在分布式系统中能够被正确读取和写入的一套规则。

2.NWR中的“N”、“W”和“R”是什么?

  • N:是指存储数据的总节点数。比如说,你的系统有5台服务器在存储数据,那N就是5。
  • W:是指成功写入数据需要的最少节点数。也就是说,数据必须写到至少这么多台服务器上,写操作才能算成功。
  • R:是指成功读取数据需要的最少节点数。也就是说,必须从至少这么多台服务器读取数据,读操作才能算成功。

3.怎么保证数据一致?

为了确保数据一致性,NWR协议规定:
[ W + R > N ]

意思是,只要你写和读的节点数量之和超过总节点数,你就能确保数据的一致性。这样做是为了避免不同的读操作返回不同的数据。

3.1.写操作

假设你想把数据写入到系统中,你告诉系统“至少要写到3台服务器上(W=3)”。系统会尝试将数据写入到所有的服务器中,但只要有3台服务器成功写入,系统就会告诉你“写成功了”。

在这里插入图片描述

假如有5台服务器(N=5),你设置W=3和R=3。那么:

只要3台服务器写入成功,写就算完成。

这样设计的好处是,如果我们确保W和R的值足够高(比如说W=3, R=3),就可以确保即使有一台服务器丢失数据,我们仍然能够读取到最新的数据。

3.2.读操作

同样地,假设你想读取数据,你告诉系统“至少要从3台服务器读取数据(R=3)”。系统会从3台服务器中获取数据并返回给你。如果数据不一致,系统还会根据某种规则(比如时间戳)来决定哪个数据是最新的。
在这里插入图片描述

假设我们有5台服务器(N=5),我们设定W=3,R=3。这样的话:

每次读数据时,从5台服务器中的任意3台读取数据,并根据返回的数据进行合并和校验。

4.优缺点

4.1.优点
  • 数据一致性:通过合理设置W和R,可以确保数据的一致性。
  • 灵活性:根据不同的需求,可以调整W和R的值来平衡读写性能和数据一致性。
4.2.缺点
  • 延迟:如果W和R的值设得太高,操作的延迟会增加。
  • 复杂性:需要根据具体应用情况来调节N、W、R的值

5.实际应用

在Amazon的DynamoDB中,NWR协议被用来配置表的写一致性。用户可以选择“强一致性”或者“最终一致性”:

  • 强一致性:每次读操作都能返回最新写入的数据。这需要较高的W和R值。
  • 最终一致性:允许较低的W和R值,提供更高的性能,但可能会在短时间内返回旧数据。

6.总结

NWR协议是用来管理和控制数据在分布式数据库中的一致性的。它通过设置写和读的节点数,保证每次操作都能返回最新的正确数据。选择合适的W和R值可以在性能和数据一致性之间找到平衡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

书语时

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

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

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

打赏作者

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

抵扣说明:

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

余额充值