wenxuan
2022-03-27
通过垂直分片的方式解决多主复制可能遇到的问题: 假设主节点 1 拥有字段 A,主节点 2 拥有字段 B。在某一时刻,主节点 A 上要对记录的两个字段进行修改 (a0, b0) => (a1, b1),主节点 2 上也要对该记录进行修改 (a0, b0) => (a2, b2)。由于节点 1 需要把对 B 的修改转发到节点 2, 节点 2 需要把对 A 的修改转发到节点 1,A 和 B 最终至少面临 4 种可能的状态组合: (a1, b1), (a1, b2), (a2, b1), (a2, b2),很难确定究哪一种组合是正确的。
作者回复: 👍👍
6
不吃辣👾
2022-04-05
思考题:类似多线程中对两个有约束条件的变量同时修改一样,造成约束条件失效。这里约束条件是同一行数据是原子不可分割的整体。老师,那遇到这种情况,多线程用锁或者final解决的,在垂直分片的多主复制用的什么办法解决的呢?如果用分布式锁,是不是依然退化成主从复制了。难道增加自增id维度,小id的不能覆盖大id。期待老师回复。
作者回复: 对的,多主复制的冲突是没有办法避免的,使用自增 ID 处理冲突是可以的,不过自增 ID 不能由各主节点生成,需要全局的自增 ID。
1
毛哥
2022-03-24
ddia
4
X
2023-03-10
来自北京
系统的每一次新增,修改都分配唯一id并且id是有绝对时序的,复制时保证时序是不是就没问题了?
HappyHasson
2022-09-22
来自广东
多主复制 在现实中 文中提供的方案基本都不能用,还得paxos raft才有用。。
绘世浮夸 つ
2022-05-12
老师能不能讲讲自定义冲突目前都有哪些方法呢