为什么使用 Step 函数 (AWS) 而不是 setTimeout(Javascript) 来实现调度程序功能

Why use Step function(AWS) over setTimeout(Javascript) for scheduler functionality

我正在尝试创建一个 API 服务,任何客户端都可以将他的 HTTP 请求和时间(以秒为单位)传递给我,然后他希望执行他的 HTTP 请求。 我可以想到两种方法来实现它:

  1. 用nodeJS创建一个lambda并使用setTimeout等待
  2. 创建一个步骤 等待 x 秒数的函数会调用我的 lambda 来 执行 HTTP 请求

我想了解的是各自的优缺点。 setTimeout 看起来很容易实现并且没有明显的缺陷。有什么理由我应该使用阶跃函数吗?

一闪就想到了关注,如果有更多的点数会更新

  1. Lambda 可以超时。而 StepFunctions 可以等待,例如一年也。
  2. Lambda 会花费等待的时间,但 StepFunction 不会。
  3. lambda 的并发执行总数有 1000 个限制,而 StepFunction 最多可以有 1,000,000 个打开的执行。

Link:
https://docs.aws.amazon.com/step-functions/latest/dg/limits.html#service-limits-state-machine-executions
https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html#per-function-concurrency

我对aws step函数一无所知,所以我不能说什么。 但是在 nodejs 中使用 setTimeout 可能会有很大的延迟,如果你想创建一个稳定的可维护的 API 可能是一个真正的问题,因为以下原因:

  • 如果您想为您的应用程序推出任何更新,您需要终止等待的请求,或者您需要保持应用程序在线直到最后一个请求完成,然后才能关闭旧的代码.

  • 如果您的应用程序崩溃,所有当前等待的请求都会丢失。

  • 如果系统 nodejs 运行 需要重新启动以安装关键安全更新,那么所有待处理的请求都会丢失。

所以 setTimeout 不应该用于这种拍摄。如果您想在节点中执行此操作,则需要 store/mirror 持久存储中的这些请求。