PMP证书值不值得考?从备考到价值全解析
2026/10/10 8:33:55
Seata(Simple Extensible Autonomous Transaction)是阿里巴巴开源的分布式事务解决方案。它的架构设计旨在通过最小化业务侵入来解决微服务架构下的数据一致性问题。
以下是对Seata框架三种角色以及部署方式的详细解析:
Seata 的架构模型主要由TC(事务协调者)、TM(事务管理器)和RM(资源管理器)这三个核心角色组成。这三个角色分别承担了分布式事务生命周期中的不同职责。
Begin、PhaseOne_Commit、PhaseOne_Rollback等)。global_table和branch_table),用于事务的恢复和补偿。@GlobalTransactional注解)。branch_register)。lock_table)的管理,防止脏写。Seata 的部署主要分为Server端(TC)的部署和Client端(TM/RM)的集成。以下是详细的部署步骤与方案:
TC是Seata的核心服务,需要单独部署。
方式一:本地/服务器部署
store.mode=db,并配置MySQL连接信息(store.db.datasource)。file模式;但file模式不支持高可用集群。seata库。script目录下的SQL脚本(如db.sql),创建global_table、branch_table、lock_table、undo_log等表。sh ./bin/seata-server.sh。bin\seata-server.bat。-h:指定服务注册到注册中心的IP(默认自动获取)。-p:指定服务端口(默认8091)。-m:指定事务日志存储模式(如db)。方式二:容器化部署(Docker/Kubernetes)
seataio/seata-server镜像。可以通过docker run -d -p 8091:8091 -v /path/to/config:/seata-server/resources seataio/seata-server启动。registry.conf和file.conf,通过Secret注入数据库密码。TC部署完成后,业务服务需要通过集成Seata Client来扮演TM和RM角色。
依赖引入:
spring-cloud-starter-alibaba-seata。seata-spring-boot-starter。核心配置(application.yml):
spring:cloud:alibaba:seata:tx-service-group:my_test_tx_group# 事务组名称,TC通过此名称来区分不同业务service:vgroup-mapping:my_test_tx_group:default# 将事务组映射到默认的TC分组(default)grouplist:default:127.0.0.1:8091# 指定TC服务的地址(如果是集群模式,使用Nacos注册中心则无需手动指定)registry:type:nacosnacos:server-addr:127.0.0.1:8848# 注册中心地址(推荐使用Nacos)业务代码:
@GlobalTransactional注解,即可将当前服务扮演为TM。DataSourceProxy),在底层扮演RM角色,负责捕获Undo Log(AT模式)或锁表(AT模式)。my_test_tx_group是业务服务的唯一标识,TC会根据这个标识来区分不同业务的事务日志。