SpringCloudAlibaba Seata

Seata

  • 官网地址
  • 一次业务操作需要跨多个数据源或者需要跨多个系统进行远程调用,就会产生分布式事务问题
  • Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

分布式事务处理过程

  1. TM 向 TC 申请一个全局事务,全局事务创建成功并生成一个全局唯一的 XID
  2. XID 向微服务调用链路的上下文中传播
  3. RM 向 TC 注册分支事务,将其纳入 XID 对应全局事务的管辖
  4. 事务一阶段结束
  5. TM 向 TC 发起针对 XID 的全局提交或者回滚决议
  6. TC 调度 XID 下管辖的全部分支事务完成提交或者回滚请求
  7. 事务二阶段结束

alt


名词介绍

  • Transaction ID XID:全局唯一的事务ID
  • Transaction Coordinator(TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或者回滚
  • Transaction Manager(TM):控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或者全局回滚的决议
  • Resource Manager(RM):控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚

下载

  • 官网地址
  • 此例子安装的是0.9版本,如果需要安装最新版请参考官网文档
  • 修改 store.mode 改成 db,之后再对应位置修改数据库属性
  • 修改 registry.type 改成 nacos,之后再对应位置修改 nacos 配置
  • 运行初始化 SQL,老版在 /seata/conf/db_store.db;新版在 seata/script/server/db/mysql.sql
  • 运行成功 alt

代码演示

项目介绍


问题

  • seata 版本问题,新版直接将配置注册到 nacos,通过 yml 进行配置;老版需要创建 file.conf、registry.conf文件 alt

  • 添加 @GlobalTransactional(name = "fsp-create-order", rollbackFor = Exception.class) 注解之后,会抛出问题(不加正常调用)

    1. io.seata.rm.datasource.exec.LockConflictException: get global lock fail, xid:xxx, lockKeys:xxx
    2. 解决: 参考issues 2460 将配置添加
    3. 将数据库时区与当前时间一致
    4. 仍抛出 Global lock acquire failed,参考issues 2555issues 2735暂时仍未解决
feign:
  httpclient:
    connection-timeout: 60000
    connection-timer-repeat: 3000

ribbon:
  ConnectTimeout: 60000 # 设置连接超时时间 default 2000
  ReadTimeout: 60000   # 设置读取超时时间  default 5000
  OkToRetryOnAllOperations: true # 对所有操作请求都进行重试  default false
  MaxAutoRetriesNextServer: 20    # 切换实例的重试次数  default 1
  MaxAutoRetries: 10     # 对当前实例的重试次数 default 0


hshuo的面试之路 文章被收录于专栏

作者目标是找到一份Java后端方向的工作 此专栏用来记录从Bilibili、书本、其他优质博客上面学习的内容 用于巩固、总结内容 主要包含Docker、Dubbo、Java基础、JUC、Maven、MySQL、Redis、SpringBoot、SpringCloud、数据结构、杂文、算法、计算机网络、操作系统、设计模式等相关内容

全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
在评审的大师兄很完美:像这种一般就是部门不匹配 转移至其他部门然后挂掉 我就是这样被挂了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务