经常看到有朋友问:怎么做分布式事务?
的确,分布式事务的落地实践相对比较复杂,和数据库分库分表一样,很多公司采取的策略都是能不碰就不碰,因为在业务规模不庞大时,设计分布式事务要投入的精力,可能比采取人工补偿多得多。
无论如何,跳槽面试,分布式事务,依然是大厂必考必问的核心知识点。今天,我们从概念 → 实战方法论,深入浅出聊下分布式事务。
单体架构下,多个不同的业务逻辑使用的都是同一个数据源,单一事务管理器情况下,不存在事务问题。
而在分布式或者微服务架构中,每个服务都有自己的数据源,使用不同事务管理器,如果两个服务执行成功之后出现了异常,A 服务的事务会回滚,但是 B 服务的事务不会回滚,分布式事务就出现了。
画外音:单体架构偶尔也会存在多数据源事务管理,解决方案通常采用 jta+ atominc。
一般分为 6 种。
先回答3个概念:
软状态:允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。
最终一致性:指数据在多个副本之间能否保持一致的特性,也是分布式事务要解决的终极问题。
5种:
Seata 是阿里设计用来专门解决分布式事务的框架,未来可能会成为主流。
Seata 和 LCN 的思想相近,只不过 LCN 中采用的是假关闭,两者的区别是出错时,LCN 会发生死锁,而 Seata 不会,但 Seata 会脏读。
TCC、Seata 等分布式事务方案如何落地实践?每种方案分别更适合什么业务?如何设计高可用、高并发的分布式事务架构?
针对这些实践难点特别向你推荐前58技术委员会主席孙玄打造的《百万年薪架构师必备能力—亿级企业分布式事务多场景多维度架构设计的全攻略实践》在线专栏课。3 大篇章 12 模块干货课程,年中限时特价 0.99。