gpt4 book ai didi

node.js - Node 进程和跨多个 Node 的复制

转载 作者:行者123 更新时间:2023-12-02 12:28:08 28 4
gpt4 key购买 nike

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

但是,当我想象我的应用程序跨多个节点复制时,确实让我感到困惑。在我的应用程序中,用户可以定义一些规则。因此,例如,每天早上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等技术如何处理此类问题?

最佳答案

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

关于node.js - Node 进程和跨多个 Node 的复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61465510/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com