
以下是一份关于 Seata 的详细总结,涵盖核心功能、实现原理、应用实践及进阶指南,旨在为初学者提供系统学习路径,并为有经验者提供快速查询的参考笔记。初学者可掌握 Seata 的核心原理与应用方法,有经验者可快速查阅配置与调优技巧。
undo_log)。
undo_log,释放锁。
undo_log 生成反向 SQL 回滚数据。
@GlobalTransactional),发起全局提交或回滚。
undo_log 并注册分支事务到 TC。
undo_log)。
lock_table),TC 统一管理锁冲突。
结构:
CREATE TABLE undo_log (
id BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
branch_id BIGINT(20) NOT NULL,
xid VARCHAR(100) NOT NULL,
context VARCHAR(128) NOT NULL,
rollback_info LONGBLOB NOT NULL,
log_status INT(11) NOT NULL,
log_created DATETIME NOT NULL,
log_modified DATETIME NOT NULL
);作用: 记录数据修改前后的快照,用于回滚时生成反向 SQL。
依赖配置:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>配置文件:
# application.yml
seata:
enabled: true
application-id: order-service # 应用名称
tx-service-group: my_tx_group # 事务组名称(需与 TC 配置一致)
registry: # 注册中心配置(以 Nacos 为例)
type: nacos
nacos:
server-addr: localhost:8848
namespace: dev
config: # 配置中心(以 Nacos 为例)
type: nacos
nacos:
server-addr: localhost:8848全局事务注解:
@Service
public class OrderService {
@GlobalTransactional // 开启全局事务
public void createOrder(Order order) {
// 1. 扣减库存(调用库存服务)
// 2. 创建订单(本地事务)
// 3. 扣减账户余额(调用账户服务)
}
}下载与配置:
conf/registry.conf,配置注册中心(如 Nacos)。
启动命令:
sh bin/seata-server.sh -p 8091 -h 127.0.0.1undo_log 表。
global_table、branch_table、lock_table)。
undo_log。
server.session.branchAsyncQueueSize 提升并发处理能力。
方案 | 一致性级别 | 业务侵入性 | 适用场景 |
|---|---|---|---|
Seata AT | 最终一致性 | 低 | 简单分布式事务 |
Seata TCC | 强一致性 | 高 | 资金交易等高要求场景 |
本地消息表 | 最终一致性 | 中 | 异步消息补偿场景 |
Saga | 最终一致性 | 中 | 长事务流程 |
通过本文,初学者可掌握 Seata 的核心原理与应用方法,有经验者可快速查阅配置与调优技巧。建议结合电商订单、库存扣减等场景实战演练,并深入源码理解其设计思想!