嘉峪关做网站苏州微网站建设公司哪家好
2026/2/13 16:18:24 网站建设 项目流程
嘉峪关做网站,苏州微网站建设公司哪家好,网站开发 微信开发 微信营销,985短网址生成器分布式事务 产生原因#xff1a; 由于 service 相互分离#xff0c;没有协同#xff0c;相互感知各自的状态#xff0c;导致事务回滚出现问题原理RM#xff08;Resource Manager#xff09;#xff1a;用于直接执行本地事务的提交和回滚。TM#xff08;Transaction Man…分布式事务 产生原因由于service相互分离没有协同相互感知各自的状态导致事务回滚出现问题原理RMResource Manager用于直接执行本地事务的提交和回滚。TMTransaction ManagerTM是分布式事务的核心管理者。比如现在我们需要在借阅服务中开启全局事务来让其自身、图书服务、用户服务都参与进来也就是说一般全局事务发起者就是TM。TCTransaction Manager这个就是我们的Seata服务器用于全局控制比如在XA模式下就是一个协调者的角色而一个分布式事务的启动就是由TM向TC发起请求TC再来与其他的RM进行协调操作。TM请求TC开启一个全局事务TC会生成一个XID作为该全局事务的编号XID会在微服务的调用链路中传播保证将多个微服务的子事务关联在一起RM请求TC将本地事务注册为全局事务的分支事务通过全局事务的XID进行关联TM请求TC告诉XID对应的全局事务是进行提交还是回滚TC驱动RM将XID对应的自己的本地事务进行提交还是回滚一、安裝各个服务作为Seate的客户端只需要导入依赖即可dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-seata/artifactId/dependency然后添加配置seata:service:vgroup-mapping:# 这里需要对事务组做映射默认的分组名为 应用名称-seata-service-group将其映射到default集群# 这个很关键一定要配置对不然会找不到服务bookservice-seata-service-group:defaultgrouplist:default:localhost:8868二、使用开启分布式事务的方法上添加GlobalTransactional注解GlobalTransactionalOverridepublicbooleandoBorrow(intuid,intbid)Seata会分析修改数据的sql同时生成对应的反向回滚SQL这个回滚记录会存放在undo_log 表中。所以要求每一个Client 都有一个对应的undo_log表也就是说每个服务连接的数据库都需要创建这样一个表这里由于我们三个服务都用的同一个数据库所以说就只用在这个数据库中创建undo_log表即可表SQL定义如下CREATETABLEundo_log(idBIGINT(20)NOTNULLAUTO_INCREMENT,branch_idBIGINT(20)NOTNULL,xidVARCHAR(100)NOTNULL,contextVARCHAR(128)NOTNULL,rollback_infoLONGBLOBNOTNULL,log_statusINT(11)NOTNULL,log_createdDATETIMENOTNULL,log_modifiedDATETIMENOTNULL,extVARCHAR(100)DEFAULTNULL,PRIMARYKEY(id),UNIQUEKEYux_undo_log(xid,branch_id))ENGINEInnoDBAUTO_INCREMENT1DEFAULTCHARSETutf8;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询