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

来源:互联网 发布:天盾数据恢复中心 编辑:程序博客网 时间:2024/06/07 13:07

副本控制协议指按特定的协议流程控制副本数据的读写行为,使得副本满足一定的可用性和一致性要求的分布式协议。副本控制协议可以分为两大类“中心化(centralized)副本控制协议”和“去中心化(decentralized)副本控制协议”。


中心化副本控制协议的基本思路:由一个中心节点协调副本数据的更新、维护副本之间的一致性。所有副本相关的控制交由中心节点完成,并发控制由中心节点完成,从而简化一个分布式并发控制问题为一个单机并发控制问题。而所谓并发控制,即多个节点同时需要修改副本数据时,需要解决“WW”,"RW"等并发冲突。其结构如图1所示。


Fig. 1 中心化副本控制

Primary-secondary协议

该协议是中心化副本控制协议中常常用到的,该协议将副本分为两大类:其中有且仅有一个副本作为primary副本,除primary意外的副本都作为secondary副本。维护primary副本的节点作为中心节点,中心节点负责维护数据的更新、并发控制、协同副本的一致性。

(1)数据更新基本流程

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

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

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

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

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

(2)数据读取方式

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

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

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

3.基于Quorum机制

(3)Primary副本的确定和切换

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

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

(4)数据同步

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

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

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

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


References:

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

0 0
原创粉丝点击