SpringCloud 面试题, Seata 的事务回滚是怎么实现的?
SpringCloud 面试题, Seata 的事务回滚是怎么实现的?
QA
Step 1
Q:: 什么是Spring Cloud?Spring Cloud的核心组件有哪些?
A:: Spring Cloud是基于Spring Boot构建的微服务开发工具包。它提供了一系列解决分布式系统开发中常见问题的工具和框架,例如服务发现、负载均衡、熔断器、服务网关、配置管理等。Spring Cloud的核心组件包括:Spring Cloud Netflix(Eureka、Ribbon、Hystrix、Zuul等)、Spring Cloud Config、Spring Cloud Bus、Spring Cloud Sleuth、Spring Cloud Gateway等。
Step 2
Q:: Seata是什么?它在微服务架构中起什么作用?
A:: Seata是一款开源的分布式事务解决方案,主要用于解决微服务架构下的分布式事务问题。在微服务环境中,一个业务流程通常会涉及多个服务,如果这些服务之间的操作需要保证数据一致性,就需要使用分布式事务。Seata通过全局事务协调器(TC)、事务管理器(TM)和资源管理器(RM)来实现分布式事务的管理和回滚。
Step 3
Q:: Seata的事务回滚是怎么实现的?
A:: Seata的事务回滚是通过记录每个参与者的before image和after image来实现的。在事务提交失败或异常时,Seata会使用这些记录来回滚数据。具体来说,当事务发起时,各个参与的微服务会先执行业务操作,但不立即提交,而是将before image(操作前的数据)和after image(操作后的数据)保存起来。一旦事务发起者决定回滚,Seata会利用before image将数据恢复到操作前的状态,从而实现全局回滚。
Step 4
Q:: 什么是AT模式?Seata的AT模式与其他模式有何区别?
A:: AT模式(Automatic Transaction)是Seata中最常用的一种事务模式。它通过对业务数据的SQL操作进行代理,自动记录before image和after image,并在提交时生成UNDO LOG以支持回滚。相比于TCC模式(Try-Confirm-
Cancel)和Saga模式,AT模式更适合传统的关系型数据库事务,而TCC模式更适合需要精细化控制的复杂业务场景,Saga模式则适合长时间执行的异步事务。
Step 5
Q:: Spring Cloud Gateway与Zuul的区别是什么?
A:: Spring Cloud Gateway和Zuul都是Spring Cloud中的API网关解决方案。Zuul是Netflix开源的项目,最初是Spring Cloud的默认网关选择,但Zuul 1.x版本是基于Servlet的,存在性能瓶颈。而Spring Cloud Gateway是Spring团队基于Spring 5.0、Spring Boot 2.0
和Project Reactor构建的,支持异步非阻塞模型,性能更优,并且更现代化,支持更多的功能,如WebSocket、路径重写、限流等。