Архитектура для создания монитора времени безотказной работы в Node.js

Какое лучшее решение для использования Node.js и Redis для создания системы мониторинга времени безотказной работы? Могу ли я использовать Redis в качестве очереди, но это не лучший способ сохранить информацию, может быть, MongoDB?

Это кажется довольно простым, но иметь более 1 сервера, чтобы гарантировать, что сервер не работает и заставить все работать вместе, не так просто.


person donald    schedule 19.06.2011    source источник


Ответы (2)


Чтобы контролировать время безотказной работы, вы должны использовать задание Cron в системе. При каждом звонке вы будете проверять, работает ли хост, и сколько времени это займет. И в этом сценарии вы сохраните свои данные в Redis.

Чтобы сделать это в Node.JS, вы должны создать скрипт, который проверяет состояние сервера. Просто сделайте HTTP-запрос к серверу (или Ping, w.e.) и запишите, если это не удается или нет. Тогда я бы просто записал это в Redis. Как вы это сделаете, не имеет значения, потому что у скрипта (если вы запускаете cron каждые 30 секунд) есть [30] секунд до следующего запуска, так что вам не нужно беспокоиться о передаче вашего запроса на сервер. Как вы сохраните свои данные, зависит от вас, но в этом случае даже MySQL будет работать (если вы делаете только небольшое количество сайтов).

Подробнее о Cron в Википедии

person Colum    schedule 20.06.2011

Могу ли я использовать Redis в качестве очереди, но это не лучший способ сохранить информацию, может быть, MongoDB?

Вы можете (должны) использовать Redis в качестве своей очереди. Это будет очень быстро.

Я также думаю, что это будет очень хороший вариант для сохранения информации внутри Redis. К сожалению, Redis не измеряет время (пока). Я думаю, вы могли бы/должны использовать Beanstalkd для помещения сообщений в очередь которые доставляются при необходимости (каждые x секунд). Я также думаю, что cron - не очень хорошая идея, потому что вам понадобится их много, а при использовании очереди вы также можете выполнять свою работу быстрее (распределять нагрузку между несколькими процессами).

Также я не думаю, что вам нужно так много памяти, чтобы сохранить все в памяти (делает сайт быстрым), потому что набор данных будет относительно простым. Даже если вы не в состоянии (сообразительно получить больше памяти, если вы спросите меня) уместить весь набор данных в памяти, вы можете положиться на виртуальная память Redis.

Это кажется довольно простым, но иметь более 1 сервера, чтобы гарантировать, что сервер не работает и заставить все работать вместе, не так просто.

Шардинг/репликация - это то, что, я думаю, вы должны прочитать, чтобы решить эту проблему (сложно). К счастью, Redis поддерживает репликацию (можно также реализовать сегментирование). MongoDB поддерживает сегментирование/репликацию «из коробки». Если честно, я не думаю, что вам еще нужен шардинг, и ваш набор данных довольно прост, поэтому Redis будет работать быстрее:

person Alfred    schedule 21.06.2011