本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
通訊機制
在微服務範例中,應用程式的各種元件必須透過網路進行通訊。常見的方法包括 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 則允許將訊息交付給多個訂閱者。當相同的訊息需要傳遞到多個目的地時,它們就會有效。
圖 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等。

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