跳到主要内容

servicecomb-saga omega分析

· 阅读需 2 分钟
Apache王也道长
软件开发者与技术作者

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

Saga 适合长事务和跨服务业务,但一致性依赖每个正向操作都设计可靠、幂等的补偿动作。源码分析应结合一次成功与一次失败链路观察事件顺序。

alpha安装

  1. 下载

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

    如果使用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. 创建数据库

      进入数据库命令行
      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

      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

    让我们看看流程图。

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

本文阅读量:--

总访问量 -- · 访客数 --