多主复制下处理写冲突(1)-同步与异步冲突检测及避免冲突

简介: 多主复制的最大问题:可能发生写冲突,这是必须要解决的。

多主复制的最大问题:可能发生写冲突,这是必须要解决的。


如两个用户同时编辑wiki,如图-7:


User 1将页面标题从A-》B

且User 2同时将标题从A-》C

每个用户的更改都成功提交到本地主节点。但异步复制到对方时,发现存在冲突。正常的主从复制则无此问题。

11.png



3.2.1 同步、异步冲突检测

若为主从复制DB,第二个写请求将:


被阻塞直到第一个写完成

或被中止,强制用户必须重试

而多主节点复制时,这两个写都成功,且只能在稍后时间点才能异步检测到冲突,那时再要求用户解决冲突,为时已晚!


理论上能做到同步冲突检测:等待写请求完成对所有副本的同步,再通知用户写成功。但这就失去多主的优点:允许每个主节点独立接受写请求。所以,若确需同步冲突检测,应考虑使用单主节点的主从复制!


3.2.2 避免冲突

处理冲突的最理想策略:避免它们。若应用层能保证对特定记录的所有写请求都通过同一主节点,那就不存在冲突。实践中,由于很多主节点复制模型所实现的冲突解决方案很辣鸡,因此直接避免冲突才是推荐方案。


若用户需编辑自己的数据,可确保特定用户的请求始终路由到特定IDC,并使用该IDC的主节点读、写。不同用户可能对应不同主IDC(如CDN),但用户角度,这基本等价于主从复制模型。


但有时可能需更改事先指定的主节点,可能因为:


IDC故障,需将流量重新路由到另一个IDC

或用户已漫游到另一个位置,接近了不同IDC

此时,避免冲突的方案失效,必须要有方案应对不同主节点同时写入的可能。

目录
相关文章
|
8月前
|
监控 NoSQL Redis
RedisShake如何处理数据同步过程中的冲突和一致性问题
RedisShake保障数据同步一致性,支持全量和增量同步,处理并发冲突(利用乐观锁机制),并进行数据校验。遇到故障能自动恢复和重试,保证不间断同步。同时,提供监控和日志功能,便于识别和解决问题,确保数据完整性。
243 0
|
8月前
|
数据库
异步复制与同步复制结合
异步复制与同步复制结合
106 4
|
8月前
|
数据采集 关系型数据库 MySQL
dts同步问题之同步冲突
dts同步问题之同步冲突
192 5
|
8月前
|
SQL 关系型数据库 分布式数据库
PolarDB for PostgreSQL逻辑复制问题之逻辑复制冲突如何解决
PolarDB for PostgreSQL是基于PostgreSQL开发的一款云原生关系型数据库服务,它提供了高性能、高可用性和弹性扩展的特性;本合集将围绕PolarDB(pg)的部署、管理和优化提供指导,以及常见问题的排查和解决办法。
|
关系型数据库 MySQL 数据库
多主复制下处理写冲突(4)-多主复制拓扑
复制的拓扑结构描述了写请求从一个节点传播到另一个节点的通信路径。若有两个主节点,如图-7,只有一个合理拓扑结构:M1必须把他所有的写同步到M2,反之亦然。当有两个以上M,各种不同拓扑都可能的。如图-8说明了一些例子。
130 0
多主复制下处理写冲突(4)-多主复制拓扑
|
监控 关系型数据库 MySQL
如何避免主从不同步
如何避免主从不同步
119 0
|
算法 开发工具 git
多主复制下处理写冲突(3)-收敛至一致的状态及自定义冲突解决逻辑
主从复制模型的数据更新符合顺序性原则:若同一字段有多个更新,则最后一个写操作决定该字段的终值。
143 0
|
存储 数据库
数据复制系统设计(2)-同步复制与异步复制
复制的重要可选项: 同步复制,synchronously 异步复制,asynchronously
203 0
|
关系型数据库 MySQL 数据库
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
332 0
|
安全 关系型数据库 MySQL
为什么延迟复制适用于备库数据的紧急恢复?底层原理是什么?
为什么延迟复制适用于备库数据的紧急恢复?底层原理是什么?
127 0