javascript - waterfall API 调用的最佳架构模式

标签 javascript node.js amazon-web-services aws-lambda amazon-sqs

我正在尝试实现一个架构,其中客户拥有订单和发货历史记录。我正在尝试使用 API 调用将该数据导入到另一个系统,但问题是我无法使用单个 API 调用导入所有客户数据。我正在使用 Promise 创建 waterfall 模式,一旦导入客户信息,就会发出订单导入请求,然后发出发货导入 API 请求。

我正在尝试利用 AWS Lambda、SQS、Cloudwatch 等来实现这些连接。我发现的问题是 API 调用的顺序。

由于导入客户数据需要调用3次API,导致连接失败的错误率,加上手动管理和日志跟踪,都是一个很大的问题。如果订单 API 调用失败,那么发货 API 调用就无法发生。

我对如何简化或自动化日志跟踪感到困惑。如果任何 api 连接发生故障,如何降低错误率以及如何迁移数据。我还可以利用其他 AWS 服务吗?或者还有更多的 SQS 队列可供我单独用于订单和发货吗?

谢谢。

最佳答案

正如评论中提到的,听起来您正在构建一个工作流程,并正在寻找 Step Functions

您基本上将工作流程分解为状态机,在 Step Functions 中设计该状态机(状态之间的 taskstransitions),它将为您管理状态。通常,任务将在 AWS Lambda 中运行。

一般来说,API 调用的实现只是调用启动执行您想要启动的工作流程的特定步骤函数。

在您的例子中,它是一个非常线性的状态机 - 调用服务 A,然后调用 B,然后调用 C。您还需要定义在错误条件下发生什么样的转换和事件(通知您的客户?放弃?其他?)。

关于javascript - waterfall API 调用的最佳架构模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270435/

相关文章:

javascript - 大约等于 Javascript 中的函数?

amazon-web-services - 如何使用可突发家族类实例计算 EC2 定价

滚动到 Div 时 JavaScript 加载更多内容

javascript - JS Promise <Pending> 返回

node.js - 如何通过 Yarn 使用本地路径安装软件包?找不到包裹

javascript - 谷歌控制台 Node 中的站点地图 xml

node.js - 如何在 node.js 中将 CP852 解码为 UTF-8?

python-3.x - 升级boto3后Moto似乎停止 mock

amazon-web-services - EC2 负载均衡器、SNI、同一台服务器上的多个 SSL 域的问题

javascript - 尽管有引用,V-model 数组项仍无法更新