logo
Architecture Patterns

Publish-Subscribe

Pub/Sub 模式

类似 message queue,publish-subscribe 也是一种 async 的 service-to-service 通信方式。在 pub/sub 模型里,发布到 topic 的消息会立刻推送给所有订阅者。

publish-subscribe

Topic 的 subscribers 往往执行不同的任务,可以并行处理同一条消息。Publisher 不需要知道谁在消费,subscribers 也不需要知道消息来自哪里。这与 message queue 不同,queue 往往是 sender 知道具体 destination。

Working

和 message queue 会暂存消息不同,message topic 几乎不排队,消息会立即推送给所有订阅者:

  • Message topic 提供轻量的机制,用于广播 async event notifications,并允许组件连接 topic 进行收发。
  • Publisher 只需把消息推到 topic。
  • 所有订阅该 topic 的 subscribers 都会收到这条消息。

Advantages

  • Eliminate Polling:push 模式消除轮询,响应更快、latency 更低。
  • Dynamic Targeting:pub/sub 让服务发现更自然。publisher 只发到 topic,订阅者可随时加入、升级、扩容或退出,系统自动适配。
  • Decoupled & Independent Scaling:publisher 与 subscriber 解耦,可独立开发与扩展。
  • Simplify Communication:用一个 topic 替代大量点对点连接,降低复杂度。

Features

Push Delivery

消息发布后立刻推送给 subscribers。

Multiple Delivery Protocols

Topics 通常可连接多种 endpoints,例如 message queues、serverless functions、HTTP servers 等。

Fanout

消息发送到 topic 后复制并推送到多个 endpoints,实现并行处理。

Filtering

Subscriber 可定义 filtering policy,只接收关心的消息。

Durability

Pub/Sub 通常提供高 durability 和 at-least-once delivery,通过多副本存储消息。

Security

Topic 会对发布方做认证,并支持加密 endpoints 与传输加密。

Examples

相关练习题

Publish-Subscribe

暂无相关练习题