Intereting Posts
Статические файлы, обслуживаемые node.js на heroku – это хорошая идея? узел npm Выгружайте загруженный файл на удаленный сервер с узлом (в идеале с тем же именем) Ошибка Browserify Rails – ParseError: ‘import’ и ‘export’ могут отображаться только с ‘sourceType: module’ Обновление вложенного массива с помощью MongoDB upload .jpg вложение изображения в почте с использованием AWS SES от node.js Именованные функциональные выражения с совпадающим именем переменной Запуск http-сервера nodejs с использованием BAT-файла, когда имя каталога содержит пробел Как добавить маркеры в Карты Google с помощью Node.js / Express / MongoDB? Получить приложение guid из имени приложения – через код sticky-session vs socket.io-sticky-session js-библиотека узла! Что лучше? Сделка Firestore: проблема с частичным успехом Отправить тысячи SMS с Twilio Может ли функционировать в модуле.exports доступ к глобальной переменной в модуле? Используйте имя пользовательского каталога вместо node_modules при установке с npm

Масштабирование Node.JS через несколько ядер / серверов

Хорошо, поэтому у меня есть идея, которую я хочу прочитать, но прежде чем я это сделаю, мне нужно понять несколько вещей полностью.

Во-первых, я думаю, что я буду продолжать эту систему, чтобы иметь 3 Server, которые описаны ниже:

Первый сервер будет моим веб-интерфейсом, это сервер, который будет слушать подключение и отвечать на запросы клиентов, этот сервер будет иметь 8 ядер и 16 ГБ памяти.

Второй сервер будет сервером базы данных , на самом деле очень понятным, подключитесь к хосту и установите / получите данные.

Третий сервер будет моим сервером хранения, это будет где загружаемые файлы будут сохранены.

Мои первые вопросы:

  • На моем интерфейсном сервере у меня 8 ядер, что лучший способ масштабирования узла, чтобы загрузка распределялась по ядрам?

Мой второй вопрос:

  • Есть ли система, в которой я могу попасть в frameworks приложения, что позволит мне разговаривать с другими ядрами и передавать сообщения для сохранения ввода-вывода.

и последний вопрос:

  • Есть ли какая-либо система, которую я могу использовать, чтобы помочь переместить содержимое с моего сервера хранения на запрос на интерфейсном сервере с минимальными накладными расходами, насколько это возможно, скорость здесь, поскольку у нас было бы более 500 клиентов, загружающих и загружающих одновременно на пике раз.

Я, наконец, убедил своего работодателя в том, что node.js чрезвычайно быстрый и его новейшая технология программирования, и мы должны инвестировать в платформу для нашей системы Intranet, но он запросил подробную документацию о том, как это можно масштабировать по текущему оборудованию. есть.

На моем интерфейсном сервере у меня 8 ядер, что лучший способ масштабирования узла, чтобы загрузка распределялась по ядрам?

Попытайтесь посмотреть на узловой модуль node.js, который является многоядерным сервером.

Во-первых, я бы не описал настройку, которую вы предлагаете как «масштабирование», это больше похоже на «распространение». У вас есть только один сервер приложений, обслуживающий запросы. Если вы добавите больше серверов приложений в будущем, тогда у вас будет проблема масштабирования.

Я понимаю, что node.js является однопоточным, что подразумевает, что он может использовать только одно kernel. Не моя область знаний о том, как / если вы можете масштабировать ее, оставит эту часть кому-то еще.

Я бы предложил NFS установить каталог на сервере хранения на сервер приложений. NFS имеет относительно низкие накладные расходы. Затем вы можете получить доступ к файлам, как если бы они были локальными.

Что касается вашего первого вопроса: использовать кластер (мы уже используем его в производственной системе, работает как шарм).

Когда дело доходит до обмена сообщениями с работниками, я не могу вам помочь. Но ваш лучший выбор – кластер. Возможно, будет некоторая функциональность, которая обеспечивает «межъядерную» передачу сообщений всем сотрудникам кластера в будущем (не знаю дорожную карту кластера, но это похоже на идею).

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

Другой совет: используйте MongoDB в качестве базы данных базы данных. Вы можете начать с аппаратного обеспечения младшего classа и легко расширить свой экземпляр базы данных с использованием функций набора / репликации MongoDB (если это какое-то требование).