2015-10-28 2 views
1

Каковы способы запуска рабочего процесса в Heroku? В частности, процесс, который требуется нечасто, но быстро, когда это необходимо, например, bluemoon.js.Trigger Heroku worker

Опрос каждую секунду для чтения очереди задач (которая может храниться в базе данных) - это подход, о котором я могу думать.

Trigger имеет для меня больше смысла для этого случая. Есть ли способ напрямую инициировать рабочий процесс, когда это необходимо? Или нет реального недостатка в частых опросах?

ответ

1

Что вы действительно хотите, это служба обслуживания очередей, например Amazon SQS, RabbitMQ или что-то подобное.

Какое сообщение очередями услуги заключается в следующем:

  • У вас есть веб-дино выстрелить сообщение в службу обмена сообщениями, который говорит! «Эй Выполнить эту задачу Вот некоторые данные процесса.»
  • Служба сообщений затем захватывает это сообщение и передает его (быстро) на любой из ваших рабочих динамиков.
  • Затем ваши рабочие динозаторы завершают работу, которая должна быть выполнена, и можете связаться с службой обмена сообщениями, чтобы работа была завершена.

Причина выше модель работает настолько хорошо, что эти услуги оптимизированы по скорости и стоимости - они очень недороги, чтобы бежать (Я огромный поклонник Amazon SQS себя), почти нет накладных расходов , и невероятно быстро.

Причина вы не хотите, чтобы опрашивать базу данных (который является то, что большинство людей думают о том, когда они представляют себе такие вещи, как это), потому что это будет тратить ресурсы и вызвать проблемы в дальнейшем:

  • You будет постоянно ударять ваш сервер базы данных с ваших рабочих динамиков, используя много ненужных ресурсов пропускной способности/IO/ЦП.
  • Вы будете постоянно поражать сервер базы данных, создавая запросы, которые замедляют вашу базу данных и уменьшают количество важных запросов, которые могут выполняться.

В целом, для подобных проблем служба обмена сообщениями является идеальным решением!

+0

Как службы обмена сообщениями передают сообщение работнику? Разве это просто разрешает установку npm lib на рабочего, который опросает службу удаленных сообщений? – prototype

+0

Способ, которым он работает, немного отличается для каждого типа службы обмена сообщениями. С помощью Amazon SQS вы можете просто установить библиотеку, и она автоматически сделает LONG-опрос для сообщений от вашего рабочего динозавра. С RabbitMQ постоянное соединение всегда остается открытым, поэтому опроса никогда не происходит. Оба очень просты в использовании, и если вы хотите использовать RabbitMQ, есть дополнения Heroku для работы с ним =) – rdegges