1、一个简单的入门例子
本节我们将以一个简单的例子展示如何使用saga整合分布式事务,该例子是一个预定服务,使用spring实现,包括酒店预定和租车预定,分为3个模块:
- booking:
预定服务的入口,booking通过调用hotel和car的服务来提供整套预定服务 - hotel:
提供hotel服务预定和查询功能 - car:
提供car服务预定和查询功能
- booking:
前置准备:
1. JDK,推荐1.8
2. Idea集成开发环境
3. Maven3
4. git
5. docker,编译阶段需要用到docker,所以需要安装docker并启动docker服务
下载源码
通过以下命令把源码clone到本地
git clone https://github.com/apache/incubator-servicecomb-saga.git
编译
1、进入incubator-servicecomb-saga目录,执行以下命令:
mvn clean install -DskipTests
运行
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