异步调用等待期间数据被篡改导致数据不一致问题!

2020-09-10 09:06发布

问题:

本小白在学习关于分布式事务相关内容,关于最终一致性解决方案,有点疑问,由于采用消息队列去处理,所以在消息挤压过多情况下下游可能延时一段时间,假如这一段时间内有同步操作对目标数据进行了操作,就会导致数据紊乱了吧,比如:

  1. 05:10:30秒有一个异步操作 放在了队列里 业务是修改A用户的姓名为'张三',由于队列任务挤压,大约可能的执行时间是05:10:40秒。

  2. 05:10:35秒有个同步的操作修改了A用户姓名为'李四',修改成功,然而05:10:40后由于执行了异步任务,A用户姓名又变为了'张三'。
    这就很迷了。

     想了想这貌似是我分布式事务这里想出的,但是这貌似只是个异步处理的问题,和分布式事务无关,只要异步就会有这个问题,而且我也没找到关于这个问题的一些处理,貌似也没有处理方法,除非同步,小白想问问是酱紫嘛?

回答1:

很简单实现啊,同步操作换个逻辑把要改的内容放在异步的使用的队列中就好了,如果你异步加锁就毫无意义做异步,干脆同步和异步共用一个队列



回答2:

没太看清楚你的逻辑。

消息队列就是 把 任务(或者数据)串行化,既然是串行化,哪里还有所谓并发,就是挨个挨个执行,也就不存在所谓的絮乱。



回答3:

所有的操作都做成异步的,不存在同步操作了