CRON + Nodejs +多核心=>行为?

我正在build立一个CRON模块到我的服务(使用节点时间表 ),将需要进入我的多核心设置的每个实例,我想知道,因为他们都运行自己的线程,他们都计划运行在同一时间,他们会被调用每一个线程或只是一次,因为他们都加载相同的模块。

如果他们被多次调用,那么确保所需操作只被调用一次的最好方法是什么?

node-schedule在给定节点进程内运行,它调度特定节点进程要求调度的事情。

如果您正在运行多个节点进程并且每个节点进程正在使用节点调度,那么这些单独节点进程中的所有节点调度实例都是独立的(在它们之间没有合作或协调)。 如果每个节点进程在本月的第一个星期三的下午3点要求其自己的节点调度实例运行特定的任务,那么所有的节点进程将在那个时候开始运行该任务。

如果您只需要执行一次操作,那么您必须在您的节点实例之间进行协调,以便仅在一个节点进程中调度该操作,而不是在所有操作中进行调度,或者只在您的一个节点实例中调度这些types的操作, 不是所有的人。

如果您使用集群模式下的pm2 ,则可以使用process.env.NODE_APP_INSTANCE来检测哪个实例正在运行。 你可以使用下面的代码,这样你的cron作业只会被调用一次。

 // run cron jobs only for first instance if(process.env.NODE_APP_INSTANCE === '0'){ // cron jobs }