node.js - 我可以在 Node 中同时拥有多少个计划作业

标签 node.js express cron design-principles

在我正在开发的这个 Node 应用程序中,用户可以进行预约。 预约后,用户将在实际预约前 X 小时通过邮件收到提醒。

我正在考虑使用 Node-schedule 来完成这项任务。

对于每个约会:设置一个 future 的日期,发送一次提醒邮件并删除这个特定的预定工作

但是...当应用程序增长时,可能会有很多预约,这意味着会有很多 Node 调度进程同时休眠并等待触发...

在正常的一天,假设我们为每个客户预订了 180 个 future 约会,并假设该应用程序现在有 50 个客户。这为我们提供了大约 9000 个 sleep 和等待触发的计划任务。

问题:这完全可以吗? ...或者所有这些同时安排的任务是否会太多?

最佳答案

简答:9000 不是很多,你可以走了。但是,我建议您编写一个基准以供您自己查看。

我检查了 node-schedule 的源代码,果然,它将调度委托(delegate)给 setTimeout 来处理基于日期的任务。这意味着您的作业是使用 node.js 内部事件循环安排的。

这段代码非常高效,因为 node.js 是为同时处理数千个请求而量身定制的。

无论待处理作业的数量如何,node.js 只会关心下一个任务并休眠直到它的日期(除非异步 I/O 中断它),因此调度任务本质上是 O(1)。

关于node.js - 我可以在 Node 中同时拥有多少个计划作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18869050/

相关文章:

node.js - 如何使用从 mongodb 返回的数据而不是返回它

angularjs - 在 Express 和 Angular Controller 中与其他路线共享子进程的结果

javascript - 使用 firebase 将文档、pdf 上传到谷歌云。得到错误

shell - 在 cronjob 中启动/停止 systemd 服务

bash - 在给定的时间内,Cron 作业和随机时间

node.js - 如何使用 mouse.wheel 在 puppeteer 5.1.0 中向右滚动?

node.js - 在函数返回值之前等待 promise 解决

node.js - 使用react/express/multer上传文件夹中的文件

javascript - Express 中的 next() 接受哪些参数

php - WHMCS cron 作业未运行(或已完成运行?)