中心化副本控制协议:primary-secondary协议



1.数据更新都由primary节点协调完成

2.外部节点将更新操作发给primary节点

3.primary节点进行并发控制即确定并发更新操作的先后顺序

4.primary节点将更新操作发送给secondary节点

5.primary根据secondary节点的完成情况决定更新是否成功并将结果返回外部节点

与数据更新流程类似,读取方式也与一致性高度相关。使用primary-secondary比较困难的是实现强一致性。实现强一致性一般有如下几个思路:

1.始终只读primary副本的数据

2.由primary控制节点secondary节点的可用性。

3.基于Quorum机制

primary副本的确定通常由原信息管理,由专门的元数据服务器维护,执行更新操作时,首先查询元数据服务器获取副本的primary信息,从而进一步执行数据更新流程。

primary副本的切换通常可以使用lease机制来完成。

数据同步是因为primary副本可能会存在于secondary副本不一致的问题。通常有如下三种形式:

1.由于网络分化等异常,secondary上的数据落后于primary上的数据。—— redo primary副本上的操作日志。

2.在某些协议下,secondary上的数据有可能是脏数据,需要被丢弃。—— undo日志的方法删除脏数据

3.secondary是一个新增加的副本,完全没有数据,需要从其他副本上拷贝数据。—— 使用primary副本的snapshot(快照)功能

[1]刘杰,分布式系统原理介绍

相关内容