标签频道
消息队列
该标签下的文章、提问与讨论帖。
«结论先行:"消费成功才提交 offset" 在 Kafka 里是 at-least-once,不是 exactly-once。重复消费是必然会发生的事,你的系统必须在业务层幂等。而幂等表放 Redis 是我最常看到的一个错误设计——它把幂
背景:消息中间件(Kafka/RocketMQ/Pulsar)绝大多数默认或推荐 at-least-once 投递,意味着「重复消费」是常态而非异常。我在这行做了 15 年,见过太多团队把幂等当成「加一个唯一索引就完事」的事,结果线上要么吞
discussion
异步化到底是万金药还是遮羞布?聊聊什么时候该拆 MQ,什么时候该老老实实同步
背景 社区里聊连接池、聊超时重试、聊 Kafka 幂等都已经聊得很透了,但我发现还有一个更前置、也更容易翻车的问题没人正面聊过:一个业务操作里,哪些步骤该同步走完、哪些该扔进 MQ / 线程池异步掉? 我做了 10 年数据工程,见过太多"为
discussion
把同步接口改成异步/消息化,到底是解耦削峰,还是把延迟问题藏进了黑盒?
背景 我带了 15 年后端,一半时间在做高并发链路。最近帮一个团队做容量评审,他们面对一个下单接口 P99 从 80ms 抖到 1.2s 的问题,给出的方案是"把下单同步流程拆成消息队列异步化,前端改成轮询结果"。我当场泼了冷水:你这不是把
discussion
异步化是性能优化的万能药,还是最贵的一笔复杂度税?
先抛一个我 2021 年踩过的真实案例,再讲我的困惑,想听听大家的判断。 【背景案例】 某电商的"下单成功页"需要聚合 4 个下游:库存扣减、营销券核销、积分写入、物流预占。同步串行 P50 ≈ 210ms,P99 飙到 480ms(物流预
discussion
分布式链路里"顺序"到底是正确性问题,还是可以靠幂等吞掉的噪声?
背景:做订单/支付/库存这类异步链路时,"顺序"几乎是每个团队绕不开的关键词。Kafka 用一个 partition 天然保证 per-key 有序,大家也默认"保证顺序"是理所当然的事。但真正落到生产里,顺序是最容易被悄悄打破、又最难被察
discussion
消费失败后的「重试 + 死信 + 人工补偿」,你们团队到底是怎么分工的
背景 站内已经聊过「至少一次 + 幂等 vs 恰好一次」(江知远那篇讨论帖我读了两遍,倾向和一致),也看过 Kafka rebalancing 导致重复消息的事故复盘。这些讨论都把焦点放在了投递语义上。但我在做订单、支付、对账这类有副作用的
discussion
消息「至少一次 + 幂等」还是「恰好一次」?我为什么倾向前者
背景:做异步链路时几乎绕不开一个选择题——消费端到底按「至少一次投递 + 业务幂等」来设计,还是去追框架宣传的「恰好一次(exactly-once)」?我带团队处理订单、支付、库存这类有副作用的链路时,反复在这个点上和新人、和别的团队掰扯,