發佈/訂閱模式 (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特性
- 過去式