[Design Patterns]Publish/Subscribe Pattern

發佈/訂閱模式 (Publish/Subscribe Pattern)在實務上,
通常被指為建立事件驅動(Event-driven)或訊息導向軟體的訊息傳遞模式,
適合拿來做不同服務間的訊息傳遞或狀態同步

名詞解釋

  • Message: 傳送的訊息
  • Topic: 可以被訂閱的實體
  • Subscription: Topic 跟 Subscriber 之間的實體
  • Publisher: 提供並發送訊息到Topic
  • Subscriber: 訂閱Topic的單位

簡易情境

簡易情境

  • Publisher1、Publisher2 可以同時發佈訊息 A、B 到相同的 Topic
  • Subscription1 可以給多個Subscriber1、Subscriber2 訂閱
  • Subscription2 可以同時訂閱多個Topic

Message的生命週期

  • Publisher發佈一則訊息
  • 訊息寫入storage
  • Pub/Sub送一個ack給Publisher說收到訊息
  • Pub/Sub將訊息傳給Subscriber
  • Subscriber送一個ack給Pub/Sub說收到訊息

Subscriber

  • push:

    • 主動
    • 低流量情形
  • pull:

    • 被動
    • 大量的訊息
    • 很重視效能和訊息傳遞因素

特性

  • 送達保證1次
  • 適合傳輸大量且沒有時間排序的資料
  • 系統、服務間的解耦:透過broker進行解耦,Publisher和Subscriber之間無相依性
  • 時間的解耦:透過async的方式,使訊息傳遞不需等待
  • 擴展性高
  • 順序保證:FIFO

Event特性

  • 過去式

參考網址

Kafka深度解析

-------------The End-------------