这是我参与【第五届青训营】伴学笔记创作活动的第十三天
1. 复制的概念、动机、基本要求
复制:在多个计算机中进行数据副本的维护 动机:
- 增强性能
- 提高可用性
- 增强容错性 基本要求:
- 复制透明性:
- 对客户屏蔽多个物理拷贝的存在
- 客户仅对一个逻辑对象进行操作 一致性:
- 在不同应用中有不同强度的不一致需求
- 复制对象集合的操作必须满足应用需求
2. 系统模型
首先要有个前端来接收客户请求,通过消息传递与多个副本管理器进行通信 副本管理器接收到前端的请求之后,对副本执行原子性操作 ,然后到达一个新的确定状态
复制的整体流程: 1. 请求:前端请求 2. 协调:协调一下,保证执行的一致性(因为可能同时有多个请求) 3. 执行:副本管理器执行请求 4. 协定:就请求的执行结果达成一致,可共同决定执行或放弃 5. 响应:一个或者多个副本管理器响应前端
3. 容错服务
复制同时是系统提高容错能力的有效手段之一。 复制系统正确行为的判断标准:
- 线性化能力
- 顺序一致性
3.1
线性化能力:操作的交错执行符合对象的(单个)副本所遵循的规约;操作的交错执行序列和实际运行中的次序实时一致(更难一些) 顺序一致性:操作的交错序列符合对象的(单个)正确副本所遵循的规约;操作在交错执行中次序和每个客户应用程序执行的次序一致。(容易满足一些)
由此可以看出,顺序一致性是先定义客户的执行顺序,比较串行可行化,就本例子而言,先执行客户2事务,在执行事务1事务和上面事务执行的最后结果相同。
但是对于线性化来说,因为操作的交错序列是由客户1开始,要线性执行,只能和先执行客户1事务,再执行客户2事务的结果进行对比,会发现执行结果不一致
3.2 被动复制
当主副本管理器出现故障时,则某个备份管理器则提升为主副本管理器。 被动复制时的事件次序: 1. 请求:前端请求 2. 协调:主副本管理器按照接受次序对请求排序 3. 执行:主副本管理器依次执行请求 4. 协定:若请求为更新操作,则主副本管理器向每个备份副本管理器发送更新后的==状态==(具备线性化能力)、应答和唯一标识符。备份副本管理器返回确认。 5. 响应:主副本管理器响应前端,随即发给客户
3.3 主动复制
副本管理器地位对等,前端组播消息到副本管理器组 主动复制时的事件次序
1.请求:前端使用全序、可靠的组播原语将请求组播到副本管理器组
2.协调:组通信系统以同样的次序(全序)将请求传递到每个副本管理器
3.执行:每个副本管理器以相同的方式执行请求
4.协定:鉴于组播的传递语义,不需要该阶段
5.响应
- 每个副本管理器将应答发送给前端,接收的应答数量取决于故障模型的假设和组播算法
- 前端将应答发送给客户
只具备顺序一致性,不具备线性化能力:因为全排序未必和客户发出这些请求的实时次序相同。
4. 复制数据上的事务
服务器崩溃和网络分区时的复制方案
- 服务器崩溃—本地验证
- 网络分区—乐观方法、悲观方法