系統設計基礎筆記(四) Publish/Subscribe Pattern

Publish/Subscribe Pattern

Publish/Subscribe Pattern (Pub/Sub) 簡介

  • 一種包含 publisher、subscriber 與 broker 的訊息模型
    • publisher - 將訊息傳送至特定 topic(也可能被稱呼為 channels),不需要擔心誰需要收到這筆消息
    • subscriber - 訂閱特定 topic 後,將會收到來自此 topic 的訊息
    • broker - 負責將 topic 的訊息轉發給 subscriber
  • 通常有以下的保證,如「至少傳送一次」、「持久化」、「訊息的順序性」、「訊息可重送多次」
    • 若相同訊息可重送多次,不會影響結果就是符合冪等性(idempotent),需要 consumer 另外實作

source:https://learn.microsoft.com/en-us/azure/architecture/patterns/publisher-subscriber

有哪些 Pub/Sub 服務?

這邊舉幾個服務,後續再寫一篇較詳細文章來比較之間差異

RabbitMQ

  • 最廣泛使用的 message broker,特色是輕量級輕鬆部屬,但也有支援 distributed 以符合 high-scale 與 high-availability 的要求
  • 點我看更多👀

Apache Kafka

  • 最先是由 LinkedIn 創立的一款分散式訊息系統 (distributed messaging system),由 Scala 和 Java 編寫的 open-source 專案,點我看更多👀

Kafka 概覽。source: wiki

  • 原本的 Kafka 團隊有出雲端受託管版本的 Kafka - Confluent Cloud (Cloud Native Apache Kafka®),點我看更多👀
  • 另外,AWS 也有是出自己的雲端版本的 Kafka - Amazon MSK,點我看更多

Cloud Pub/Sub

  • Google 創立的雲端 Pub/Sub 服務,可用於串流服務、非同步微服務整合。點我看更多👀

參考資料 👐

🍀 最後,若喜歡我的分享,可以幫我拍拍手👏,是對我最大的鼓勵!✨