没有主节点,允许任何节点接受来自客户端的写请求。

实现方式

  1. 客户端直接将其写请求发送到多节点
  2. 一个协调者代表客户端进行写入,与主节点的数据库不同,协调者并不负责写入顺序的维护。

节点失效时写入数据库

客户端将写请求并行发送给三个节点,两个可用节点接受写请求,而不可用副本则无法处理该请求。

现在失效的节点重新上线,客户端可能会读取到旧的值。

为了解决这个问题客户端并行的向多个节点发送读请求,并通过版本号来确定哪个值更新。

读修复与反熵

  • 读修复;客户端并行读取多个节点,检测到过期的返回值,然后用新的返回值写入到返回旧值的副本。
  • 反熵过程:后台不断查找副本之间的差异,将任何缺少的数据从一个节点复制到另一个节点。不保证特定顺序的复制写入,并且会引入明显的复制滞后问题

Quorum 一致性

检测并发写