非同步訊息



問題陳述

微服務架構將應用程式構建為一組鬆散耦合的微服務,每個服務都可以以敏捷的方式獨立開發,從而實現持續交付/部署。微服務處理來自客戶端的請求,並且經常需要與其他微服務通訊以完成這些請求。因此,需要一種程序間通訊協議。

解決方案

我們可以使用非同步訊息模式進行服務間通訊,因為使用同步通訊會導致服務緊密耦合,並且還要求客戶端和服務在請求期間都可用。

使用非同步訊息,服務可以透過訊息通道交換訊息來進行通訊。以下是非同步訊息通訊的一些不同方法。

  • 請求/同步響應 - 在此方法中,服務向另一個服務發出請求並立即期望收到回覆。

  • 通知 - 在此方法中,服務向接收方傳送訊息,但不期望任何回覆。接收方也不需要傳送回覆。

  • 請求/非同步響應 - 在此方法中,服務向另一個服務發出請求,並在合理的時間範圍內期望收到回覆。

  • 釋出/訂閱 - 在此方法中,服務向零個或多個接收方釋出訊息。訂閱該訊息的服務將接收該訊息。不需要回復。

  • 釋出/非同步響應 - 在此方法中,服務向零個或多個接收方釋出訊息。訂閱該訊息的服務將接收該訊息。其中一些服務會發送確認/回覆。

示例

RabbitMQ 和 Apache Kafka 是微服務領域中非同步訊息傳遞的良好示例。

廣告