当前位置: 首页 > news >正文

科技网站哪个好信誉楼线上商城小程序

科技网站哪个好,信誉楼线上商城小程序,专业做民宿的网站,营销型品牌网站建设价格目录 概述 Springcloud 整合 Seata 数据库脚本 服务依赖 Springboot 配置 代码改造 AT模式下的数据隔离 写隔离 读隔离 概述 Seata 的 AT 模式是 Seata 的默认模式#xff0c;它的原理是依赖于数据库事务#xff0c;以数据库事务保证本地事务分支特性#xff0c;结合…目录 概述 Springcloud 整合 Seata 数据库脚本 服务依赖 Springboot 配置 代码改造 AT模式下的数据隔离 写隔离 读隔离 概述 Seata 的 AT 模式是 Seata 的默认模式它的原理是依赖于数据库事务以数据库事务保证本地事务分支特性结合 Seata的 Undo 日志记录做事务补偿来实现的一种二阶段事务。总体来讲Seata 的AT模式使用起来比较简单对业务代码的侵入性比较低。 Demo 这里附上seata的学习代码demo开箱即用。包含AT/TCC/XA等模式的使用案例https://download.csdn.net/download/lmj3732018/88864802 Springcloud 整合 Seata 数据库脚本 AT 模式需要在每个本地事务分支所在的数据库中添加一个 undo_log 表用于存储本地事务分支的事务记录。 数据库脚本地址https://github.com/apache/incubator-seata/blob/v1.7.0/script/client/at/db/mysql.sql 服务依赖 Seata 的依赖版本最好参照官网推荐的版本对照否则可能出现不兼容的一些问题同时 Seata 客户端与服务端的版本也最好保持一致 POM依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId /dependency!--nacos 注册中心-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency!-- seata-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-seata/artifactId /dependency Springboot 配置 seata:application-id: ${spring.application.name}# 这个值要与服务端 service.vgroupMapping.default_tx_groupdefault 相对应服务端的值default与下面的 cluster: default 对应。tx-service-group: default_tx_groupregistry:type: nacosnacos:application: seata-serverserver-addr: 192.168.122.120:8848namespace: seata-idgroup: SEATA_GROUPusername: nacospassword: nacoscluster: defaultconfig:type: nacosnacos:server-addr: 192.168.122.120:8848namespace: seata-idgroup: SEATA_GROUPdata-id: seataServer.propertiesusername: nacospassword: nacos 代码改造 代码上的改造比较简单只需在事务发起者的接口方法上添加一个GlobalTransactional(namecreateOrder,rollbackForException.class)注解。分支事务那边则不用做任何处理 Override//TransactionalGlobalTransactional(namecreateOrder,rollbackForException.class)public Order saveOrder(OrderVo orderVo) {log.info(用户下单);log.info(当前 XID: {}, RootContext.getXID());// 保存订单Order order new Order();order.setUserId(orderVo.getUserId());order.setCommodityCode(orderVo.getCommodityCode());order.setCount(orderVo.getCount());order.setMoney(orderVo.getMoney());order.setStatus(OrderStatus.INIT.getValue());Integer saveOrderRecord orderMapper.insert(order);log.info(保存订单{}, saveOrderRecord 0 ? 成功 : 失败);//扣减库存storageFeignService.deduct(orderVo.getCommodityCode(), orderVo.getCount());if(true){throw new RuntimeException();}//扣减余额Boolean debit accountFeignService.debit(orderVo.getUserId(), orderVo.getMoney());// if(!debit){ // // 解决 feign整合sentinel降级导致Seata失效的处理 // throw new RuntimeException(账户服务异常降级了); // }//更新订单Integer updateOrderRecord orderMapper.updateOrderStatus(order.getId(),OrderStatus.SUCCESS.getValue());log.info(更新订单id:{} {}, order.getId(), updateOrderRecord 0 ? 成功 : 失败);return order;} AT模式下的数据隔离 写隔离 AT模式下通过全局锁来保证写操作的隔离性避免产生脏读。当全局事务A在操作某一条记录时会给这条记录加一个全局锁所谓的全局锁实际是指这条记录的ID当本地事务提交而全局事务没提交时。我们虽然通过直接操作数据库可以看到这条提交的数据但是当开启另一个全局事务去操作这条数据时则会先判断全局锁的存在如果存在则默认将当前事务回滚也可修改策略为不断尝试获取全局锁。 读隔离 AT模式默认情况下如果数据库的隔离级别为“读已提交”则全局事务的隔离级别为读未提交。AT模式仅仅对 带有 select  for update的语句会检查全局锁。
http://www.pierceye.com/news/806347/

相关文章:

  • 低成本做网站 白之家重庆市建设执业资格注册管理中心网站
  • 电子商务网站建设需求在别的公司做的网站可以转走吗
  • 网站流量怎么做乡1万做网站需要几个人
  • 阿里云centos7做网站怀化网站seo
  • 我做的网站怎样被百度收录易语言 做网站mysql
  • 花店网站模板免费下载9个做简历的网站
  • 东港区网站制作seo推广模式是什么
  • 用织梦做网站能练技术吗广州专业网络推广公司
  • 下载ppt模板免费的网站在线做头像网站
  • 网络推广怎么免费做网站内部优化的方法
  • 沧州wap网站制作哈尔滨建设网证件查询
  • 一键查询注册过的网站快速排名教程
  • 响应式模板网站泰安招聘信息最新招聘2021
  • 信阳市住房和城乡建设厅网站wordpress加载速度
  • 建设本地网站 配置iis百度h5在线制作免费
  • 网站托管服务器做外贸去哪些网站找老外
  • 一个空间可以做几个网站微信公众号 做不了微网站
  • 嘉兴seo外包公司黄骅seo
  • 做网站录入和查询需求网络推广公司口碑
  • 招远专业做网站公司wordpress获取qq昵称 头像
  • 河北网站建设业务服务称赞的项目管理平台
  • 用jsp做的网站首页如何建立一个网站来卖东西
  • 外贸型网站建设的基本流程宣传型网站建设
  • 济南手机网站开发公司贵阳网络推广公司
  • 网站开发需求模板找网络公司做推广费用
  • 网站推广工具推荐广州公关公司招聘
  • 网站搭建平台源码做健身网站开题报告
  • 大芬网站建设樟树网站开发
  • 北京通州个人网站建设哈尔滨建设工程招投标办公室
  • 怎样开个人网站如何做百度免费推广