首先需要理解分布式是什么,然后理解事务是什么,最后理解队列中分布式事务的处理实现。 分布式,概念存在于多个系统,区别于单体应用,采用分布式,分开部署应用,减小耦合程度,降低开发难度 事务,用来保持执行一致性,包括数据库的写入、查询等 在队列中,对分布式事务的处理,存在于多个消费者,消费同一条消息,如何保证,执行结果不会出现理论偏差。这就要求,当消费者消费消息时,要对处理做一定的实现。比如说,要改变数据库一个字段的值,那么当一个消费时消费消息,操作该值,时,要上一个悲观锁,操作完毕之后,发送消息给生产者,生产者及时改变状态。消费者再消费同一个消息,需要先查询一下,是否有人再消费,没有消费,有人的话,自动等待结果
分布式事务涉及到两阶段提交。分为预提交阶段和commit阶段。在commit阶段需要回去改消息的状态。RocketMq在这里没有使用KV存储来做。而是在commit阶段会拿到消息的offset,然后直接去找消息,修改其状态。这样的好处是设计更简单,速度更快。缺点是会产生过多的数据脏页。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。