没有主节点,允许任何节点接受来自客户端的写请求。
实现方式
- 客户端直接将其写请求发送到多节点
- 一个协调者代表客户端进行写入,与主节点的数据库不同,协调者并不负责写入顺序的维护。
节点失效时写入数据库
客户端将写请求并行发送给三个节点,两个可用节点接受写请求,而不可用副本则无法处理该请求。
现在失效的节点重新上线,客户端可能会读取到旧的值。
为了解决这个问题客户端并行的向多个节点发送读请求,并通过版本号来确定哪个值更新。
读修复与反熵
- 读修复;客户端并行读取多个节点,检测到过期的返回值,然后用新的返回值写入到返回旧值的副本。
- 反熵过程:后台不断查找副本之间的差异,将任何缺少的数据从一个节点复制到另一个节点。不保证特定顺序的复制写入,并且会引入明显的复制滞后问题。