🌱

243

一杯咖啡的时间,聊聊技术与成长

连载中 14/18

超时与重试:三态结果的不确定性

超时五秒,下游第六秒成功了——上游判失败做退款,下游成功了扣款,一笔钱处理两遍。超时是三态不是两态,未知态的纪律是先查询再行动;重试要退避要预算,否则小故障被放大成雪崩。

#分布式事务#超时#重试#熔断#三态
2026-06-21 · 4501 阅读 · 0 评论 · 0 赞
连载中 13/18

热点账户:余额更新的锁冲突突围

大商户账户每秒几千笔交易都改同一行余额,AT 抢全局锁自旋、本地事务排队行锁——单行更新是天然的串行点。缓冲记账把减法变插入、子账户把一行拆 N 行、TCC 冻结绕开余额行,四条路各有走法。

#分布式事务#热点账户#缓冲记账#子账户#TCC
2026-06-21 · 5096 阅读 · 0 评论 · 0 赞
连载中 12/18

Seata AT 原理:undo_log 与全局锁

业务零改造还能自动回滚,靠的是代理数据源偷偷记前后镜像:一阶段本地事务带着 undo_log 提前提交,二阶段回滚就按镜像生成反向 SQL。全局锁从数据库行锁挪到 TC 内存——这就是 AT 快的原因,也是它怕热点行的原因。

#分布式事务#Seata#AT模式#undo_log#全局锁
2026-06-20 · 6187 阅读 · 0 评论 · 0 赞
连载中 11/18

Seata 全景:四模式一张图选型

TC 协调、TM 发起、RM 参与——Seata 把前九篇的方案装进了一个框架:AT 零侵入、TCC 高性能、Saga 管长流程、XA 保强一致。四模式不是四选一的玄学,是按侵入度和一致性需求的四张门票。

#分布式事务#Seata#AT模式#TCC模式#Saga模式#选型
2026-06-19 · 5040 阅读 · 0 评论 · 0 赞
连载中 10/18

幂等设计:分布式事务的压舱石

MQ 会重投、框架会重试、用户会手抖、网络会重发——重复是常态,幂等是活路。五大武器:唯一键防重插、去重表防重消、状态机防乱序、Token 防手抖、乐观锁防并发。先查后写有竞态,唯一索引才是最后的墙。

#分布式事务#幂等#唯一索引#去重表#状态机
2026-06-18 · 1488 阅读 · 0 评论 · 0 赞
连载中 9/18

最大努力通知:通知到为止的艺术

给外部商户推支付结果,对方系统宕机三小时——总不能拿 MQ 无限重试陪它耗。最大努力通知:按阶梯间隔尽力喊 N 遍,喊不到就停,再给对方留一个主动查询的口子。内部靠可靠消息,对外靠尽力而为,边界要分清。

#分布式事务#最大努力通知#回调#通知重试#对账
2026-06-18 · 4744 阅读 · 0 评论 · 0 赞
连载中 8/18

事务消息:RocketMQ 半消息与回查

本地消息表的活,RocketMQ 把它下沉到了服务器内部:先发半消息锁住事实,再执行本地事务,提交或删除;进程挂了还有回查兜底。省掉消息表和扫描任务,代价是被绑死在会做事务消息的 MQ 上。

#分布式事务#事务消息#RocketMQ#半消息#回查
2026-06-17 · 3818 阅读 · 0 评论 · 0 赞
连载中 7/18

本地消息表:最朴素的最终一致

先发消息后提交事务,回滚收不回消息;先提交再发消息,进程挂了消息蒸发。本地消息表用最笨的办法破局:业务数据和消息记录同库同事务,后台任务扫描投递——不依赖任何框架,两张表加一个定时任务就是全部。

#分布式事务#本地消息表#最终一致#可靠消息#至少一次
2026-06-17 · 3730 阅读 · 0 评论 · 0 赞
连载中 6/18

Saga:长事务的状态机与补偿

五环节的退货流程横跨五天,TCC 要写十五个接口,Saga 只要每步配一个补偿:把长事务拆成一串本地事务,失败就逆序回滚。没有预留阶段,换来的是轻;没有隔离性,换来的是必须设计语义锁。

#分布式事务#Saga#补偿#状态机#语义锁
2026-06-16 · 5030 阅读 · 0 评论 · 0 赞