servicecomb-saga omega分析

在微服务热火朝天的时代,分布式事务变的更加急迫,那么如果解决分布式事务是一个一直以来的难题,今天我们来介绍一个保证最终一致性的分布式事务的框架servicecomb-saga。

alpha安装

  1. 下载

    1
    git clone https://github.com/apache/servicecomb-saga.git
  2. 编译

    1
    2
    3
    4
    5
    6
    7
    8
    如果使用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
  3. 修改alpha配置文件

    1. 创建数据库

      1
      2
      3
      4
      5
      6
      进入数据库命令行
      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文件
    2. 启动alpha

      1
      2
      3
      4
      5
      6
      7
      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 &
    3. 修改应用程序配置

      在Application上增加@EnableOmega,在application配置文件中增加alpha.cluster.address=localhost:7080

omega分析

这里有几个重要的类,SagaStartAspect,OmegaContext,TransactionAspect,Compensable,TransactionHandlerInterceptor

让我们看看流程图。

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