通訊機制 - 在 上實作微服務 AWS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

通訊機制

在微服務範例中,應用程式的各種元件必須透過網路進行通訊。常見的方法包括 REST 型、GraphQL 型、gRPC 型和非同步傳訊。

REST 型通訊

HTTP/S 通訊協定廣泛用於微服務之間的同步通訊,通常透過 RESTful APIs操作。API Gateway 提供一種簡化的方式,可建置 API,做為後端服務的集中存取點,處理流量管理、授權、監控和版本控制等任務。

GraphQL 型通訊

同樣地,GraphQL 是同步通訊的廣泛方法,使用與 REST 相同的通訊協定,但限制對單一端點的暴露。使用 AWS AppSync,您可以建立和發佈直接與服務 AWS 和資料存放區互動的 GraphQL 應用程式,或整合 Lambda 函數以進行商業邏輯。

gRPC 型通訊

gRPC 是一種同步、輕量、高效能的開放原始碼 RPC 通訊協定。gRPC 使用 HTTP/2 改善其基礎通訊協定,並啟用壓縮和串流優先順序等更多功能。它使用 Protobuf Interface Definition Language (IDL),這是二進位編碼,因此會利用 HTTP/2 二進位架構。

非同步傳訊和事件傳遞

非同步傳訊可讓服務透過佇列傳送和接收訊息來通訊。這可讓服務保持鬆散耦合,並提升服務探索。

訊息可以定義以下三種類型:

  • 訊息佇列:訊息佇列可做為緩衝區,將訊息的寄件者 (生產者) 和接收者 (消費者) 解耦。生產者將訊息排入佇列,消費者取消排入佇列並進行處理。此模式適用於非同步通訊、負載平衡和處理流量爆增。

  • Publish-Subscribe:在發佈訂閱模式中,訊息會發佈至主題,而多位有興趣的訂閱者會收到訊息。此模式可讓多個消費者以非同步方式廣播事件或訊息。

  • 事件驅動訊息:事件驅動訊息涉及擷取和回應系統中發生的事件。事件會發佈到訊息代理程式,而感興趣的服務會訂閱特定的事件類型。此模式可讓鬆散的耦合,並讓服務對事件做出反應,而不需要直接相依性。

為了實作這些訊息類型, AWS 提供各種受管服務,例如 Amazon SQS、Amazon SNS、Amazon EventBridge、Amazon MQ 和 Amazon MSK。這些服務具有專為特定需求量身打造的獨特功能:

  • Amazon Simple Queue Service (Amazon SQS) 和 Amazon Simple Notification Service (Amazon SNS):如圖 8 所示,這兩個服務彼此互補,Amazon SQS 提供空間來存放訊息,Amazon SNS 則允許將訊息交付給多個訂閱者。當相同的訊息需要傳遞到多個目的地時,它們就會有效。

    顯示訊息匯流排模式的圖表 AWS

    圖 8: 上的訊息匯流排模式 AWS

  • Amazon EventBridge:一種無伺服器服務,使用事件將應用程式元件連接在一起,讓您更容易建置可擴展的事件驅動型應用程式。使用它,將事件從諸如自家開發應用程式、 AWS 服務和第三方軟體等來源路由到整個組織的消費者應用程式。EventBridge 提供簡單且一致的方式來擷取、篩選、轉換和交付事件,讓您可以快速建立新的應用程式。EventBridge 事件匯流排非常適合事件驅動服務之間的many-to-many事件路由。

  • Amazon MQ:如果您已有使用 JMS、AMQP 等標準通訊協定的既有傳訊系統,這是不錯的選擇。此受管服務為您的系統提供替換,而不會中斷操作。

  • Amazon MSK (受管 Kafka):一種用於存放和讀取訊息的訊息系統,適用於必須多次處理訊息的情況。它也支援即時訊息串流。

  • Amazon Kinesis:即時處理和分析串流資料。這允許開發即時應用程式,並提供與 AWS 生態系統的無縫整合。

請記住,最適合您的服務取決於您的特定需求,因此請務必了解每個服務提供的內容,以及它們如何符合您的需求。

協調和狀態管理

Microservices 協調是指集中式方法,其中稱為協調程式的中央元件負責管理和協調微服務之間的互動。跨多個微服務協調工作流程可能具有挑戰性。不鼓勵將協調程式碼直接嵌入服務,因為它引入更緊密的耦合,並阻礙取代個別服務。

Step Functions 提供工作流程引擎來管理服務協調複雜性,例如錯誤處理和序列化。這可讓您快速擴展和變更應用程式,而無需新增協調程式碼。Step Functions 是無 AWS 伺服器平台的一部分,並支援 Lambda 函數、Amazon EC2、Amazon EKS、Amazon ECS、SageMaker AI AWS Glue等。

調用微服務工作流程的圖表 AWS Step Functions

圖 9:由 調用平行和循序步驟的微服務工作流程範例 AWS Step Functions

Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 是 Step Functions 的替代方案。如果您優先考慮開放原始碼和可攜性,則應使用 Amazon MWAA。Airflow 具有大型且活躍的開放原始碼社群,可定期貢獻新功能和整合。