在我正在研究的这个节点应用程序中,用户可以预约约会。 预约时,用户稍后会在实际预约前X小时通过邮件收到提醒。
我正在考虑将Node-schedule用于此任务。
对于每个约会:设置未来日期,发送提醒邮件一次并删除此特定预定作业
但是......当应用程序增长时,可能会预订很多约会,这意味着会有很多节点调度进程同时睡眠并等待开火......
在常规日,让我们假设我们为每个客户预订了180个约会,并且假装现在应用程序有50个客户端。这使我们大约有9000个计划任务在睡觉并等待着火。
问题:这完全可以吗? ......或者所有这些同时安排的任务是否会很多/很多?
答案 0 :(得分:4)
简短回答:9000不是很多,你很高兴。但是,我建议你写一个基准来亲眼看看。
我检查了node-schedule的源代码,当然,它会将调度委托给setTimeout
进行基于日期的任务。这意味着您的作业是使用node.js内部事件循环计划的。
此代码非常高效,因为node.js可以同时处理数千个请求。
无论挂起作业的数量如何,node.js只关心下一个任务并在其日期之前休眠(除非异步I / O中断它),因此调度任务基本上是O(1)。