当前位置:网站首页>多主复制下处理写冲突(1)-同步与异步冲突检测及避免冲突
多主复制下处理写冲突(1)-同步与异步冲突检测及避免冲突
2022-08-02 03:37:00 【JavaEdge.】
多主复制最大问题:可能发生写冲突,必须解决之。
如两个用户同时编辑wiki,如图-7。用户1将页面标题从A-》B,且用户2同时将标题从A-》C。每个用户的更改都成功提交到本地主节点。但当异步复制到对方时,发现存在冲突。正常的主从复制则不会出现此问题。

3.2.1 同步与异步冲突检测
若为主从复制数据库,第二个写请求将:
- 被阻塞直到第一个写完成
- 或被中止,强制用户必须重试
多主节点的复制模型下,这两个写都是成功的,且只能在稍后时间点才能异步检测到冲突,那时再要求用户解决冲突为时已晚。
理论上能做到同步冲突检测,即等待写请求完成对所有副本的同步,再通知用户写成功。但这样会失去多主的优点:允许每个主节点独立接受写请求。所以,若确实需要同步冲突检测,应考虑使用单主节点的主从复制!
3.2.2 避免冲突
处理冲突的最理想策略:避免它们,若应用层能保证对特定记录的所有写请求都通过同一主节点,就不会冲突。实践中,由于很多主节点复制模型所实现的冲突解决方案很不好,因此直接避免冲突是推荐首选方案。
如用户需编辑自己的数据,可确保特定用户的请求始终路由到特定IDC,并使用该IDC的主节点读/写。不同用户可能对应不同主数据中心(如根据用户地理位置选择),但从用户角度看,这基本等价于主从复制模型。
但有时可能需更改事先指定的主节点,可能因为:
- IDC故障,需将流量重新路由到另一个IDC
- 或可能因为用户已漫游到另一个位置,接近了不同的IDC
此时,冲突避免方式不再有效,必须要有方案应对不同主节点同时写入的可能。
边栏推荐
猜你喜欢

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

ffmpeg视频播放、格式转化、缩放等命令

SCI期刊最权威的信息查询步骤!

Pycharm平台导入scikit-learn

shell中常用的基础命令

科研笔记(六) 基于环境感知的室内路径规划方法

VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tupl

吴恩达机器学习系列课程笔记——第十六章:推荐系统(Recommender Systems)

ESP32-C5 简介:乐鑫首款双频 Wi-Fi 6 MCU

吴恩达机器学习系列课程笔记——第九章:神经网络的学习(Neural Networks: Learning)
随机推荐
对周期内时间段是否重叠进行校验
树莓派4B安装OPENCV遇到ffmpeg库版本太高的问题【后续更新】
Pycharm平台导入scikit-learn
QObject: Cannot create children for a parent that is in a different thread.
树莓派4B开机自动挂载移动硬盘,以及遇到the root account is locked问题
深蓝学院-手写VIO作业-第一章
迭代器与生成器
Jetson Nano 2GB Developer Kit Installation Instructions
jetracer_pro_2GB AI Kit系统安装使用说明
计算属性的学习
STM32/TMS320F2812+W5500硬软件调试总结
吴恩达机器学习系列课程笔记——第十四章:降维(Dimensionality Reduction)
flask简单接口实现
三维目标检测之ROS可视化
BOM学习
Reinforcement Learning (Chapter 16 of the Watermelon Book) Mind Map
MapFi paper structure organization
QT中更换OPENCV版本(3->4),以及一些宏定义的改变
科研笔记(八) 深度学习及其在 WiFi 人体感知中的应用(下)
SCI写作攻略——附带常见英语写作句式