Seata-go TCC 设计与实现

本文主要介绍 seata-go 中 TCC 的设计思路、异常处理以及在实战中的使用。

Seata 是一款开源的分布式事务解决方案,致力于为现代化微服务架构下的分布式事务提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 等多种事务模式,帮助用户解决不同场景下的业务问题。同时,Seata 还支持多语言编程,并且提供了简易的 API 接口、丰富的文档以及快速上手的 samples 示例项目,也能快速帮助开发者入门并上手 Seata 的使用。

Seata-go 是 Seata 多语言生态中 golang 语言的实现方案,它致力于帮助 golang 开发者也能使用 Seata 的能力来解决分布式事务场景的问题。Seata-go 复用了 Seata TC 的能力,client 的功能和 Seata 保持一致。目前 Seata-go 已经支持了 TCC 和 AT 模式,XA 模式正在测试中,预计会在 5 月份发版。Saga 模式正在设计和规划中,后面也会和 Seata 的 Saga 功能保持一致。

本文主要从以下几个角度,介绍 Seata-go 中的 TCC 模式的设计与使用:

  • Seata-go TCC 实现原理
  • Sata-go TCC 异常处理
  • Seata-go 的展望

Seata-go TCC 实现原理

Seata-go 采用了 getty 做 TCP 网络通信,完全实现了 Seata 的通信协议。下层实现了配置中心和注册中心,也支持了很多的第三方框架的接入,比如 dubbo、grpc、gorm 等等,目前也正在积极和各个社区沟通,以支持更多框架的接入。Seata-go 简易的系统架构图如下:

先来简单回顾下 TCC 模式的含义。TCC 是分布式事务方案的一种实现,它采用了二阶段提交协议,TCC 的全称是 Try-Confirm-Cancel,Try 是预留资源操作,Confirm 是提交操作,Cancel 是回滚操作。在 TCC 的一阶段中,先触发所有的子事务执行 Try 操作,如果所有的子事务的一阶段都执行成功,那么会触发所有子事务二阶段执行 Confirm 操作,否

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值