多主节点数据复制架构导致的数据错乱

背景

为了是数据更靠近用户位置,一般大公司会在不同的地理位置部署多个数据中心,然而每个数据中心内的数据需要复制到其他的数据中心,一般会有使用多主节点的数据部署方式

多主节点数据分布架构

在这里插入图片描述
无论采取哪种具体的多主数据库系统,都需要把一个节点的数据同步到另一个节点,这里最明显会导致的问题是写冲突导致的数据不一致问题
在这里插入图片描述
从上图可以看出这种架构导致的最常见的写冲突导致的数据库状态不一致问题,
除此之外还有其他比如
1.读回溯问题,也即某个用户从某个副本读到了数据的最新值,由于复制滞后的问题,当这个用户从另外的副本读数据时,那个副本还没有更新到最新值,导致读取到了旧值,用户会很迷惑
2.写后读问题,当用户写到某个副本后,读取时从其他副本获取数据,而那个副本还没有同步到最新数据时,就会发生写的数据查询时找不到数据的问题.
3.数据因果关系错乱:插入/更新数据在某个副本节点上变成先更新后才是插入的,插入/删除数据在某个副本节点上变成了先删除后才插入数据.

解决方案

1.对于采用多主复制方案架构来说,最好的解决冲突的方式是避免产生数据冲突,也就是每个数据中心单独处理某个用户区域的数据,互不相关,互相之间也没有数据依赖,如果能做到数据的完全隔离,这是最理想和最好的冲突解决方式
2.对于多个数据写入冲突采用最后写入者获胜,也即LWW,但是如果是采用时间戳来确定先后顺序的话,由于不同的副本时间戳不完全一致,所以这种方式还是有概率导致数据不一致的问题
3.没法解决的数据因果关系顺序错乱问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值