我想在我的节点服务器中使用cron模块(later,node-cron等)来安排作业。作业是发送给用户的通知(例如,电子邮件),如果他在注册1小时后没有这样做,则更新他的个人资料图片。我正在使用later
模块在用户注册时安排任务,在1小时后执行以检查他是否已上传个人资料图片,如果没有则发送通知。我的问题是:
1.拥有大量预定作业会影响服务器性能吗?
2.在不影响系统性能的情况下安排大量作业的最佳方法是什么?
答案 0 :(得分:2)
很难说大量是否会影响系统性能,因为它依赖于他们正在做什么以及他们如何做这件事,以及有多少结束一次打击等等。
那就是说,我的观点是,使用这种东西来管理你所描述的各种事物会严重限制你的可扩展性,因为每一个都限定在应用程序实例范围内(所以如果你想要水平扩展的话) ,每个人都管理他们拥有;如果一个人崩溃而不发送通知,会发生什么?等等)。
我认为您最好使用某种分布式任务管理器,可能基于Redis队列或类似程序。您的Web应用程序将作业发布到该作业,并且一个或多个单独的进程可以在到期时处理正在运行的任务。这类事情有几个模块,kue
是我玩过的模块。