美文网首页
分布式事务Seata

分布式事务Seata

作者: 彭金虎 | 来源:发表于2021-09-22 21:59 被阅读0次

目录

  • Github
  • 微服务中数据一致性问题
  • 分布式事务的解决方案
  • Seata 高可用Setup
  • Seata 配置遇到的问题
  • Seata AT客户端Debug
  • 业务服务
  • 总结

Github

https://github.com/pjhu/seata

结构

微服务中数据一致性问题

数据一致性

分布式事务的解决方案

DTP

在此理论基础上,有TCC, Saga, 分布式消息等分布式事务的解决方案

Seata 高可用Setup

Consul

目前Consul Setup有一些问题,可以参考Github issue
https://github.com/seata/seata/issues/3777

当时希望采用Consul来作为服务注册中心,调试了很久,环境终于Setup完,但是发现了一些错误,最终放弃修正问题,有一些公司修正了问题,但是没找到开源的代码,官方还没有解决。为了快速验证功能,转而去Setup naocos的配置。

本地测试环境Setup: https://github.com/pjhu/seata/tree/master/devops/local/consul
K8s 测试环境Setup: https://github.com/pjhu/seata/tree/master/devops/k8s-seata/consul
Setup遇到的问题:https://github.com/pjhu/seata/blob/master/doc/setup-consul-qa.MD

Nacos

本地测试环境Setup: https://github.com/pjhu/seata/tree/master/devops/local/nacos
K8s 测试环境Setup: https://github.com/pjhu/seata/tree/master/devops/k8s-seata/nacos
Setup遇到的问题:https://github.com/pjhu/seata/blob/master/doc/setup-nacos-qa.MD

注意事项

  • local 环境配置,需要注意Docker-compose file 中Seata的IP, 本地的IP会经常的变更

Seata 配置遇到的问题

可参考: https://github.com/pjhu/seata/blob/master/doc/setup-seata-qa.MD

Seata AT客户端Debug

可参考:https://github.com/pjhu/seata/blob/master/doc/source-code-debug.md
主要看了下分布式事务Xid的传递,由于使用的Feign做服务间调用,Feign在执行采用了SeataFeignClient,替换了client, 后续服务通过Spring MVC 执行 SeataHandlerInterceptor,解析xid 放入RootContext中,更上下文使用,最终会存入undo-log

业务服务

总结

虽然在配置中遇到了很多问题,网上都有响应的解决办法。在配置Consul过程中,花费的大量的时间,使用Nacos相对顺畅很多,可能是因为都是Ali这个开源大家族的,对Ali Cloud一套技术栈兼容更好。Consul的问题,期待后续的迭代会改善这个问题。

相关文章

网友评论

      本文标题:分布式事务Seata

      本文链接:https://www.haomeiwen.com/subject/efvggltx.html