数据复制系统设计(2)-同步复制与异步复制

简介: 复制的重要可选项:同步复制,synchronously异步复制,asynchronously

复制的重要可选项:


同步复制,synchronously


异步复制,asynchronously


关系型DB 中,这通常是个可配置项,而其他系统通常是硬性指定或只能二选一。


如图-1案例,网站用户更新个人头像图片的流程:


客户向主节点发送更新请求

主节点收到请求。某刻,主节点又将数据更新转发给从节点

最后,主节点通知客户更新完成

图-2显示了系统各模块间通信情况。请求或响应标记为粗箭头。

8.png



图-2中:


从节点1是同步复制:主节点需等待直到从节点确认完成写,然后才通知用户报告完成,井将最新写入对其他客户端可见

从节点2异步复制:主节点发送完消息后立即返回,不等待从节点2完成确认

从节点2接收复制日志前存在一段长延迟。复制一般速度很快,大多DB系统能在1s内完成所有从节点更新。但并不保证复制耗时多久。有时,从节点可能落后主节点几min或更久,如从节点正在故障恢复或系统已接近最大设计上限或节点间存在的网络问题。


同步复制的


优点


一旦向用户确认,从节点可明确保证完成和主节点的更新同步,数据已处最新版本。若主节点故障,可确信这些数据仍能在从节点找到。


缺点


若同步的从节点无响应(比如它已崩溃或网络故障等原因),主节点的写操作就不能视为成功。主节点会阻塞后续所有写操作,直到同步副本再次可用确认完成。


因此,将所有从节点都设置为同步复制不切实际:任一同步节点的中断都会导致整个系统更新停滞。实践时,若DB启用同步复制,意味着其中某一从节点是同步的,而其他节点是异步模式。一旦同步的从节点不可用或性能降低,则将另一个异步的从节点提升为同步模式。这就保证至少有2个节点(主节点和一个同步从节点)拥有最新的数据副本。 这种配置有时也称为半同步(semi-synchronous)。


主从复制经常会被配置为全异步模式。 此时若主节点失效且不可恢复,则任何尚未复制到从节点的写请求都会丢失。那么,即使已向客户端确认成功,写入也不能保证数据的持久化。但全异步的优点是:不管从节点数据多么滞后,主节点也能总是继续响应写请求,系统吞吐量极高。


异步模式这种弱化的持久性听起来是个很不靠谱的trade off,但异步复制还是被广泛使用,尤其是从节点数量巨大或分布地理环境较广。

复制问题研究

异步复制系统,在主节点故障时可能丢数据。这是个严重问题,因此在保证不丢数据前提下,人们尝试各种方案提高复制性能和系统可用性。 如链式复制是同步复制的一种变体,已在一些系统(如Microsoft Azure存储)实现。


多副本一致性与共识之间密切联系(即让多个节点对数据状态达成一致)。本文主要专注于数据库实践中常用的、相对简单的复制技术方案。


目录
相关文章
|
4月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
3月前
|
算法 Java 关系型数据库
漫谈分布式数据复制和一致性!
漫谈分布式数据复制和一致性!
|
5月前
|
存储 关系型数据库 MySQL
MySQL主从同步如何保证数据一致性?
MySQL主从同步如何保证数据一致性?
388 0
MySQL主从同步如何保证数据一致性?
|
8月前
|
算法 安全 程序员
揭秘分布式系统:日志复制如何保障数据一致性?
本文介绍了分布式系统中的日志复制技术,这是保证高可用性和数据一致性的重要手段。以Raft算法为例,文章阐述了Leader如何将客户端请求复制到Follower的日志中:Leader首先记录请求,然后通过RPC发送给Follower,等待ACK确认,必要时进行重试。当多数Follower确认后,Leader提交日志并通知Follower。文中还提到了网络分区和日志一致性等挑战,以及应对策略,如超时机制、领导选举、日志匹配和压缩。最后,强调了日志复制在面对故障时确保系统一致性和可用性的作用。
288 4
|
8月前
|
数据库
异步复制与同步复制结合
异步复制与同步复制结合
106 4
|
SQL 关系型数据库 MySQL
MySQL主从同步原理
MySQL主从同步原理
187 0
|
监控 关系型数据库 MySQL
如何避免主从不同步
如何避免主从不同步
119 0
|
CDN
多主复制下处理写冲突(1)-同步与异步冲突检测及避免冲突
多主复制的最大问题:可能发生写冲突,这是必须要解决的。
150 0
|
存储 运维 NoSQL
数据复制系统设计(3)-配置新的从节点及故障切换过程详解
1.3 配置新的从节点 有时需考虑新增一个从节点: 提高容错能力 或替换失败的副本节点
151 0
|
关系型数据库 MySQL 数据库
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
333 0