LCN分布式使用DEMO

一、为了使分布式服务彻底表现,笔者采用8台虚拟机,docker部署的方式来测试demo,demo使用的是spring cloud。读者可先到github上拉取LCN源码。
1、四台数据库
在这里插入图片描述
四个服务器依次用docker启动四个mysql数据库
在这里插入图片描述
下面四台服务器为部署应用准备
在这里插入图片描述
采用eureka做为服务注册跟发现,部署在125服务器,下面是eureka的配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试应用分三个服务,消费服务(microservice-consumer-user),两个提供服务(microservice-provider-Two、microservice-provider-Thrid),没有业务逻辑,只是对提供的两个服务做数据库DDL操作,测试如果两个服务的事务是否成功。
注:这里是用docker部署的,spring-cloud是默认按主机名来查找服务的,docker的主机名是找不到注册到eureka上服务的。所以注册到eureka的服务需要采用IP注册方式。在所有的要注册到eureka的服务端都增加如下配置,如本案中的三个服务的配置文件中都要增加各自的配置。
在这里插入图片描述
在这里插入图片描述
点击链接会看地址栏如下,说明使用IP的配置生效
在这里插入图片描述
关于spring-cloud方面的知识这里不提到,下面是microservice-consumer-user服务的调用逻辑
在这里插入图片描述
在这里插入图片描述
要使用LCN分布式框架需要在服务中加如下两个jar文件
在这里插入图片描述
在上面两处增加@EnableDistributedTransaction、@LcnTransaction注解。如上面它microservice-provider-Two、microservice-provider-Thrid两个服务,所以那两个服务被调的方法上也增加这两个注解,以说明这服务是支持LCN事务,被调方法上增加@LcnTransaction说明这个方法受分布式事务管理。 此外所有开启@EnableDistributedTransaction都会去连接一个事务管理服务,所以各个服务的配置文件还要增加如下
在这里插入图片描述
启动事务管理服务,注:docker部署事务管理节点,事务管理节点的IP配置为0.0.0.0
在这里插入图片描述
事务管理节点的数据库用的是13,redis服务器用125,事务管理节点也部署在125上
在这里插入图片描述
事务管理服务启动后,把各个服务都启动。
打开事务管理服务节点的后台管理网址:http://xxx.xxx.xxx.xxx:7970/
密码为codingapi
在这里插入图片描述
在这里插入图片描述
说明这三个服务已经受LCN事务服务所管理。
在这里插入图片描述
笔者microservice-provider-Two服务的数据库配置如下:
在这里插入图片描述
在这里插入图片描述
调用该服务就是往表里写入一条数据。
以下是另外一个提供服务的配置
在这里插入图片描述
在这里插入图片描述
开始我们的测试,两个数据库开始都没有数据
在这里插入图片描述
在这里插入图片描述
浏览器地址栏输入服务消费的URL
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在修改代码让后调用的服务(microservice-provider-Thrid)报异常
在这里插入图片描述
为了数据不影响,清空两个数据库表的数据
在这里插入图片描述
再查两个数据库表的数据,发现两个数据库的表都没有数据,说明事务是一致的。

猜你喜欢

转载自blog.csdn.net/u013326684/article/details/102574658