servicecomb-saga omega分析
· 阅读需 2 分钟
在微服务热火朝天的时代,分布式事务变的更加急迫,那么如果解决分布式事务是一个一直以来的难题,今天我们来介绍一个保证最终一致性的分布式事务的框架servicecomb-saga。
Saga 适合长事务和跨服务业务,但一致性依赖每个正向操作都设计可靠、幂等的补偿动作。源码分析应结合一次成功与一次失败链路观察事件顺序。
alpha安装
-
下载
git clone https://github.com/apache/servicecomb-saga.git -
编译
如果使用mysql作为alpha的db,那么修改配置文件alpha/alpha-server/pom.xml在</dependencies>之前添加如下依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>mvn clean install -DskipTests -Pspring-boot-2 -
修改alpha配置文件
-
创建数据库
进入数据库命令行create database `saga` charset utf8 collate utf8_general_ci;create user 'saga'@'%' identified by 'password';grant all on saga.* to 'saga'@'%' with grant option;flush privileges;执行alpha/alpha-server/...resource下的sql文件 -
启动alpha
java -D"spring.profiles.active=mysql"-D"spring.datasource.url=jdbc:mysql://localhost:3306/saga?useSSL=false"-D"spring.datasource.username=saga"-D"spring.datasource.password=password"-D"alpha.server.port=7080"-D"server.port=7090"-jar alpha-server-0.3.0-SNAPSHOT-exec.jar >./run.log 2>&1 & -
修改应用程序配置
在Application上增加@EnableOmega,在application配置文件中增加alpha.cluster.address=localhost:7080
omega分析
这里有几个重要的类,SagaStartAspect,OmegaContext,TransactionAspect,Compensable,TransactionHandlerInterceptor
让我们看看流程图。

知识有限,如有错误之处敬请谅解。
-