Seata-go TCC 设计与实现

💡 原文中文,约4000字,阅读约需10分钟。
📝

内容提要

Seata-go是Seata多语言生态中golang语言的实现方案,支持AT、TCC和XA等多种事务模式。本文介绍了Seata-go中TCC模式的设计思路、异常处理以及在实战中的使用。Seata-go提供了两种定义TCC服务方法,一种是实现TwoPhaseInterface接口,另一种是通过tag的方式来定义。在实际使用中,可能会出现幂等、空回滚和悬挂等问题,Seata-go提供了两种解决方案。Seata-go的展望是支持更多ORM框架和与MOSN社区的合作,以及在Saga模式功能的开发上。

🎯

关键要点

  • Seata-go是Seata多语言生态中golang语言的实现方案,支持AT、TCC和XA等多种事务模式。
  • Seata-go复用了Seata TC的能力,client功能与Seata保持一致,支持TCC和AT模式,XA模式正在测试中。
  • TCC模式采用二阶段提交协议,包括Try、Confirm和Cancel三个阶段,用户需要自行实现这些逻辑。
  • Seata-go提供两种定义TCC服务的方法:实现TwoPhaseInterface接口和通过tag方式定义。
  • 在实际使用中,可能会出现幂等、空回滚和悬挂等问题,Seata-go提供了两种解决方案。
  • Seata-go的展望是支持更多ORM框架,与MOSN社区合作,以及开发Saga模式功能。
  • Seata-go的异常处理通过tcc_fence_log事务状态表来解决幂等性、空回滚和悬挂问题。
  • Seata-go社区与多个国内go语言微服务框架及ORM框架达成合作,XA模式将在5月份发版。
➡️

继续阅读