请求/响应是同步点对点交互:调用方发出请求,阻塞等待对方返回结果,双方直接耦合、语义是“命令—答案”。发布/订阅是异步一对多:发布者把事件投到主题,不感知订阅者;订阅者按兴趣消费,彼此解耦,语义是“事实广播”。

用请求/响应的场景:

  • 调用方必须立刻拿到结果才能继续(查询余额、下单返回订单号)。
  • 强交互、请求—答复语义明确的查询或命令。
  • 需要同步错误处理与事务边界的短链路。

用发布/订阅的场景:

  • 一个事件有多个独立消费者,且会增减(订单创建 → 库存、通知、风控、数仓)。
  • 可异步处理、追求削峰与可用性隔离。
  • 事件溯源、CDC 数据分发、实时推送。

易错点:pub/sub 的解耦也带来隐蔽性——没人说得清谁在消费某个主题,schema 演进要靠注册表与兼容策略;请求链路过长时延迟叠加、故障放大,混合架构(同步主链路 + 异步副作用)是常态。追问方向:与消息队列点对点模型、事件驱动架构的区别。