架构风格与模式58 条

发布-订阅模式

发布者把消息发送到主题,多个订阅者各自消费;解耦生产者与消费者,支持一对多广播与异步削峰,代价是消息顺序、重复消费与积压治理。

交付语义至少一次、至多一次、精确一次(实现成本递增)
治理要点重复消费幂等、积压监控、死信队列
常见载体Kafka、RabbitMQ、Pulsar、云消息服务

投递语义对照

语义机制代价
至多一次发出即忘可能丢消息
至少一次重试直到确认可能重复,需要消费端幂等
精确一次事务或去重配合实现复杂,适用范围内有效
“至少一次 + 消费端幂等”是工程上使用广泛的组合;精确一次通常限定在特定组件范围内。

易错点

  • 消费者未做幂等,重投递导致重复扣款等事故
  • 订阅者数量增加后未评估下游容量,消息持续积压

数据来源与参考

  • 《Enterprise Integration Patterns》(Hohpe & Woolf)
  • Apache Kafka 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌