美文网首页
分布式事务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