这是我参与「第四届青训营 」笔记创作活动的第2天,我们队今天主要学习探讨内容为分布式存储系统中数据复制机制。
一、数据复制中的基本问题 实现数据多副本复制要解决的基本问题: 1、数据在不断更新时如何保证各个副本的数据是一致的? 2、如何选择存储给定数据各个副本的物理节点? 3、访问数据时如何找到存储该数据副本的物理节点?
二、常用的复制机制极其分类 1、基于领导者的复制机制 基本思想:副本之一被指定为领导者,其它副本被指定为追随者,客户端要向数据存储系统地写入数据时,它必须将请求发送给领导者,领导者将新数据写入本地存储,同时也会将数据变更发送给所有追随者,当客户想要从存储数据系统读取数据时,它可以向领导者或追随者查询,该存储机制适合于读多写少的应用场景。
基于领导者的复制机制如下:
2、复制方法分类 单主复制 ◼一个领导者多个追随者。
② 优点:实现相对简单。大多数应用场景都是读多写少。
③ 缺点:主库即是性能瓶颈,又是单点故障节点(Single point of failure)
④ 为提高容错性,自动将某个从库切换为主库时会面临脑裂问题。
◼ 多主复制:
① 系统中有多个主库接受写入操作。每个主库都将该数据更改转发给所有
其他节点。每个领导者同时扮演其他领导者的追随者。
② 应用场景:多数据中心之间的复制;协同文档编辑。
③ 优点:写入性能高。
④ 缺点:写入冲突问题、多副本一致性问题解决方案太复杂。
◼ 无主复制:
① 没有主库从库的概念。
② 客户端直接将写入请求发送到到各个副本;或者客户端将写入发送给某
个节点,由该节点充当代理节点向其他节点转发写入请求。 同步复制:
① 领导者写入自己的存储器,并且接收到所有跟随者已经成
功更新本地存储的应答后再向用户返回成功写入应答。
② 优点:副本之间的一致性好;(强一致性)
③ 缺点:写入速度慢;一个节点失效会使整体写入功能失败
◼ 异步复制:
① 领导者自己写入成功后立即向向用户返回成功应答,不等
待其他跟随者的应答消息。
② 优点:写入速度快;容错性好;
③ 缺点:保持多副本一致性复杂;(引入最终一致性概念)
◼ 混合复制:
与部分跟随者节点之间采用同步复制,另外的跟随者节点之
间采用异步复制。
同步复制时序图:
异步复制时序图
三、总结
今天我们主要学习分布式存储的复制部分,为后续项目具体实施提供了复制实现的思路及选择。