

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

# 通訊機制
<a name="communication-mechanisms"></a>

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

## 以 REST 為基礎的通訊
<a name="rest-based-communication"></a>

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

## GraphQL 型通訊
<a name="graphql-based-communication"></a>

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

## gRPC 型通訊
<a name="grpc-based-communication"></a>

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

## 非同步傳訊和事件傳遞
<a name="asynchronous-messaging-and-event-passing"></a>

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

訊息可以定義以下三種類型：
+  **訊息佇列：**訊息佇列可做為緩衝區，將訊息的寄件者 （生產者） 和接收者 （消費者） 分離。生產者將訊息排入佇列中，消費者取消排入佇列並進行處理。此模式適用於非同步通訊、負載平衡和處理流量爆增。
+  **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](http://docs.aws.amazon.com/zh_tw/whitepapers/latest/microservices-on-aws/images/message-bus-pattern.png)
+  **Amazon EventBridge：**一種無伺服器服務，使用事件將應用程式元件連接在一起，讓您更輕鬆地建置可擴展的事件驅動型應用程式。使用它將事件從自製應用程式、 AWS 服務和第三方軟體等來源路由到整個組織的消費者應用程式。EventBridge 提供簡單且一致的方式來擷取、篩選、轉換和交付事件，讓您可以快速建立新的應用程式。EventBridge 事件匯流排非常適合事件驅動服務之間的many-to-many事件路由。
+  **Amazon MQ：**如果您有一個預先存在的訊息系統使用標準通訊協定，例如 JMS、AMQP 或類似通訊協定，這是不錯的選擇。此受管服務可取代您的系統，而不會中斷操作。
+  **Amazon MSK （受管 Kafka)： **一種用於儲存和讀取訊息的訊息系統，適用於必須多次處理訊息的情況。它也支援即時訊息串流。
+  **Amazon Kinesis：** 即時處理和分析串流資料。這允許開發即時應用程式，並提供與 AWS 生態系統的無縫整合。

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

## 協同運作和狀態管理
<a name="orchestration-and-state-management"></a>

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

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

![由 呼叫的微服務工作流程圖表 AWS Step Functions](http://docs.aws.amazon.com/zh_tw/whitepapers/latest/microservices-on-aws/images/microservices-workflow-with-steps.png)


[Amazon Managed Workflows for Apache Airflow](https://aws.amazon.com/managed-workflows-for-apache-airflow/) (Amazon MWAA) 是 Step Functions 的替代方案。如果您優先考慮開放原始碼和可攜性， 則應使用 Amazon MWAA。Airflow 具有大型且活躍的開放原始碼社群，可定期提供新功能和整合。