2.4 数据一致性实现技术
分布式存储在不同的节点的数据采取什么技术保证一致性,取决于应用对于系统一致性的需求,在关系型数据管理系统中一般会采用悲观的方法(如加锁),这些方法代价比较高,对系统性能也有较大影响,而在一些强调性能的系统中则会采用乐观的方法。
2.4.1 Quorum系统NRW策略
对于数据不同副本中的一致性,采用类似于 Quorum 系统的一致性协议实现。这个协议有三个关键值N、R和W。
N表示数据所具有的副本数。
R表示完成读操作所需要读取的最小副本数,即一次读操作所需参与的最小节点数目。
W表示完成写操作所需要写入的最小副本数,即一次写操作所需要参与的最小节点数目。
该策略中,只需要保证R + W>N,就可以保证强一致性。
例如:N=3,W=2,R=2,那么表示系统中数据有3个不同的副本,当进行写操作时,需要等待至少有2个副本完成了该写操作系统才会返回执行成功的状态,对于读操作,系统有同样的特性。由于R + W > N,因此该系统是可以保证强一致性的。
R + W > N会产生类似Quorum的效果。该模型中的读(写)延迟由最慢的R(W)副本决定,有时为了获得较高的性能和较小的延迟,R和W的和可能小于N,这时系统不能保证读操作能获取最新的数据。
如果R + W > N,那么分布式系统就会提供强一致性的保证,因为读取数据的节点和被同步写入的节点是有重叠的。在关系型数据管理系统中,如果N=2,可以设置为W=2,R=1,这是比较强的一致性约束,写操作的性能比较低,因为系统需要2个节点上的数据都完成更新后才将确认结果返回给用户。
如果R + W ≤ N,这时读取和写入操作是不重叠的,系统只能保证最终一致性,而副本达到一致的时间则依赖于系统异步更新的实现方式,不一致性的时间段也就等于从更新开始到所有的节点都异步完成更新之间的时间。
R和W的设置直接影响系统的性能、扩展性与一致性。如果W设置为1,则一个副本完成更改就可以返回给用户,然后通过异步的机制更新剩余的N W的副本;如果R设置为1,只要有一个副本被读取就可以完成读操作,R和W的值如较小会影响一致性,较大则会影响性能,因此对这两个值的设置需要权衡。
下面为不同设置的几种特殊情况。
当W = 1,R = N时,系统对写操作有较高的要求,但读操作会比较慢,若N个节点中有节点发生故障,那么读操作将不能完成。
当R = 1,W = N时,系统要求读操作高性能、高可用,但写操作性能较低,用于需要大量读操作的系统,若N个节点中有节点发生故障,那么写操作将无法完成。
当R = Q,R = Q(Q = N / 2 + 1)时,系统在读写性能之间取得了平衡,兼顾了性能和可用性,Dynamo系统的默认设置就是这种,即N=3,W=2,R=2。
相关推荐
#### Quorum系统NRW策略 - **N**:总副本数。 - **R**:完成一次读操作所需要的最小副本数量。 - **W**:完成一次写操作所需要的最小副本数量。 - 当`R + W > N`时,系统可以实现强一致性。 - 当`R + W 时,系统...
手段篇:一致性哈希、Quorum NRW、Vector clock、Virtual node、gossip协议、Merkle树、Paxos算法等是分布式系统中确保数据一致性和高可用性的常用技术。 例如,一致性哈希解决了分布式缓存和数据库中节点动态增删...
Quorum NRW是分布式系统中的一个概念,它是指在分布式系统中,选择合适的节点来存储数据。 Vector clock是分布式系统中的一个概念,它是指使用时间戳来记录数据的更新时间。 Virtual node是分布式系统中的一个概念...
Quorum/NRW机制 - **定义**: Quorum机制是指在分布式系统中,为了保持一致性而采用的一种投票机制。NRW则是指读写操作中参与节点的数量。 - **作用**: 通过调整读写操作中的参与节点数量来平衡一致性与可用性之间的...
- **Quorum NRW**:读写策略,确保数据读写时的正确性。 - **Vector Clock**:用于处理分布式系统的版本冲突。 - **Gossip协议**:通过节点之间的消息传播来同步数据,分为状态转移模型和操作转移模型。 - **...
手段篇中,作者讨论了一致性哈希、Quorum机制、NRW规则、Vector Clocks等分布式一致性算法。这些方法用于在分布式环境中保证数据的一致性。同时,他还提到了Amdahl定律和Gustafson定律,这两个定律分别用于分析并行...