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

大庆网站建设黑icp备1900怎么在网页中加入图片

大庆网站建设黑icp备1900,怎么在网页中加入图片,中国工厂网站官方网站,公司做自己的网站平台台目录 一、分布式事务基础 #xff08;一#xff09;事务 #xff08;二#xff09;本地事务 #xff08;三#xff09;分布式事务 二、Seata概述 1.Seata 的架构包含: 2.其工作原理为: 3.如果需要在 Spring Boot 应用中使用 Seata 进行分布式事务管理,主要步骤为…目录 一、分布式事务基础 一事务 二本地事务 三分布式事务 二、Seata概述 1.Seata 的架构包含: 2.其工作原理为: 3.如果需要在 Spring Boot 应用中使用 Seata 进行分布式事务管理,主要步骤为: 1、下载seata并解压 2、修改配置文件 3、创建数据库 4、初始化seata在nacos的配置 5、启动seata服务 6、Seata实现分布式事务控制案例 官网https://seata.io/ 一、分布式事务基础 一事务 事务指的就是一个操作单元在这个操作单元中的所有操作最终要保持一致的行为要么所有操作都成功要么所有的操作都被撤销。简单地说事务提供一种“要么什么都不做要么做全套”机制。 二本地事务 本地事物其实可以认为是数据库提供的事务机制。说到数据库事务就不得不说数据库事务中的四大特性: A原子性(Atomicity)一个事务中的所有操作要么全部完成要么全部不完成 C一致性(Consistency)在一个事务执行之前和执行之后数据库都必须处于一致性状态 I隔离性(Isolation)在并发环境中当不同的事务同时操作相同的数据时事务之间互不影响 D持久性(Durability)指的是只要事务成功结束它对数据库所做的更新就必须永久的保存下来 数据库事务在实现时会将一次事务涉及的所有操作全部纳入到一个不可分割的执行单元该执行单元中 的所有操作要么都成功要么都失败只要其中任一操作执行失败都将导致整个事务的回滚 三分布式事务 分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 简单的说就是一次大的操作由不同的小操作组成这些小的操作分布在不同的服务器上且属于不同的应用分布式事务需要保证这些小操作要么全部成功要么全部失败。 本质上来说分布式事务就是为了保证不同数据库的数据一致性。 二、Seata概述 Seata官方文档 Seata 是一款开源的分布式事务解决方案,它支持 AT、TCC、SAGA 等事务模式。在微服务架构下提供了分布式事务服务,解决了强一致性的业务处理问题。 1.Seata 的架构包含: TC(Transaction Coordinator):事务协调器,维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM(Transaction Manager):控制分支事务,与 TC 交互以控制分支事务的提交、回滚等。 RM(Resource Manager):控制分支事务涉及的资源,与 TM 交互以控制分支事务。 2.其工作原理为: 应用开始全局事务,通过调用 TC 的 begin() 方法开启一个全局事务。 应用调用多个 TM 的 begin() 方法开启分支事务。TC 统一控制这些分支事务。 分支事务可以操作多个 RM 的资源,RM 参与者需要实现回滚和提交方法。 当应用结束分支事务并决定提交或回滚全局事务时,它会通知 TC。TC 将指示所有的 TM 提交或回滚相应的分支事务。 TM 将指示 RM 执行实际的提交或回滚操作。 操作完成后,TC、TM 和 RM 会相互确认这些操作,以确保全局事务的最终一致性。 3.如果需要在 Spring Boot 应用中使用 Seata 进行分布式事务管理,主要步骤为: 1、下载seata并解压 1下载 下载地址Release v1.5.2 · seata/seata · GitHub 下载的版本参考springcloudalibaba-seata版本参考 2解压 2、修改配置文件 seata/conf/application.yml 进行修改 参考官网配置[seata/script at master · seata/seata · GitHub] 修改 seata\conf\application.yml 的内容主要有以下三部分 application.yml server:port: 7091spring:application:name: seata-serverlogging:config: classpath:logback-spring.xmlfile:path: ${user.home}/logs/seataextend:logstash-appender:destination: 127.0.0.1:4560kafka-appender:bootstrap-servers: 127.0.0.1:9092topic: logback_to_logstashconsole:user:username: seatapassword: seata seata:config:# support: nacos 、 consul 、 apollo 、 zk 、 etcd3type: nacosnacos:server-addr: 127.0.0.1:8848namespace:group: SEATA_GROUPusername:password:##if use MSE Nacos with auth, mutex with username/password attribute#access-key: #secret-key: data-id: seataServer.propertiesregistry:# support: nacos 、 eureka 、 redis 、 zk 、 consul 、 etcd3 、 sofatype: nacos#preferred-networks: 30.240.*nacos:application: seata-serverserver-addr: 127.0.0.1:8848group: SEATA_GROUPnamespace:cluster: defaultusername:password:##if use MSE Nacos with auth, mutex with username/password attribute#access-key: #secret-key: server:service-port: 8091 #If not configured, the default is ${server.port} 1000max-commit-retry-timeout: -1max-rollback-retry-timeout: -1rollback-retry-timeout-unlock-enable: falseenable-check-auth: trueenable-parallel-request-handle: trueretry-dead-threshold: 130000xaer-nota-retry-timeout: 60000recovery:handle-all-session-period: 1000undo:log-save-days: 7log-delete-period: 86400000session:branch-async-queue-size: 5000 #branch async remove queue sizeenable-branch-async-remove: false #enable to asynchronous remove branchSessionstore:# support: file 、 db 、 redismode: db#session:# mode: file#lock:# mode: filedb:datasource: druiddb-type: mysqldriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatementstrueuser: rootpassword: 123456min-conn: 5max-conn: 100global-table: global_tablebranch-table: branch_tablelock-table: lock_tabledistributed-lock-table: distributed_lockquery-limit: 100max-wait: 5000metrics:enabled: falseregistry-type: compactexporter-list: prometheusexporter-prometheus-port: 9898transport:rpc-tc-request-timeout: 30000enable-tc-server-batch-send-response: falseshutdown:wait: 3thread-factory:boss-thread-prefix: NettyBossworker-thread-prefix: NettyServerNIOWorkerboss-thread-size: 1security:secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login 3、创建数据库 创建上面配置中的 seata 数据库并根据解压路径 seata\script\server\db\mysql.sql 文件创建表 4、初始化seata在nacos的配置 1进入到上面下载好的seata的解压后的seata\script\config-center\nacos目录中 执行nacos-config.sh文件进入当前层级的cmd执行下面带参数的命令 就会将seata\script\config-center\config.txt文件中的配置全部写入到127.0.0.1:8848的nacos配置中心中。 启动参数说明如下  执行成功后可以打开Nacos的控制台在配置列表中可以看到初始化了很多Group为SEATA_GROUP的配置。 2适当将seata\script\config-center\config.txt文件的默认配置删掉再去执行nacos-config.sh文件否则配置中心的配置太多了我自己的最终config.txt文件如下 #For details about configuration items, see https://seata.io/zh-cn/docs/user/configurations.html #Transport configuration, for client and server transport.typeTCP transport.serverNIO transport.heartbeattrue transport.enableTmClientBatchSendRequestfalse transport.enableRmClientBatchSendRequesttrue transport.enableTcServerBatchSendResponsefalse transport.rpcRmRequestTimeout30000 transport.rpcTmRequestTimeout30000 transport.rpcTcRequestTimeout30000 transport.threadFactory.bossThreadPrefixNettyBoss transport.threadFactory.workerThreadPrefixNettyServerNIOWorker transport.threadFactory.serverExecutorThreadPrefixNettyServerBizHandler transport.threadFactory.shareBossWorkerfalse transport.threadFactory.clientSelectorThreadPrefixNettyClientSelector transport.threadFactory.clientSelectorThreadSize1 transport.threadFactory.clientWorkerThreadPrefixNettyClientWorkerThread transport.threadFactory.bossThreadSize1 transport.threadFactory.workerThreadSizedefault transport.shutdown.wait3 transport.serializationseata transport.compressornone#Transaction routing rules configuration, only for the client service.vgroupMapping.default_tx_groupdefault #If you use a registry, you can ignore it service.default.grouplist127.0.0.1:8091 service.enableDegradefalse service.disableGlobalTransactionfalse#Transaction rule configuration, only for the client#For TCC transaction mode tcc.fence.logTableNametcc_fence_log tcc.fence.cleanPeriod1h#Log rule configuration, for client and server log.exceptionRate100 5、启动seata服务 两种启动方式 windows中双击seata\bin\seata-server.bat启动 使用命令启动如下 cd bin seata-server.bat -p 9000 -m file 启动后在 Nacos 的服务列表下面可以看到一个名为 serverAddr 的服务。 6、Seata实现分布式事务控制案例 案例解析一个user模块一个product模块测试user通过feign调用product中的方法 第一步在各个微服务中添加seata依赖 !--seata依赖-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-seata/artifactId /dependency 第二步在各个微服务连接的数据库中添加undo_log表 CREATE TABLE undo_log ( id BIGiNT(20) NOT NULL AUTO_INCREMENT, branch_id BIGiNT(20) NOT NULL, xid VARcHAR(100) NOT NULL, context VARcHAR(128) NOT NULL, rollback_info LONGBLOB NOT NULL, log_status iNT(11) NOT NULL, log_created DATETIME NOT NULL, log_modified DATETIME NOT NULL, ext VARcHAR(100) DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY ux_undo_log (xid, branch_id) ) ENGINE INNODB AUTO_INCREMENT 1 DEFAULT CHARSET utf8; 第三步配置配置事务分组配置seata注册中心和配置中心 spring:application:name: product-serverdatasource:url: jdbc:mysql://localhost:3306/product?useSSLfalseuseUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456cloud:nacos:discovery:server-addr: 127.0.0.1:8848# 以下的是每个微服务都要添加的配置alibaba:seata:tx-service-group: default_tx_group # 配置seata注册中心和配置中心 seata:registry:type: nacosnacos:application: seata-serverserver-addr: 127.0.0.1:8848group: SEATA_GROUPconfig:type: nacosnacos:server-addr: 127.0.0.1:8848group: SEATA_GROUP 第四步在被调用微服务里编写方法 RestController RequestMapping(/product) public class ProductController {Autowiredprivate ProductMapper productMapper;PostMapping(/get1)public Integer update(RequestBody Product product){int i productMapper.updateNumByPId(product);return i;} } 第五步在调用者微服务里写feign接口调用其他微服务的方法 FeignClient(value product-server, path /product) public interface ProductFeign {PostMapping(/get1)void updateNumByPId(RequestBody Product product); } 第六步在调用者微服务的serviceImpl编写方法在方法上加 GlobalTransactional 注解 开启事务 Service public class UserServiceImpl extends ServiceImplUserMapper, Userimplements UserService{ ​Autowiredprivate UserMapper userMapper;Autowiredprivate ProductFeign productFeign; ​ ​OverrideGlobalTransactionalpublic void updateNumByPId(RequestBody User user) {Product product new Product();product.setPid(1);product.setNum(2000);productFeign.updateNumByPId(product);int a 1 / 0;userMapper.updateById(user);} } 第七步controller测试service层的除零那行打断点Debug测试 RestController RefreshScope // 在需要动态读取配置的类上添加此注解就可以动态配置刷新 RequestMapping(/user) public class UserController { ​Autowiredprivate UserService userService;// Seata实现分布式事务控制PostMapping(/testSeata)public void testSeata(RequestBody User user){userService.updateNumByPId(user);} }     结果在没有出现除0异常的时候数据被正常修改出现异常后不会继续往下执行而是将上面的操作进行回滚。
http://www.w-s-a.com/news/290282/

相关文章:

  • 手机怎样使用域名访问网站个人做旅游网站的意义
  • 西部数码域名网站模板网站建设怎么管理业务员
  • o2o手机维修网站那个公司做的电子网站风格设计
  • 网站建设预算计算方法什么是网络营销战略?网络营销战略有哪些基本类型
  • 无锡做网站公司多少钱网站备案方法
  • 建设网站最强做网站哪一家公司好
  • 漫画风格网站人物介绍网页模板html
  • 贵阳市住房和城乡建设局政务网站大连 网站开发
  • 漳州市住房建设局网站网站一般多长
  • 国外做网站推广小程序制作二维码签到
  • 做网站需要域名网站建设诚信服务
  • 做物品租赁网站网站建设的完整流程
  • 响应式企业网站开发所用的平台西安知名网站推广
  • 高端响应式网站建设wordpress 全屏主题
  • 国内工程机械行业网站建设现状ui是什么意思
  • 成都网站开发哪家公司好出售家教网站模板
  • 订阅号做流量 那些电影如何链接网站温州市建设监理协会网站
  • 成都网站建设成功案例单招网商丘网站建设大全
  • 受欢迎的购物网站建设网推专员是做什么的
  • 商城网站前期准备湖南郴州建设局网站
  • 企业如何在自己的网站上做宣传外贸自建站可以自己做网站吗
  • 甘肃网站建设制作商网站空间哪家公司的好
  • 思途旅游网站建设系统用vscode做网站
  • 广州站改造最新消息半年工作总结ppt模板
  • logo模板下载网站推荐哪家网站开发培训好
  • 做外贸网站效果图页面关键词优化
  • 广平网站建设成都活动轨迹
  • 小型网站网站建设需要网络公司是什么行业
  • 滑动 手机网站 代码网页制作与设计讨论
  • 自己做网站处理图片用什么软件wordpress html5支持