使用由 Lambda 函数支持的 API 网关,它使用 SNS 在微服务之间进行通信

Using API Gateway backed by Lambda Functions which communicate between Microservices using SNS

简而言之,我对构建通过 SNS(大部分)连接的松耦合微服务感兴趣,以便实时处理 API 请求。

前提

AWS API 网关端点

Lambda 函数(按顺序执行):

- documents.upload

- workflows.routeDocument

注意为什么 documents.upload 不在内部调用 worksflows.routeDocument

  1. 微服务不再松耦合
  2. 如果强制同步,则两个 lambda 函数的计算时间加倍(是否可能)

这种模式可能吗?

谢谢!

这是它崩溃的地方:

-workflows.routeDocument

  • Returns a success/failure to the original api request

那是不可能的。通过使用 SNS,您已将服务解耦到这样的程度,即负责生成对 API 网关请求 (documents.upload) 的响应的 Lambda 函数不知道其他 Lambda 函数中发生了什么。 workflows.routeDocument Lambda 函数无法访问 API 网关 eventcontext 对象,因此无法更新 API 响应。

唯一可行的方法是 API 网关调用的 Lambda 函数进行某种轮询以等待其他函数调用完成,然后以某种方式访问​​ return 状态(存储在数据库或其他东西中?)并 return 在响应中编辑它。我认为这会在您的请求处理中引入大量延迟。

在这种情况下,我认为 documents.upload 直接调用 workflows.routeDocument Lambda 函数更有意义。