当前位置:网站首页>多主复制下处理写冲突(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
此时,冲突避免方式不再有效,必须要有方案应对不同主节点同时写入的可能。
边栏推荐
- 吴恩达机器学习系列课程笔记——第六章:逻辑回归(Logistic Regression)
- 强化学习(西瓜书第16章)思维导图
- Deep Blue Academy - 14 Lectures on Visual SLAM - Chapter 7 Homework
- Computer Basics
- ffmpeg推流USB到rtsp
- OpenCV内阈值处理方法
- The slave I/O thread stops because master and slave have equal MySQL server ids
- Location、navigator和History对象
- MapFi paper structure organization
- Zabbix删除一些大表历史数据脚本
猜你喜欢
随机推荐
ICMP timestamp请求响应漏洞
Computer Basics
吴恩达机器学习系列课程笔记——第八章:神经网络:表述(Neural Networks: Representation)
Reinforcement Learning (Chapter 16 of the Watermelon Book) Mind Map
QObject: Cannot create children for a parent that is in a different thread.
科研笔记(八) 深度学习及其在 WiFi 人体感知中的应用(上)
STM32/TMS320F2812+W5500硬软件调试总结
迭代器与生成器
位居榜首 | 未来智安荣登CCIA「2022年中国网安产业潜力之星」榜单
Research Notes (8) Deep Learning and Its Application in WiFi Human Perception (Part 2)
Research Notes (8) Deep Learning and Its Application in WiFi Human Perception (Part 1)
未来智安XDR及核心组件产品上榜《嘶吼2022网络安全产业图谱》
Win8.1下QT4.8集成开发环境的搭建
SCI writing strategy - with common English writing sentence patterns
拦截器Sercurity权限管理和加密方式的登录认证使用
ffmpeg推流USB到rtsp
webdriver封装
BOM学习
企业级的dns服务器的搭建
吴恩达机器学习系列课程笔记——第十三章:聚类(Clustering)