2016-11-23 11 views
0

Я проектирую кластер с использованием Node JS-сервера. Я прочитал документацию о том, что кластеризация NodeJS составлена ​​на том же сервере, используя в основном рабочие процессы в соответствии с количеством процессоров, которые имеет сервер. Мой вопрос касается механизма отказоустойчивости, способного сохранить мое приложение в работе, даже если мастер-процесс выйдет из строя.Nodejs Cluster Master failover

Какова наилучшая практика в этой ситуации?

ответ

0

Я могу дать вам несколько предложений, основанных на проектах Node.js, над которыми я работал.

  1. Использовать механизм кэширования, такой как Redis (использовать его как кеш LRU), или MemCache временно хранить данные связи, а затем сохранять его где-то. Таким образом, даже если сервер аварийно завершает работу, вы можете восстановить данные из кэша при перезапуске сервера.
  2. Используйте PM2 или навсегда, чтобы контролировать ваш экземпляр Node.js и перезапустить его при сбое.
  3. Держите ваш сервер безстоящим, чтобы вы не беспокоились о сохранении контекста клиента на сервере (ведущие или подчиненные процессы).
  4. Если это большое приложение, вы можете использовать nginx для загрузки баланса между экземплярами сервера, а также настроить его таким образом, чтобы он менял нагрузку на другие серверы в случае сбоя.

Надеюсь, это поможет.