随着用户增长,并发请求增加以及业务越来越复杂,架构设计往往不得不由单体向分布式系统演进,而分布式事务成了影响架构落地的首要难点。
不管是社区开源的ByteTCC、LCN,还是阿里的Seata,开发者们从未停止在分布式事务上的努力,也自然成为各大企业面试必考点:
分布式事务产生的场景?
常见的分布式事务解决方案?
Saga分布式事务框架实现原理?
SpringBoot如何整合Seata?
分布式事务具体应用场景,包括以下3个:A、服务内跨数据库的事务;B、跨内部服务的事务;C、跨外部服务的事务。
不同的应用场景需要适配不同的解决方案,无论是根据CAP定理还是BASE理论,我们知道,无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。
如上图所示,分布式事务有多种解决方案。总得看来,很难做到有高一致性的同时,也有高性能,同时在实现上也有一定的难度。
我们做任何选择取舍都是平衡的艺术,在这里也给你提供一些小建议:
- 跟支付、交易打交道,优先TCC;
- 大型系统,但要求不那么严格,考虑 消息事务 或 Saga 方案;
- 单体应用,建议 XA 两阶段提交就可以了;
- 最大努力通知方案建议都加上,毕竟不可能一出问题就交给开发排查,先重试几次看能不能成功。
具体到应用落地,如何在数据库及服务层面进行部署?如何评估出业务对事务的优先级,将技术与业务结合,需要坚实的理论基础和扎实的实践经验。
这里特别分享一份阿里内网疯狂传阅的《架构解密:从分布式到微服务》
目录总览
先给大家展示出目录的内容,觉得不错的小伙伴可以继续看下去了,需要获取的小伙伴可以 点击【传送门】即可获取到!
内容总览:
- 深入理解网络
- 分布式系统的经典理论
- 深入浅析内存
需要获取的小伙伴可以 点击【传送门】即可获取这份资料哦!