1.调研
最近可能要用到seata,调研一下
比较好的网上教程 springboot(springcloud、springmvc) + zookeeper 或者nacos +dubbo
nacos | https://github.com/mkyuangithub/mkyuangithub/ |
zookeeper | https://blog.csdn.net/ssyujay/article/details/105851718 |
2.集成
老项目spring-mvc是动态主从多数据源,选择master的DataSouce
原子服务,服务提供端
<!-- seata数据源-->
<bean id="productDataSourceProxy" class="io.seata.rm.datasource.DataSourceProxy">
<constructor-arg ref="masterDataSource"/>
</bean>
<bean class="io.seata.spring.annotation.GlobalTransactionScanner">
<constructor-arg value="seata-product-service"/>
<constructor-arg value="demo-tx-grp"/>
</bean>
3.简要步骤
- 启动zk or nacos
- 初始化seata 表初始化(额外的需要执行业务的undo_log)
- 修改zk_config.txt 设置到zk
- 启动seata-server
- 集成服务提供端(DataSource和GlobalTransactional),registry.conf
- 消费者集成(GlobalTransactional实例化+注解)(AT和TCC)
4.测试
测试中遇到数据一致性问题(0.9版本),原因未知可能是这边操作(重启组件),也可能是bug