最早接触 TCC-TRANSACTION 在16年,当时团队成员做了分布式事务的选型研究,可惜没有亲自参与研读代码,后边项目分布式事务的架构基本上使用了seata 和 rocket 事务消息,或者使用消息做最终一致性。
在成为架构师的学习路上,分布式事务的深入研究必不可少,以TCC-TRANSACTION 作为切入点。
#搭建dubbo tcc 项目
先上代码:
https://github.com/andycom/SpringBoot-dubbo-study/releases/tag/demo
这里代码基本上是复制官方的dubbo 代码,但是在dubbo 服务中心使用了
<dependency>
<groupId>org.mengyungroupId>
<artifactId>tcc-transaction-spring-boot-starterartifactId>
<version>2.0.0version>
dependency>
<dependency>
<groupId>org.mengyungroupId>
<artifactId>tcc-transaction-dubboartifactId>
<version>2.0.0version>
dependency>
基于springboot 的自动组装
配置文件:
spring:
profiles:
active: dev
tcc:
storage:
storage-type: remoting
domain: "TCC:DUBBO:CAPITAL"
recovery:
recovery-enabled: true
update-job-forcibly: true
registry:
registry-type: direct
cluster-name: default
direct:
server-addresses: 127.0.0.1:12332
zookeeper:
connect-string: 127.0.0.1:2181
max-retries: 4
# zookeeper:
# connect-string: 127.0.0.1:2181
# max-retries: 4
# nacos:
# server-addr: 127.0.0.1:8848
application:
name: dubboTccCapital
dubbo:
scan:
base-packages: com.fancv.tcc.captial.service.impl
protocol:
name: dubbo
port: 20882
registry:
address: zookeeper://192.168.0.23:2181
application:
id: dubboTccCapital
name: dubboTccCapital
server:
port: 7091
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.fancv.tcc.captial.dao
storage-type 可以选择 memory
如果选择了remoting 事先需要启动 官方的tcc-transaction-server 项目
官方实例直接用了内存数据库,为了方便研究,数据源我改成了mysql