我有一个容器化的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 AM时仅向Bob发送一封电子邮件,而不向3发送一封电子邮件?
如何解决此类问题,例如Docker Swarm,Kubernetes甚至AWS EC2等技术?
我有一个容器化的Node应用程序,该应用程序在DigitalOcean服务器上运行。当我更新服务器上的应用程序时,该应用程序必须停机一段时间。为了能够更新应用程序和...
是的,您可以通过将实际的cron执行转移到仅运行一个副本的守护程序或使用某种形式的领导者选举系统来解决,而在任何给定时间仅运行一个副本即可解决此问题。