德江网站建设,郑州哪里做网站最好,手机网站首页新闻模板,郑州网站建设及托管文章目录 目录
文章目录
前言
一、Seata的执行流程如下
二、使用步骤 三、配置微服务客户端
总结 前言
Seata部署指南
Seata 是一款开源的分布式事务解决方案#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模… 文章目录 目录
文章目录
前言
一、Seata的执行流程如下
二、使用步骤 三、配置微服务客户端
总结 前言
Seata部署指南
Seata 是一款开源的分布式事务解决方案致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式为用户打造一站式的分布式解决方案。 一、Seata的执行流程如下 A服务【订单微服务】的TM[事务发起者]向TC[seata服务端]申请开启一个全局事务TC就会创建一个全局事务并返回一个唯一的XID A服务开始远程调用B服务【账户微服务】此时XID会在微服务的调用链上传播 B服务的RM向TC注册分支事务并将其纳入XID对应的全局事务的管辖 B服务执行分支事务向数据库做操作 全局事务调用链处理完毕TM根据有无异常向TC发起全局事务的提交或者回滚 TC协调其管辖之下的所有分支事务 决定是否回滚 TM事务发起者【在哪个方法上添加了全局事务注解的】 TC : 事务管理器【seata的服务端】 RM: 每个操作数据库的微服务 XID: 全局事务id 二、使用步骤
1下载seata1.3.0--- 支持集群模式 把开源项目的源码也下一下 修改conf/file.conf 让seata集群信息可以共享我们应该修改它的保存位置: 指定seata的注册中心地址和配置中心的内容 registry {# file 、nacos 、eureka、redis、zk、consul、etcd3、sofatype nacosnacos {application seata-serverserverAddr 127.0.0.1:8848group SEATA_GROUPnamespace 88aa134e-24e9-45ab-a336-6ba2ce63a913cluster defaultusername nacospassword nacos}eureka {serviceUrl http://localhost:8761/eurekaapplication defaultweight 1}redis {serverAddr localhost:6379db 0password cluster defaulttimeout 0}zk {cluster defaultserverAddr 127.0.0.1:2181sessionTimeout 6000connectTimeout 2000username password }consul {cluster defaultserverAddr 127.0.0.1:8500}etcd3 {cluster defaultserverAddr http://localhost:2379}sofa {serverAddr 127.0.0.1:9603application defaultregion DEFAULT_ZONEdatacenter DefaultDataCentercluster defaultgroup SEATA_GROUPaddressWaitTime 3000}file {name file.conf}
}config {# file、nacos 、apollo、zk、consul、etcd3type nacosnacos {serverAddr 127.0.0.1:8848namespace 88aa134e-24e9-45ab-a336-6ba2ce63a913group SEATA_GROUPusername nacospassword nacos}consul {serverAddr 127.0.0.1:8500}apollo {appId seata-serverapolloMeta http://192.168.1.204:8801namespace application}zk {serverAddr 127.0.0.1:2181sessionTimeout 6000connectTimeout 2000username password }etcd3 {serverAddr http://localhost:2379}file {name file.conf}
}然后 然后 三、配置微服务客户端 在每个微服务中添加seata依赖 !--seata 一定要保证和seata服务的版本匹配-- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-seata/artifactId /dependency 修改配置文件 最后要在需要的业务层 添加全局事务 当做tm
GlobalTransactional //全局事务 tm队长 全局事务
回滚其他微服务连接数据库。public void saveOrder(Order order) {log.info(--------开始创建新订单);orderDao.saveOrder(order);log.info(-------订单微服务开始调用账户做扣减);accountFeign.increase(order.getUserId(),order.getMoney()); //事务提交log.info(-------订单微服务开始调用账户做扣减end);int c10/0;log.info(--------订单微服务开始调用库存,做扣减);storageFeign.increase(order.getProductId(),order.getCount());log.info(-------订单微服务开始调用库存做扣减end);log.info(-------修改订单状态);orderDao.updateStatus(order.getId());log.info(-------修改订单状态结束);log.info(--------下订单结束了哈哈哈哈);} 总结
无