架構設計(六):引入消息隊列
作者:Grey
原文地址:
消息隊列是一個支持持久化的組件,數據存儲在內存中,支持異步通信。它作爲一個緩衝器,分配異步請求。消息隊列的基本架構很簡單,包含兩個部分
第一部分:輸入服務,稱爲生產者/發佈者,創建消息,並將其發佈到消息隊列中。
第二部分:其他服務或服務器,稱爲消費者/訂閱者,連接到隊列,並執行消息所定義的動作。
消息隊列可以實現服務之間的解耦,成爲構建可擴展和可靠的應用程序的首選架構。有了消息隊列,生產者可以在消費者無法處理消息時將其發佈到隊列中。即使生產者不可用,消費者也可以從隊列中讀取消息。
以下示例說明了消息隊列的使用方式
假設某個應用是用來處理照片定製,包括剪裁、銳化、模糊等。這些定製任務需要相對長的時間來完成。
應用服務器(生產者)將「照片處理作業」發佈到消息隊列中。照片處理程序(消費者)從消息隊列中接過作業,異步地執行照片定製任務。生產者和消費者可以獨立擴展。當隊列的規模變大時,會增加更多的消費者實例以減少處理時間。然而,如果隊列大部分時間是空的,可以減少生產者的實例數量。