做单页购物网站用什么好,做网站总结体会,专业网站建设顾问,千万不要签劳务外包合同文章目录 1. 准备seata环境1.1. 生产环境启动seata1.2. 采用代码启动seata 2. 开始测试3. 附录3.1. 如果第一次配置seata压缩包3.2. 常见问题参考 本文是针对官方seata入门文章https://sca.aliyun.com/zh-cn/docs/2022.0.0.0/user-guide/seata/quick-start的
补充说明#xf… 文章目录 1. 准备seata环境1.1. 生产环境启动seata1.2. 采用代码启动seata 2. 开始测试3. 附录3.1. 如果第一次配置seata压缩包3.2. 常见问题参考 本文是针对官方seata入门文章https://sca.aliyun.com/zh-cn/docs/2022.0.0.0/user-guide/seata/quick-start的
补充说明补充说明补充说明如果读者在阅读官方入门文章有问题或困惑请参考本文。 seata分布式事务官方入门案例导读1实战版 seata分布式事务官方入门案例导读2实战版
1. 准备seata环境
1、启动mysql
docker start mysql_mall_learning2、启动nacos 备注如果没有设置db存储请自行设置db存储下面是作者本地配置好的nacos持久化环境所以直接启动了 /Users/apple/Documents/Work/InstallationSoftware/nacos/bin/startup.sh3、启动seata 参考资料https://sca.aliyun.com/zh-cn/docs/2022.0.0.0/user-guide/seata/quick-start 1.1. 生产环境启动seata
如果是第一次配置seata的压缩包参考附录3.1
如果不是第一次配置请直接启动 下面是作者本地配置好的seata持久化和把seata注册到nacos的环境所以直接启动了 /Users/apple/Documents/Work/seata-1.7.1/bin/seata-server.sh -h 127.0.0.1 -p 8091 -m db1.2. 采用代码启动seata
1、首先在nacos中创建nacos配置。
创建示例中 Nacos data-id: seata.properties , Group: SEATA_GROUP(seata 1.5.1 默认分组) ,导入 Nacos 配置 注意注意一定要创建group为SEATA_GROUP详细配置内容是连接中的内容 在 seata.properties 中增加示例中需要的如下事务群组配置。
service.vgroupMapping.order-service-tx-groupdefault
service.vgroupMapping.account-service-tx-groupdefault
service.vgroupMapping.business-service-tx-groupdefault
service.vgroupMapping.storage-service-tx-groupdefault把以上配置加载seata.properties的末尾 2、代码启动
回到代码spring-cloud-alibaba-example/spring-cloud-alibaba-examples/seata-example/seata-server直接启动SeataServerApplication类不出意外应该是没有报错的作者亲试。 闲话该模块其实啥都没有只有一个SeataServerApplication类和一个application.yml配置文件其实是使用了引入的seata-server.jar来启动的且基于spring boot的配置文件覆盖规则项目的application.yml覆盖了jar包中的application.yml。 2. 开始测试
在本示例中我们模拟了一个用户购买货物的场景StorageService 负责扣减库存数量OrderService 负责保存订单AccountService 负责扣减用户账户余额。
为了演示样例我们在 OrderService 和 AccountService 中 使用 Random.nextBoolean() 的方式来随机抛出异常,模拟了在服务调用时随机发生异常的场景。 多次点击小的概率会出现正常的调用大部分为异常调用请多点击几次。 如果分布式事务生效的话 那么以下等式应该成立:
用户原始金额(1000) 用户现存的金额 货物单价 (2) 订单数量 每单的货物数量(2)货物的初始数量(100) 货物的现存数量 订单数量 * 每单的货物数量(2)
3. 附录
3.1. 如果第一次配置seata压缩包 连接nacos把seata服务注册到nacos中这里是用来注册seata的 连接db把seata的数据存储在mysql中。 步骤一启动包步骤二建表(仅db) global_table、branch_table、lock_table 脚本在script/server/db/mysql.sql位置 不用file存储数据方式改用db存储数据方式 1、修改store.mode 启动包: seata–conf–application.yml修改store.mode“db或者redis” 2、修改数据库连接|redis属性配置 启动包: seata–conf–application.example.yml中附带额外配置将其db|redis相关配置复制至application.yml,进行修改store.db或store.redis相关属性。 seata:store:# support: file 、 db 、 redismode: dbdb:datasource: druiddb-type: mysqldriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatementstrueuser: rootpassword: rootmin-conn: 10max-conn: 100global-table: global_tablebranch-table: branch_tablelock-table: lock_tabledistributed-lock-table: distributed_lockquery-limit: 1000max-wait: 5000seata服务注册到nacos 从nacos中获取配置以及把自己注册到nacos中 seata:config:# support: nacos, consul, apollo, zk, etcd3type: nacosnacos:server-addr: 127.0.0.1:8848namespace:group: SEATA_GROUPusername: nacospassword: nacoscontext-path:##if use MSE Nacos with auth, mutex with username/password attribute#access-key:#secret-key:data-id: seata.propertiesregistry:# support: nacos, eureka, redis, zk, consul, etcd3, sofatype: nacosnacos:application: seata-serverserver-addr: 127.0.0.1:8848group: SEATA_GROUPnamespace:cluster: defaultusername: nacospassword: nacoscontext-path:##if use MSE Nacos with auth, mutex with username/password attribute#access-key:#secret-key:步骤五启动
cd /Users/apple/Documents/Work/seata-1.7.1/bin
# 存储用file仅仅用于本地测试
seata-server.sh -h 127.0.0.1 -p 8091 -m db3.2. 常见问题参考
问题1作者碰到在nacos添加配置文件seata.properties的group选择默认组default_group而出现测试的几个微服务报错
更正请不要用default_group而是用seata_group。