Я хочу создать чат-серверы в nodejs с помощью express.I использовал кластерный модуль для масштабирования сервера среди нескольких ядер, но как я масштабируюсь до другой системы?Масштабирование сервера Nodejs для нескольких систем?
ответ
Поскольку Node.js не поддерживает разделяемую память, распространение процессов Node.js на нескольких компьютерах обеспечивает такой же опыт, как использование кластера для распределения процессов через несколько ядер - если ваше приложение может работать как несколько независимых процессов в одном системы, то он также может быть распределен для запуска как несколько независимых процессов в нескольких системах.
Отлично, так что это еще одна вещь, о которой нужно беспокоиться! Теперь есть много инфраструктурных решений, которые позволяли бы абстрактно запускать кластеры на нескольких системах, но ваше приложение в противном случае не обращает внимания на любой, который вы можете выбрать.
Что касается вас, тем не менее, в рамках вашего приложения и любого отдельного процесса, он обнаруживает внешние службы, обмениваясь информацией с процессами по всей инфраструктуре и взаимодействуя с процессами внутри кластера. Опять же, есть много решений, которые сократят любое конкретное требование, которое ваше приложение должно решить.
До сих пор сообщество Node.js предпочитало простые подходы, которые являются высокоспециализированными для решения конкретной проблемы, а затем уходят с вашего пути.Например:
- Клиенты и серверы веб-сокетов: низкая латентность внутри кластера; также хорошо работает во всей сети, когда вы можете просто отправить некоторые данные и продолжить свою жизнь, но это приведет к сканированию, если вам нужно синхронизировать процессы, такие как отправка некоторых данных, ожидание и бездействие до тех пор, пока результат не будет возвращается
- Redis: кластеры легко установить, экземпляры обрабатывать открытие на их собственных, достаточно атомарных операций, чтобы обеспечить твердый подход к обмену данными между различными экземплярами и паб-суб поддержки обеспечивает для низкой латентностью IPC
- ZMQ: хвалят за интеллектуальные высокодоступные соединения, вы можете разработать любой протокол обмена сообщениями с помощью нескольких десятков строк кода, которые следующий человек, поддерживающий ваше приложение, сможет рассуждать о
- etcd: распределенное, согласованное хранилище ключей; низкая инфраструктурная накладная, позволяет осуществлять прямое обнаружение услуг сверху, что прекрасно сочетается с любым инфраструктурным решением.
- Consul: на основе serf, как и т. д., но сильно упрямый, обеспечивает обнаружение сервиса на стероидах со многими дополнительными тонкостями; если вам нравится управлять делами самостоятельно и у вас есть время для инвестиций, я бы от всей души рекомендовал дальнейшее расследование.
В то время как это, конечно же, не охватывает все доступные варианты, этого должно быть достаточно, чтобы вы могли в правильном направлении. С помощью этих простых строительных блоков, которые смехотворно легко рассуждать, вы должны иметь возможность распространять свое приложение через несколько систем, работающих на нескольких машинах в нескольких датацентрах.
На самом деле может быть несколько ответов на этот вопрос, потому что ответ зависит от того, как вы хотите общаться между узлами, как вы хотите назначать задачи узлам и как управлять сбоями.
Возможно, вам захочется изучить, как работают другие администраторы кластера, а затем попытаться создать что-то подобное в вашем приложении.
несколько подходов:
1) Использование балансировки нагрузки в передней и распределить нагрузку между машиной. Я думаю, это самый простой подход.
2) Используйте систему обмена сообщениями, такую как RabbitMQ/ActiveMQ (или любую другую систему AMQP) для связи между узлами и пусть будет пул главных узлов, который назначает задачи определенным узлам и связывается с узлом через AMQP-протокол.
Если вы используете диспетчер процессов, такой как PM2, он позаботится о запуске вашего приложения-узла на разных или тех же машинах, но для обработки нескольких машин вы должны посмотреть на Марионеток, Шеф-поваров или Аналогов для масштабирования. Если вы находитесь на AWS, EC2 может быть настроен так, чтобы делать это автоматически.
- 1. Масштабирование файловых систем
- 2. Масштабирование сервера postgres для нескольких серверов
- 3. Nodejs: простое масштабирование
- 4. Масштабирование прокси-сервера zuul
- 5. Вход для нескольких систем аутентификации на бэкэнд
- 6. Обработка нескольких систем входа
- 7. Масштабирование сервера по горизонтали
- 8. Централизованные свойства приложений для нескольких систем
- 9. Развернуть решение asp.net для нескольких систем хостинга
- 10. Управление уровнем патча для нескольких оконных систем
- 11. Запрос нескольких систем баз данных
- 12. Масштабирование нескольких просмотров одновременно
- 13. Масштабирование нескольких работников-редукторов
- 14. Масштабирование нескольких HttpWebRequests?
- 15. скрипт python для запроса версии нескольких операционных систем
- 16. Обработка нескольких клиентов Nodejs
- 17. API-интерфейс сервера для нескольких устройств
- 18. балансировки нагрузки для NodeJS Net Сервера
- 19. Эксперимент конфигурации сервера Nodejs
- 20. Проверка запроса сервера NodeJs
- 21. Обратные вызовы сервера NodeJS
- 22. Масштабирование нескольких подзонов в UIScrollView
- 23. Масштабирование nodejs, socket.io и mongodb на azure
- 24. Соединения прокси-сервера NodeJs
- 25. Свойства java-систем для прокси-сервера не работают на ubuntu
- 26. Масштабирование нескольких осей в PlotChart
- 27. Несколько актерских систем для приложения
- 28. Узел веб-сервера NodeJS
- 29. NodeJS автообновление сервера
- 30. NodeJS - Ошибка сервера Building
Взгляните на https://www.amqp.org/ (также такие вещи, как zeromq, rabbitmq и т. Д.) – zamnuts
взгляните на sth, как deis, flynn. это похоже на героку. масштабирование производится так же просто, как «scale processName = xx» –