2016-10-05 6 views
0

В настоящее время я решаю инженерную проблему и хочу открыть разговор для сообщества SO.Задание задач за несколькими экземплярами

Я хочу реализовать планировщик задач. У меня есть два отдельных экземпляра приложения nodeJS, сидящего за эластичной балансировкой нагрузки (ELB). Проблема заключается в том, когда возникают оба экземпляра, они пытаются выполнить одну и ту же логику задач, в результате чего задачи выполняются более одного раза.

Мое текущее решение заключается в использовании графика узлов для планирования задач для запуска, а затем их привязки к базе данных, чтобы проверить, не запущена ли задача еще с указанного интервала времени выполнения.

Логика здесь немного грязная, и мне интересно, есть ли более элегантный способ, которым я мог бы это сделать.

Возможно, возможно установить определенную переменную env в конкретном экземпляре, так что только этот экземпляр будет запускать задачи.

Что вы все думаете?

ответ

0

То, что вы описываете, является прекрасным примером использования для службы простой службы AWS.

https://aws.amazon.com/sqs/details/

Ключевые моменты, которые нужно посмотреть в вашем решении:

  • Убедитесь, что вы выбираете таймаут видимости, что является отражением вашей рабочей нагрузки (поэтому сообщения не повторно очереди, пока еще in process by another worker)
  • Не хранить в маске нагрузки, ссылаться на нее! Сообщение может иметь размер до 256 КБ, а размер сообщений влияет на производительность и стоимость.
  • Убедитесь, что вы понимаете выставление счетов! Поскольку биллинг взимается в 64KB кусках, то есть 1 220KB-сообщение заряжается как 4x 64KB патроны/запросы.
  • Если вы делаете свои сообщения небольшими, вы можете сэкономить больше денег, выполняя пакетные запросы, так как ваш взлом для доллара будет намного больше!
  • Используйте longpolling для получения сообщений, чтобы получить максимальную отдачу от ваших запросов на сообщения.
  • Предоставьте разрешения на использование приложений SQS с помощью роли ECAM IAM, поскольку это лучшая практика безопасности и рекомендуемый подход AWS.

Это отличный сервис, и он должен решить вашу текущую потребность.

Спасибо!

Xavier.