天天看点

分布式之Quorum NWR算法写在前面1:Quorum NWR写在后面

写在前面

假设现在我们实现了AP 系统,但是公司突然要对某些业务进行实时的数据计算,并且要求按照强一致性的方式来读取数据,此时作为系统设计这的我们该怎么办呢?单独为这部分业务实时抽出最新数据?还是修改原有系统?看起来都不是很靠谱,为了一个单独临时的业务而做出这么大的动作,显然是不适合的。此时我们就可以考虑在系统中引入Quorum NWR算法,从而实现数据的强一致性

(注意这里实现的强一致性是建立在系统正常的前提下,如果是系统异常将还只是保证AP)

。下面我们就来一起看下吧!

1:Quorum NWR

在Quorum NWR算法中包含

N

,

W

,

R

三个元素,当

W + R > N

时就能实现我们文章开始提到的强一致性了,分别来看下。

1.1:N

N,表示的副本数,即一个分片的复制因子,如下图data-1的N就是2,data-2的N就是3,data-3的N就是1:

分布式之Quorum NWR算法写在前面1:Quorum NWR写在后面
注意N不要超过节点数,因为将会导致某节点上存在超过>1个的副本,当该节点故障时,分片的多个副本将会同时不可用。

1.2:W

W,代表一次更新操作,数据需要写入到多少个副本才算成功,比如设置data-2分片W设置为2,则必须更新2个副本才算成功,如下图:

分布式之Quorum NWR算法写在前面1:Quorum NWR写在后面

1.3:R

R,代表一次读取多少个副本,并从中选择一个最新的数据,之后返回给客户端,如下data-2设置R=2,则会从data-2的3个副本中的2个副本读取数据,然后获取最新的一个版本返回给客户端,如下图:

分布式之Quorum NWR算法写在前面1:Quorum NWR写在后面

到这里我们再看下为什么

W + R > N

就能实现强一致性,因为当满足该条件时,进行数据读取的R个副本中必定有一个是拥有最新数据,所以就实现了数据强一致性。

写在后面

小结

本文分析了一个AP系统如何实现数据一致性

(再次强调这里指的是系统正常情况下的数据强一致性,所以CAP不能三角依然是成立的)

参考文章列表

分布式之CAP理论分析 。

继续阅读