本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
解耦消息傳遞模式
此模式通過使用異步輪詢模型在微服務之間提供異步通信。當後端系統收到調用時,它立即使用請求標識符響應,然後異步處理請求。可以構建鬆散耦合體繫結構,避免由同步通信、延遲和輸入/輸出操作 (IO) 引起的瓶頸。在模式的使用案例中,Amazon Simple Queue Service (Amazon SQS) 和 Lambda 用於在不同微服務之間實現異步通信。
在以下情況下,您應該考慮使用此模式:
-
您想要創建鬆散耦合體繫結構。
-
不需要在單個事務中完成所有操作,並且某些操作可以是異步的。
-
下遊系統無法處理每秒傳入事務次數 (TPS) 速率。消息可以寫入隊列並根據資源的可用性進行處理。
此模式的一個缺點是業務事務處理操作是同步的。即使調用系統收到響應,事務的某些部分可能仍然由下遊系統處理。
重要
由於這種模式更適合於一個消防和忘記模型,因此調用此服務的客户端應該使用請求 ID 來輪詢實際服務來獲取事務狀態。
使用案例
在這種使用案例中,保險系統有一個銷售數據庫,該數據庫會在每月付款後自動更新客户交易詳細信息。下圖顯示瞭如何使用解耦消息模式構建此系統。
此工作流程包含下列步驟:
在用户每月付款後,前端應用程序會調用 API Gateway,使用付款信息。
API Gateway 運行「客户」Lambda 函數,該函數將付款信息保存在 Amazon Aurora 數據庫中,將交易詳細信息寫入消息給「銷售」Amazon SQS,並通過成功消息響應呼叫系統。
「銷售」Lambda 函數從 SQS 消息中提取交易詳細信息並更新銷售數據。更新銷售數據庫的失敗和重試邏輯被納入「銷售」Lambda 功能的一部分。