为什么使用 Step 函数 (AWS) 而不是 setTimeout(Javascript) 来实现调度程序功能
Why use Step function(AWS) over setTimeout(Javascript) for scheduler functionality
我正在尝试创建一个 API 服务,任何客户端都可以将他的 HTTP 请求和时间(以秒为单位)传递给我,然后他希望执行他的 HTTP 请求。
我可以想到两种方法来实现它:
- 用nodeJS创建一个lambda并使用setTimeout等待
- 创建一个步骤
等待 x 秒数的函数会调用我的 lambda 来
执行 HTTP 请求
我想了解的是各自的优缺点。 setTimeout 看起来很容易实现并且没有明显的缺陷。有什么理由我应该使用阶跃函数吗?
一闪就想到了关注,如果有更多的点数会更新
- Lambda 可以超时。而 StepFunctions 可以等待,例如一年也。
- Lambda 会花费等待的时间,但 StepFunction 不会。
- 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 持久存储中的这些请求。
我正在尝试创建一个 API 服务,任何客户端都可以将他的 HTTP 请求和时间(以秒为单位)传递给我,然后他希望执行他的 HTTP 请求。 我可以想到两种方法来实现它:
- 用nodeJS创建一个lambda并使用setTimeout等待
- 创建一个步骤 等待 x 秒数的函数会调用我的 lambda 来 执行 HTTP 请求
我想了解的是各自的优缺点。 setTimeout 看起来很容易实现并且没有明显的缺陷。有什么理由我应该使用阶跃函数吗?
一闪就想到了关注,如果有更多的点数会更新
- Lambda 可以超时。而 StepFunctions 可以等待,例如一年也。
- Lambda 会花费等待的时间,但 StepFunction 不会。
- 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 持久存储中的这些请求。