赞
踩
AccountService | 账户余额扣减接口 |
OrderService | 订单创建接口 |
StorageService | 库存扣减接口 |
BusinessService | 用户订购商品接口 |
DubboAccountServiceStarter | 账户扣减服务启动类 |
DubboOrderServiceStarter | 订单创建服务启动类 |
DubboStorageServiceStarter | 库存扣减服务启动类 |
DubboBusinessTester | 用户订购商品启动类 |
service.vgroupMapping.my_test_tx_group 映射到相应的 Seata-Server 集群名称,然后再根据集群名称.grouplist 获取到可用服务列表。(有疑问没关系我们接着往下讲)。
配置文件属性讲解完了,剩余三个配置文件大同小异。
dubbo-order-service.xml | 生成订单配置文件 |
dubbo-business-service.xml | 客户订购配置文件 |
dubbo-storage-service.xm | 减少库存配置文件 |
sql包下是初始化的sql文件。
这里要说明很重要一点( 敲黑板),现在我们有三个库,对于每个库都必须初始化undo_log表。为什么呢,seata的AT模式都是基于对jdbc执行过程的增强实现的,在事物提交之前seata会解析你提交的sql获取执行前数据和执行后数据,然后在拼接xid和sql等信息一并存储到你当前服务的数据库中,当某一个分支事物失败了,其他事物的数据回滚完全依托于undo_log表记录的镜像前数据进行反向update实现。好至此我们详细的剖析了一下nacos这个demo项目的配置以及结构,接下来我们开始修改其中的配置文件进行启动。修改jdbc.properties中三个数据库的连接信息
修改四个xml中dubbo注册中心地址配置
registry.conf 中 registry -> type 设置为nacos 代表注册中心使用nacos,config -> type 设置为 file 代表配置中心使用本地file文件。
nacos配置:
application:对应的是seata-server启动后注册到nacos的服务名称,这个配置错误后客户端启动就会遇到常见的 无有效server
serviceAddr:nacos地址信息,端口默认8848
file.conf 中一般我们先以默认配置走,但是需要注意一个配置信息
vgroupMapping.my_test_tx_group = "default"解析一下,这是通过逻辑分组获取seata-server集群名称的配置,敲黑板,集群名称:
我nacos单台启动,默认集群名称是default,所以呢,server的集群名一定要和vgroupMapping.my_test_tx_group后面值一致。然后接着在说my_test_tx_group的事情,上面我们说了xml中配置seata的scanner的第二个参数是分组名称,xml配置中的分组名称会匹配vgroupMapping.分组名来获取集群名称。
接着我们最终启动DubboBusinessTester类,启动之前我们大约看下逻辑business在生成订单之后显示的抛出一个异常,理论上说当所有数据都变更后会回滚,那我们在这里打个断点,可以看到未回滚之前和回滚之后的数据变化。我么开启以debug方式启动DubboBusinessTester,在执行到断点后我们查看storage_tbl
库存是被扣减了,放开断点,在查看count数据发现已经恢复到100,OK我们服务运行成功。
下一个小章节我们讲述 seata-samples中spring-boot-seata,seata与spring boot整合的AT项目。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。