← 中文资源

简体中文版本

顺序护航

顺序护航让同一键的消息严格按序、不同键并行——保住按实体的因果性而不全局串行化。

阅读英文原文

概念定义

有些领域存在因果链:消息二依赖消息一造成的状态。护航就是每条因果链一条车道——车道内先进先出,车道间自由并行。

工作机制

路由器按关联键哈希到车道——分区、队列或进程内 actor;每条车道单线程,按键的顺序即到达顺序。失败按车道处理:原地重试并阻塞车道,或跳过进死信并记录缺口。消费者扩容是加车道,不是每车道加线程。

使用场景

账本与余额、按设备的指令序列、按会话的状态机、乱序即损坏库存语义的库存扣减——一切“重排不是麻烦而是违约”的地方。

常见误区

顺序是按分区/队列不是按主题——基于键的分区才是护航的来源;轮询式负载均衡会让同一实体的消息互相赛跑。毒消息原地无限重试会把该键的全部后续堵死——要配死信加对账。载荷里的时间戳不构成顺序:处理顺序跟随的是到达顺序。分区再平衡会把飞行中的消息重排——先排空再平衡。热键会让超大租户的全部历史挤一条车道。