1、一个简单的入门例子

本节我们将以一个简单的例子展示如何使用saga整合分布式事务,该例子是一个预定服务,使用spring实现,包括酒店预定和租车预定,分为3个模块:

    1. booking:
      预定服务的入口,booking通过调用hotel和car的服务来提供整套预定服务
    2. hotel:
      提供hotel服务预定和查询功能
    3. car: 
      提供car服务预定和查询功能
  1. 前置准备:

    1. JDK,推荐1.8

    2. Idea集成开发环境

    3. Maven3

    4. git

    5. docker,编译阶段需要用到docker,所以需要安装docker并启动docker服务

  2. 下载源码

    通过以下命令把源码clone到本地

    git clone https://github.com/apache/incubator-servicecomb-saga.git


  3. 编译

    1、进入incubator-servicecomb-saga目录,执行以下命令:

    mvn clean install -DskipTests

  4. 运行

    1、通过Idea打开incubator-servicecomb-saga项目

    2、通过Idea打开saga-demo项目

    3、通过以下命令启动postgres数据库:

        docker run -d -e "POSTGRES_DB=saga" -e "POSTGRES_USER=saga" -e "POSTGRES_PASSWORD=password" -p 5432:5432 postgres

    4、启动alpha:

        1、在incubator-servicecomb-saga项目中,alpha的启动类:org.apache.servicecomb.saga.alpha.server.AlphaApplication

        2、配置vm参数,-Dspring.profiles.active=prd -D"spring.datasource.url=jdbc:postgresql://localhost:5432/saga?useSSL=false"

        3、运行AlphaApplication

    5、启动booking服务

        1、在saga-demo中,启动类:org.apache.servicecomb.saga.demo.pack.booking.Application

        2、配置vm参数,-Dserver.port=8083 -Dalpha.cluster.address=localhost:8080 -Dcar.service.address=http://localhost:8082 -Dhotel.service.address=http://localhost:8081

        3、运行Application

    6、启动hotel服务

        1、在saga-demo中,启动类:org.apache.servicecomb.saga.demo.pack.hotel.Application

        2、配置vm参数,-Dserver.port=8081 -Dalpha.cluster.address=localhost:8080

        3、运行Application

    7、启动car服务

        1、在saga-demo中,启动类:org.apache.servicecomb.saga.demo.pack.car.Application

        2、配置vm参数,-Dserver.port=8082 -Dalpha.cluster.address=localhost:8080

        3、运行Application

    8、booking web服务控制台

        http://localhost:8083,浏览器打开这个网址,即可看到booking页面,在这里,你可以预定服务,包括预定成功、预定失败两种场景

2、代码结构介绍:


4、其他资料


https://github.com/apache/incubator-servicecomb-saga/blob/master/README_ZH.md

  • No labels