Seate控制分布式事务:
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
官网:http://seata.io/zh-cn/
可以查看帮助文档http://seata.io/zh-cn/docs/overview/what-is-seata.html
1、每一个微服务先必须创建一个表 undo_log
2、安装事务协调器:seate-server
3、整合
1)导入依赖 spring-cloud-starter-alibaba-seate 引用的是seate-all-0.7.1版本
2)解压并启动seate-server
registry.conf 注册中心配置:修改registry type=nacos
file.conf
3) 所有想要用到分布式事务的微服务使用seate DataSourceProxy代理自己的数据源
4)每个微服务都必须导入
registry.conf
file.conf 修改 vgroup_mapping.{application.name}-fescar-service-group="default"
5) 启动测试分布式事务
6)给分布式大失误的入口标注@GlobalTransactional
7) 给每一个远程的小事务 用@Transactional 标注
以上我们使用的是Seate的AT模式,也就是2PC模式的一个演变。我们看Seate的一个实现方式,发现中间加了很多的锁机制,这就限制了它不太适合高并发的应用场景。比较适合并发量很低的使用场景,比如:后台管理中商品的添加,商品添加过程中处理积分,代金券等其他关联的远程服务的一个场景。