[Day 23] Message Queue (一)

erichung0404
2024-08-23 18:10:17

我們已經擴展了外部和內部的 API Service, 透過均衡負載器分散流量給每一個伺服器, 可以說我們透過均衡負載器將 外部服務 和 內部服務 "解綁" 了, 代表任一台內部伺服器不會綁定特定的外部伺服器

解綁的好處是讓我們的服務更容易擴展, 提高可用性, 在重視可用性的系統架構中, 由於服務間仍然依賴 請求-回覆的架構 (Request-Response Model)

當想要請求的服務下線時, 請求會因為找不到服務而發送失敗, 這樣即使服務再上線, 也不會再處理這個請求

這時我們可以用 Message Queue 將服務 "解綁", 改成將請求發送給 Message Queue 儲存, 等到服務上線再從 Message Queue 讀取請求, 處理後也是回覆給 Message Queue

根據處理資料的方式不同, Message Queue 也分為不同類型, Event Streaming Platform 像是 Kafka, Pulsar 支援多種功能, 比如 Message Persistence, Publish-Subscribe Pattern, Stream Processing 等等; 傳統 Message Queue 如 RabbitMQ, ActiveMQ 則不支援 Stream Processing, 但是具有作為 Message Queue 的管理和傳遞訊息的功能