我正在尝试实现一个架构,其中客户拥有订单和发货历史记录。我正在尝试使用 API 调用将该数据导入到另一个系统,但问题是我无法使用单个 API 调用导入所有客户数据。我正在使用 Promise 创建 waterfall 模式,一旦导入客户信息,就会发出订单导入请求,然后发出发货导入 API 请求。
我正在尝试利用 AWS Lambda、SQS、Cloudwatch 等来实现这些连接。我发现的问题是 API 调用的顺序。
由于导入客户数据需要调用3次API,导致连接失败的错误率,加上手动管理和日志跟踪,都是一个很大的问题。如果订单 API 调用失败,那么发货 API 调用就无法发生。
我对如何简化或自动化日志跟踪感到困惑。如果任何 api 连接发生故障,如何降低错误率以及如何迁移数据。我还可以利用其他 AWS 服务吗?或者还有更多的 SQS 队列可供我单独用于订单和发货吗?
谢谢。
最佳答案
正如评论中提到的,听起来您正在构建一个工作流程,并正在寻找 Step Functions
您基本上将工作流程分解为状态机,在 Step Functions 中设计该状态机(状态之间的 tasks 和 transitions),它将为您管理状态。通常,任务将在 AWS Lambda 中运行。
一般来说,API 调用的实现只是调用启动执行您想要启动的工作流程的特定步骤函数。
在您的例子中,它是一个非常线性的状态机 - 调用服务 A,然后调用 B,然后调用 C。您还需要定义在错误条件下发生什么样的转换和事件(通知您的客户?放弃?其他?)。
关于javascript - waterfall API 调用的最佳架构模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270435/