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