节点进程和跨多个节点的复制

时间:2020-04-27 18:08:59

标签: node.js kubernetes deployment replication docker-swarm

我有一个容器化的Node应用程序,它在DigitalOcean服务器上运行。当我更新服务器上的应用程序时,该应用程序必须关闭一小段时间。为了能够更新应用程序并避免停机,我目前正在阅读零停机时间部署/蓝绿色部署,以期在我对使用它们的能力更加有信心时将Docker Swarm和Kubernetes集成在一起。< / p>

但是,当我想象我的应用程序跨多个节点进行复制时,确实让我感到困惑。在我的应用程序中,用户可以定义一些规则。因此,例如,每天早上11点,我希望将电子邮件发送给Bob。

当我的应用程序启动时,它将从数据库中获取所有CronTriggers并构建应用程序中存在的CronTrigger对象。

const { CronJob } = require('cron');

module.exports = class CronTrigger {
  constructor(cronString) {
    this.job = new CronJob(cronString, () => {

      // Send email here

    }, null, false, 'America/Toronto');
    this.job.start();
  }
}

但是,如果我的应用程序跨多个节点复制会发生什么?这是否意味着CronTrigger将被执行与节点一样多的次数?如果我有一个由3个节点组成的群集,我如何确保在上午11点时,只有一封电子邮件发送给Bob而不是3个人?

如何使用Docker Swarm,Kubernetes甚至AWS EC2等技术来解决此类问题?

1 个答案:

答案 0 :(得分:0)

是的,您可以通过将实际的cron执行移至仅运行一个副本的守护程序来解决此问题,或者使用某种形式的领导者选举系统,以便在给定的时间仅运行一个副本。

>
相关问题