分布式事务Seata

2021-09-22  本文已影响0人  彭金虎

目录

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

注意事项

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的问题,期待后续的迭代会改善这个问题。

上一篇下一篇

猜你喜欢

热点阅读