6

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

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

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

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

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

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

4

1 回答 1

8

简短的回答:9000 不是很多,你很高兴。但是,我建议您编写一个基准测试以自己查看。

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

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

不管挂起的作业有多少,node.js 只会关心下一个任务并休眠到它的日期(除非异步 I/O 中断它),所以调度一个任务本质上是 O(1)。

于 2013-09-18T13:02:32.740 回答