seata

0. 启动 seata-server服务
下载 seata-server, 然后在 seata-server 下的 registry.conf 配置 服务注册中心地址 和 读取配置文件的 配置中心地址
(seata-server 有自己的单独数据库)

集成 微服务

  1. 引依赖:spring-cloud-starter-alibaba-seata

  2. 配置文件(配置 seata-server 相关,服务地址,服务名等等):
    seata:
    registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址

    参考tc服务自己的registry.conf中的配置

    type: nacos
    nacos: # tc
    server-addr: 192.168.211.133:8848
    namespace: ""
    group: DEFAULT_GROUP
    application: seata-tc-server # tc服务在nacos中的服务名称
    cluster: SH
    tx-service-group: seata-demo # 事务组,根据这个获取tc服务的cluster名称
    service:
    vgroup-mapping: # 事务组与TC服务cluster的映射关系
    seata-demo: SH
    data-source-proxy-mode: AT

  3. AT 模式需要一个表来记录全局锁,另一张表来记录数据快照 undo_log;
    undo_log(快照表)导入到微服务关联的数据库(RM关联:订单、账户、库存),lock_table(全局锁表)导入到TC服务关联的数据库(TC关联:seata-server)

  4. 在TM(事务管理者),给发起全局事务的入口方法上加全局事务注解 @GlobalTransaction, 其他的"子事务"就直管本地事务即可(@Transaction ,spring提供的事务注解)

posted @ 2023-05-31 10:53  mty072788  阅读(11)  评论(0编辑  收藏  举报