上一题下一题

在高并发核心链路中,幂等、去重、顺序性和补偿机制分别保证什么,不应相互替代的原因是什么

旗舰版
来源:alibaba资深工程师最终一致性Saga模式消息顺序性消息幂等设计
草稿该题目为草稿状态,前台公开题库中不可见。
答案解析

在高并发核心链路里,幂等、去重、顺序性和补偿机制解决的是不同层面的问题,不能互相替代。

幂等 主要保证的是:同一个业务请求执行一次和执行多次,最终业务结果一致。比如支付回调、订单创建、扣库存这类场景,可能因为网络超时、MQ 重投、接口重试导致同一请求被多次处理。幂等通常依赖业务唯一号,比如 requestId、订单号、支付流水号,再配合数据库唯一索引、状态机校验、分布式锁或者幂等表来实现。它关注的是“重复执行不会造成错误结果”。

去重 主要保证的是:同一条消息或者同一个事件不要被重复消费、重复处理。比如 MQ 消费时,消息可能因为消费失败、ACK 丢失、Broker 重投而被重复投递。去重一般会基于 messageId、业务流水号做消费记录,处理前判断是否已经消费过。它关注的是“重复的数据不要再次进入处理逻辑”。

幂等和去重有相似点,但不是一回事。去重更多发生在入口层或者消费层,目的是拦截重复消息;幂等更多是业务处理层的兜底,即使重复请求真的进来了,也不能产生重复扣款、重复发货这类问题。所以核心链路里一般不能只做去重不做幂等,因为去重可能失败,比如缓存过期、记录丢失、

登录后查看完整内容