提到分布式事务的解决方案,我们能想以的是就要用到消息队列+事务补偿机制,但最终有方案落地吗?我们是不是无能为力,求有经验的同学分享下。
目前市面上有些分布式事务的产品, 比如阿里的GTS, 但是否要使用分布式事务要根据系统所处的场景判断。 如果要求强一致性并且并发量不高的情况下可以考虑使用这些分布式产品。 如果你的系统所处的是一个高并发的场景(比如TPS达到了几十万), 这个时候市面上的分布式事务产品很难满足需求的(很多分布式事务的产品强依赖业务底层的数据库, 高并发时底层数据库很容易成为瓶颈), 这个时候就不得不考虑使用消息队列+补偿机制来解决了。
2pc有性能损失,能避免就尽量避免。分布式事务能做到最终一致就好。只需要保证,从a到b的请求,a会一直重试到成功为止,b对于a的重复请求,会做一个检测,重复请求直接返回成功。满足这两条就能实现最终一致。如果因为某种原因,在指定时间内b一直无法服务,则需要人工介入,实现数据恢复。
分布式事务可以最简单的使用分布式锁来实现,比如常见的服务发现系统、缓存系统redis都有类似的实现。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。