一次并发的update引发的血案 ----rocketMQ 多实例消费导致的错误。

事故现场:       系统引入了rocketMQ,用来对某些订单进行状态的更新操作。部署的时候2台消费实例。在测试环境中只考虑了用乐观锁来控制并发,但在生产中,乐观锁并无法保证数据的正确性。   具体的消费情况参考上图。 假定消息A和消息B 都是为了更新表中的同一行数据,更新逻辑是,拿到消息A 进行更新,拿到消息B 在更新一次。最终得到的结果为,消息B。 生产环境中,消息A\B 有可能同时上传。
相关文章
相关标签/搜索