прямо сейчас, у нас есть один сервер с вкладкой cronjob, которая рассылает ежедневные электронные письма. Мы хотели бы масштабировать этот сервер. Это стандартное приложение Zend Framework, развернутое на сервере Centos в облаке Amazon.
Мы уже позаботились о балансировке нагрузки, управлении контентом и управлении развертыванием. Тем не менее, cronjob по-прежнему является проблемой для нас, так как мы должны признать, что некоторые работы выполняются только один раз.
Например, ежедневная электронная почта cronjob должна выполняться только один раз одним сервером. Я ищу лучший способ получить грант только на одном сервере, который выполнит его только один раз.
Я думаю о 2 решениях, но мне было интересно, если у кого-то еще была такая же проблема.
- Сделайте один из серверов "хозяином", который будет рассылать только ежедневные электронные письма. Это будет проблемой, если сервер неисправен, и, как правило, мы не хотим иметь «специальный» сервер. Это также означает, что нам необходимо отслеживать, какой сервер является главным.
- Иметь очередь запланированных задач. Каждый сервер открывает эту очередь и видит, какие задачи необходимо выполнить. Первый сервер, который «захватит» задачу, выполнит ее и пометит как выполненную. Я рассматривал простой сервис очередей Amazon как решение для очереди.
Оба эти решения имеют свои преимущества и недостатки, и мне было интересно, подумал ли кто-нибудь о ком-то еще, что могло бы помочь нам здесь.