标准答案

  1. 同步调用适合鉴权、库存校验、创建订单等需要在当前请求内确认结果的步骤,必须同时设计超时和失败响应。
  2. 异步事件适合通知、积分、搜索索引、审计等不必阻塞主流程的动作,消费者需要处理重复、延迟和失败重试。
  3. 批处理适合日报、归档、离线对账和大批量修复等允许延迟的工作,应支持断点、分片和可重跑。
  4. 不要只因“异步更高性能”就异步化。用户是否需要立即看到结果、失败能否补偿、数据是否需要强一致才是关键。

题目解析

同步链路越长,尾延迟和级联失败概率越高;异步链路越多,最终一致性、可观测性和补偿成本越高。架构设计是在两类成本之间选择。

常见做法是让核心状态同步落库,把通知、索引和统计通过事件异步推进,并为用户提供可查询的任务状态或最终结果。

常见误区

  • 把所有后置动作都塞进同步请求,导致一个非关键依赖拖慢主流程。
  • 把必须强一致的扣款或权限判断改成异步,造成用户看见错误结果。
  • 异步后没有任务状态、重试和补偿,失败只能靠人工猜测。

作者信息