同步通信会阻塞调用者直到收到响应;异步通信发送消息后继续执行而不等待。每种都在耦合、延迟和弹性方面做出不同的权衡。
比较
可视化
text
SYNC: Caller ──request──▶ Service
Caller ◀─response── Service (blocked the whole time)
ASYNC: Caller ──message──▶ [ Queue ] ──▶ Service
Caller continues immediately; Service handles it later
经验法则
- 当用户需要立即得到答案时使用同步 (例如,加载个人资料)。
- 对于后台工作、扇出和耐受下游故障使用异步 (例如,发送确认邮件)。
陷阱
异步隐藏了故障 — 一个丢失或有害的消息可能会无声地破坏工作流。您需要死信队列和监控。
为什么这很重要
这个选择直接控制故障如何传播:同步调用快速且明显地失败,而异步消息解耦但将问题延迟到消费者。
正确混合使用它们 — 边界处使用同步,工作流中使用异步 — 是构建弹性微服务的核心技能。
