Ответ 1
На моем интерфейсном сервере у меня есть 8 ядер, что лучший способ масштабирования node, чтобы распределить нагрузку через ядра?
Попробуйте посмотреть node.js cluster модуль, который является многоядерным менеджером серверов.
Хорошо, поэтому у меня есть идея, которую я хочу прочитать, но прежде чем я это сделаю, мне нужно понять несколько вещей полностью.
Во-первых, я думаю, что я буду продолжать эту систему, чтобы иметь 3 Server, которые описаны ниже:
Первый сервер будет моим веб-интерфейсом, это сервер, который будет прослушивать подключение и отвечать на запросы клиентов, этот сервер будет иметь 8 ядер и 16 ГБ RAM.
Второй сервер будет сервером базы данных, очень понятным для себя, подключиться к хосту и установить/получить данные.
Третий сервер будет моим сервером хранения, это будет где загружаемые файлы будут сохранены.
Мои первые вопросы:
Мой второй вопрос:
и окончательный вопрос:
Я, наконец, убедил своего работодателя, что node.js чрезвычайно быстрый и самый последний в технологии программирования, и мы должны инвестировать в платформу для нашей системы Intranet, но он запросил подробную документацию о том, как это можно масштабировать через имеющееся у нас оборудование.
На моем интерфейсном сервере у меня есть 8 ядер, что лучший способ масштабирования node, чтобы распределить нагрузку через ядра?
Попробуйте посмотреть node.js cluster модуль, который является многоядерным менеджером серверов.
Во-первых, я бы не описал настройку, которую вы предлагаете как "масштабирование", это больше похоже на "распространение". У вас есть только один сервер приложений, обслуживающий запросы. Если вы добавите больше серверов приложений в будущем, тогда у вас будет проблема масштабирования.
Я понимаю, что node.js является однопоточным, что подразумевает, что он может использовать только одно ядро. Не моя область знаний о том, как/если вы можете масштабировать ее, оставит эту часть кому-то еще.
Я бы предложил NFS установить каталог на сервере хранения на сервер приложений. NFS имеет относительно низкие накладные расходы. Затем вы можете получить доступ к файлам, как если бы они были локальными.
Относительно вашего первого вопроса: используйте cluster (мы уже используем его в производственной системе, работает как шарм).
Когда дело доходит до обмена сообщениями с работниками, я не могу вам помочь. Но ваш лучший выбор - кластер. Может быть, будет какая-то функциональность, обеспечивающая "межъядерную" передачу сообщений всем сотрудникам кластера в будущем (не знаю дорожную карту кластера, но это похоже на идею).
Для вашего третьего требования я использую протокол с низким уровнем накладных расходов, например NFS, или (если вы действительно можете сходить с ума по инфраструктуре) высокоскоростной сервер SAN.
Другой совет: используйте MongoDB в качестве базы данных. Вы можете начать с аппаратного обеспечения низкого уровня и быстро расширить свой экземпляр базы данных с помощью функций набора MongoDB sharding/replication (если это какое-то требование).