Запланированные уведомления pu sh - внутри Node.js функция или работа CRON? - PullRequest
0 голосов
/ 08 января 2020

Мне нужно реализовать запланированные уведомления pu sh в бэкэнде (Node.js), которые запускаются только в определенное время. Поэтому мне нужно запросить базу данных (PostgreSQL) с интервалом в 1-2 минуты и найти только те уведомления, которые должны быть запущены.

Какое решение лучше?

  1. Использовать внутреннюю функцию запроса setTimeout
    или
  2. Внешний сценарий CRON, который будет запускать функцию запроса в Node.js?

Спасибо

1 Ответ

0 голосов
/ 08 января 2020

Если второй вариант - это просто cron, который отправляет HTTP-запрос к вашему сервису, это довольно эквивалентно Если вместо этого решение упаковано в виде сценария, а cron запускает этот сценарий напрямую, у него есть несколько компромиссов, в основном основанных на операциях:

Использование внутренней функции запроса setTimeout или

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

Внешний скрипт CRON, который запускает функцию запросов в Node.js?

Это стратегия, которую google GCP использует для своего предложения cron . Если функция просто пингует веб-URL, решения довольно эквивалентны.


IMO, Самая большая проблема с обоими из них заключается в том, чтобы осторожно связать фоновую (asyn c) рабочую нагрузку с онлайн-нагрузкой. Если ваша служба обслуживает живые HTTP-запросы в реальном времени, но также выполняет эти фоновые рабочие нагрузки, которые отнимают ресурсы у обслуживания синхронных HTTP-запросов. Если это две принципиально разные рабочие нагрузки, то также имеет смысл разделить их для целей масштабирования.

Я попал в ситуацию, когда мониторинг фактически сообщил об этом решении. Компания использовала Prometheus и не имела установленного шлюза pu sh. Таким образом, решение на основе cron имело видимость 0 metri c, но версия службы была тривиальной для добавления метрик / предупреждений.

...