And*_*man 5 cron design-principles node.js express
在我正在使用的这个Node应用程序中,用户可以预定约会。预定约会后,用户将在实际约会前X个小时通过邮件收到提醒。
我正在考虑将Node-schedule用于此任务。
对于每个约会:设置将来的日期,发送一次提醒邮件,然后删除此特定的计划作业
但是...随着应用程序的增长,可能会预约很多约会,这意味着将会有很多Node计划进程同时处于休眠状态并等待启动...
在正常的一天,假装我们为每个客户预订了180个未来的约会,并且假装该应用程序现在有50个客户。这使我们大约有9000个计划中的任务处于睡眠状态并等待启动。
问题:这完全可以吗?...或者所有这些同时安排的任务会很多吗?
简短的回答:9000不是很多,你很好。但是,我建议您编写一个基准以供自己参考。
我检查了节点计划的来源,果然,它将计划委托给setTimeout基于日期的任务。这意味着您的作业是使用node.js内部事件循环计划的。
这段代码非常有效,因为node.js专门用于同时处理数千个请求。
无论挂起作业的数量如何,node.js只会关心下一个任务并一直休眠直到其日期(除非异步I / O中断了它),因此调度任务本质上是O(1)。