当前位置:网站首页>数据复制系统设计(2)-同步复制与异步复制
数据复制系统设计(2)-同步复制与异步复制
2022-08-02 03:37:00 【JavaEdge.】
复制的重要可选项:
同步复制,synchronously
异步复制,asynchronously
关系型DB 中,这通常是个可配置项,而其他系统通常是硬性指定或只能二选一。
如图-1案例,网站用户更新个人头像图片的流程:
- 客户向主节点发送更新请求
- 主节点收到请求。某刻,主节点又将数据更新转发给从节点
- 最后,主节点通知客户更新完成
图-2显示了系统各模块间通信情况。请求或响应标记为粗箭头。

图-2中:
- 从节点1是同步复制:主节点需等待直到从节点确认完成写,然后才通知用户报告完成,井将最新写入对其他客户端可见
- 从节点2异步复制:主节点发送完消息后立即返回,不等待从节点2完成确认
从节点2接收复制日志前存在一段长延迟。复制一般速度很快,大多DB系统能在1s内完成所有从节点更新。但并不保证复制耗时多久。有时,从节点可能落后主节点几min或更久,如从节点正在故障恢复或系统已接近最大设计上限或节点间存在的网络问题。
同步复制的
优点
一旦向用户确认,从节点可明确保证完成和主节点的更新同步,数据已处最新版本。若主节点故障,可确信这些数据仍能在从节点找到。
缺点
若同步的从节点无响应(比如它已崩溃或网络故障等原因),主节点的写操作就不能视为成功。主节点会阻塞后续所有写操作,直到同步副本再次可用确认完成。
因此,将所有从节点都设置为同步复制不切实际:任一同步节点的中断都会导致整个系统更新停滞。实践时,若DB启用同步复制,意味着其中某一从节点是同步的,而其他节点是异步模式。一旦同步的从节点不可用或性能降低,则将另一个异步的从节点提升为同步模式。这就保证至少有2个节点(主节点和一个同步从节点)拥有最新的数据副本。 这种配置有时也称为半同步(semi-synchronous)。
主从复制经常会被配置为全异步模式。 此时若主节点失效且不可恢复,则任何尚未复制到从节点的写请求都会丢失。那么,即使已向客户端确认成功,写入也不能保证数据的持久化。但全异步的优点是:不管从节点数据多么滞后,主节点也能总是继续响应写请求,系统吞吐量极高。
异步模式这种弱化的持久性听起来是个很不靠谱的trade off,但异步复制还是被广泛使用,尤其是从节点数量巨大或分布地理环境较广。
复制问题研究
异步复制系统,在主节点故障时可能丢数据。这是个严重问题,因此在保证不丢数据前提下,人们尝试各种方案提高复制性能和系统可用性。 如链式复制是同步复制的一种变体,已在一些系统(如Microsoft Azure存储)实现。
多副本一致性与共识之间密切联系(即让多个节点对数据状态达成一致)。本文主要专注于数据库实践中常用的、相对简单的复制技术方案。
边栏推荐
- 科研笔记(七) 基于路径规划和WiFi指纹定位的多目的地室内导航
- 单目3D目标检测之入门
- Deep Blue Academy - Fourteen Lectures of Visual SLAM - Chapter 4 Homework
- Django、Rest framework访问数据库获取数据
- v-bind动态绑定
- Mysql数据库入门 (基础知识点 由来 各种指令 如何运用)
- Andrew Ng's Machine Learning Series Course Notes - Chapter 18: Application Example: Image Text Recognition (Application Example: Photo OCR)
- 网络 7 层架构
- [Study Notes] How to Create an Operation and Maintenance Organizational Structure
- 拦截器Sercurity权限管理和加密方式的登录认证使用
猜你喜欢
![[Win11] PowerShell cannot activate Conda virtual environment](/img/53/464ffb5ef80ce8f6ee19e9ea96c159.png)
[Win11] PowerShell cannot activate Conda virtual environment

3D object detection dataset

Autowired注解与Resource注解的区别

关于XDR的这些问题你都了解吗?

科研笔记(八) 深度学习及其在 WiFi 人体感知中的应用(下)

Your device is corrupt. It cant‘t be trusted and may not work propely.

腾讯云+keepalived搭建云服务器主备实践

Django、Rest framework访问数据库获取数据

js平层数组转树形结构(解决数据处理后源数据篡改)

普氏分析法-MATLAB工具箱函数
随机推荐
MySQL5.7的安装编译及报错的解决方法
ICMP timestamp请求响应漏洞
Nexus 5手机使用Nexmon工具获取CSI信息
BCS演讲实录 | 未来智安CTO陈毓端精讲《XDR扩展威胁检测响应探索与实践》
三维目标检测之ROS可视化
Kubernetes中Pod对象学习笔记
this指向问题
ffmpeg推流USB到rtsp
The slave I/O thread stops because master and slave have equal MySQL server ids
七分钟深入理解——卷积神经网络(CNN)
PHP实现阿里云HMAC-SHA1签名方法封装
el-dropdown(下拉菜单)的入门学习
Plus版SBOM:流水线物料清单PBOM
webdriver封装
深蓝学院-手写VIO作业-第二章
JVM机制
Pycharm平台导入scikit-learn
单目三维目标检测之CaDDN论文阅读
MapFi论文架构整理
Your device is corrupt. It cant‘t be trusted and may not work propely.