现在,我们有一个带有 cronjob 选项卡的服务器,可以每天发送电子邮件。我们想扩展该服务器。该应用程序是部署在亚马逊云中的centos服务器上的标准zend框架应用程序。
我们已经处理了负载平衡、内容管理和管理部署。但是,cronjob 对我们来说仍然是一个问题,因为我们需要授权某些作业只执行一次。
例如,每日电子邮件 cronjob 只能由单个服务器执行一次。我正在寻找最好的方法来让一台服务器只执行一次。
我正在考虑两种解决方案,但我想知道其他人是否有同样的问题。
- 将其中一台服务器设为“主控”服务器,该服务器仅发送每日电子邮件。如果服务器出现故障,这将是一个问题,而且通常我们不希望拥有“特殊”服务器。这也意味着我们需要跟踪哪个服务器是主服务器。
- 有一个要执行的计划任务队列。每个服务器打开该队列并查看需要执行哪些任务。第一个“抓取”任务的服务器将执行任务并将其标记为已完成。我正在寻找亚马逊简单排队服务作为队列的解决方案。
这两种解决方案都有优点和缺点,我想知道是否有人考虑过其他人可以帮助我们。