【预告】基于 gotcc——纯 golang 实现的 tcc sdk 框架分享从零到一实现 TCC 分布式事务框架
本着【理论先行实践紧随】的原则,和大家共同探讨 tcc 分布式事务实现方案,并逐帧拆解如何从零到一搭建 tcc 分布式事务框架。
大纲
- tcc 分布式事务理论
- gotcc 架构设计
- 各模块核心源码串讲
- 使用案例介绍
分享者自我介绍
小徐先生
滴滴出行,营销业务,Go 后端研发
bilibili——小徐先生1212
知乎——小徐先生
微信公众号——小徐先生的编程世界
计划分享时间
2024-06-16 20:00:00 UTC+8(周日晚上)
分享地址
Bilibili 直播:
https://live.bilibili.com/h5/11171965
视频号直播:
Go 夜读
Slides
gotcc技术分享.pdf (5.1 MB)
参考资料
gotcc分布式事务开源sdk
分布式事务理论篇
分布式事务实战篇
3 个赞
哇 小徐 关注了很久的大佬 公众号的文章写得特别好 由浅入深 逻辑清晰
1 component 需要维护一个 txid 维度的处理状态. 如果 cancel 先到达,也记录 canceled 状态,并回绝后续的 try 请求. 即所谓的空回滚处理机制. 实现难度大这个点,正如我在开篇介绍的时候说的,tcc 的劣势就是在于较大的成本转嫁给到了 component 实现方,这个选择方案时权衡就好了. 具体的实现我在项目中给了案例,参见 https://github.com/xiaoxuxiansheng/gotcc/example
2 你说的是有道理的. 从 gotcc 实现的 txmanager 主干流程来讲,是不针对第一阶段的 try 重试的. 但是通常 component try 方法会涉及到 rpc 或者 http 之类的 io 交互,这部分自由度本身留给了实现方,如果 io 框架层面启用了重试机制的话,那么从底线思维出发,下游理论上也要支持幂等. 此外这第2点可以结合我第1点的回答来看,本身为了支持空回滚机制,下游已经维护了一个 txid 的状态值了,那么复用这个状态也能实现幂等,本身成本不会高太多