本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
解耦消息模式
此模式使用异步轮询模型在微服务之间提供异步通信。当后端系统接到呼叫时,它会立即使用请求标识符进行响应,然后异步处理该请求。可以构建松耦合架构,这避免由同步通信、延迟和输入/输出操作 (IO) 造成的瓶颈。在该模式的用例中,Amazon Simple Queue Service (Amazon SQS) 和 Lambda 用于实现不同微服务之间的异步通信。
若为以下情况,您应该考虑使用这种模式:
-
您想创建松耦合架构。
-
所有操作均无需要在单个交易中完成,有些操作可以为异步。
-
下游系统不能处理每秒传入事务(TPS)率。可以将消息写入队列并根据资源的可用性处理。
这种模式的一个缺点是业务交易行为是同步的。即使调用系统收到响应,交易的某些部分仍可能继续由下游系统处理。
重要
由于此模式更适合一劳永逸的模式,因此调用此服务的客户端应使用请求 ID 轮询实际服务以获取交易状态。
用例
在此用例中,保险系统有一个按月付款后自动更新客户交易详细信息的销售数据库。下图显示了如何通过使用解耦消息模式构建此系统。
工作流程包含以下步骤:
用户按月付款后,前端应用程序以付款信息调用 API Gateway 。
API Gateway 运行“客户”Lambda 函数,该函数将付款信息保存在 Amazon Aurora 数据库中,将消息中的交易详情写入“销售”Amazon SQS,并向调用系统发送成功消息。
“销售”Lambda 函数从 SQS 消息中提取交易详情并更新销售数据。并入更新销售数据库的失败与重试逻辑作为“销售”Lambda 函数的一部分。