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