Вот некоторые вещи, которые мы могли бы сделать, чтобы масштабировать наше веб-приложение/уменьшить нагрузку на наше веб-приложение:

  • Расширьте ЦП / память сервера (не рекомендуется с Meteor из-за однопоточного фона Node.js)
  • Расширьте сервер базы данных дополнительными ресурсами (это интересно для приложений Meteor, поскольку архитектура, управляемая данными, в значительной степени зависит от базы данных).
  • Добавьте CDN для кэширования статических ресурсов, чтобы снизить нагрузку на сервер
  • Добавьте дополнительные серверы и распределите нагрузку на эти серверы.

Как мы видели, есть несколько вещей, которые мы можем сделать. В этом сообщении блога мы сосредоточимся на добавлении серверов и маршрутизации трафика на эти серверы.

Пакет кластера

Прежде чем мы углубимся в пример, давайте подробнее рассмотрим красоту пакета кластера.

Без пакета custer нам нужно настроить балансировщик нагрузки на уровне сервера. Это означает, что мы должны иметь дело, например. nginx и правильная конфигурация для использования балансировщиков нагрузки в сочетании с серверами приложений.

С помощью пакета кластера нам просто нужно добавить пакет в наше приложение, предоставить несколько серверов и установить правильные настройки для пакета кластера. Затем пакет кластера позаботится о маршрутизации трафика и управлении кластером. Это огромное улучшение.

Давайте рассмотрим пример, чтобы лучше понять, как это работает.

Масштабирование приложения Meteor

Примечание. Здесь мы просто кратко рассмотрим функциональность пакета кластера. Описанная настройка будет направлять трафик только на разные серверы приложений, но использовать один сервер в качестве единой точки входа, которая направляет трафик на эти серверы.
Это не рекомендуется, если вам нужна готовая к работе установка.
Для дополнительные / производственные настройки вы можете посмотреть в документации пакетов.

Первое, что вам нужно сделать, это добавить пакет кластера в ваше приложение Meteor.

Просто беги:

meteor add meteorhacks:cluster<br />

чтобы добавить пакет кластера в ваше приложение.

После этого в вашем приложении будут доступны функции кластера.
Запустите приложение со следующими переменными:

CLUSTER_DISCOVERY_URL=mongodb://mongo-url CLUSTER_SERVICE=web CLUSTER_ENDPOINT_URL=http://ipaddresss:port meteor<br />

Рассмотрим подробнее переменные:

CLUSTER_DISCOVERY_URL — это URL-адрес базы данных MongoDB. Пакет кластера использует базу данных MongoDB для связи между приложениями Meteor. Эта база данных может быть базой данных приложения Meteor (где хранятся все остальные ваши коллекции) или другой базой данных.

Переменные CLUSTER_SERVICE хранят имя вашего приложения, которое используется внутри пакета (просто назовите его «web» и пока забудьте об этом).

CLUSTER_ENDPOINT_URL — это URL-адрес вашего приложения.

Это почти все, что нам нужно сделать. Просто запустите дополнительные приложения, и пакет кластера позаботится о маршрутизации трафика к этим приложениям.

Вот пример того, как можно настроить два приложения Meteor:

# The first application:<br />
CLUSTER_DISCOVERY_URL=mongodb://clustersettings:12345/dbname CLUSTER_SERVICE=web1 MONGO_URL=mongodb://maincollections:12345/dbname CLUSTER_ENDPOINT_URL=http://localhost:3000 meteor --settings settings.json --port 3000</p>
<p># The second application:<br />
CLUSTER_DISCOVERY_URL=mongodb://clustersettings:12345/dbname CLUSTER_SERVICE=web2 MONGO_URL=mongodb://maincollections:12345/dbname CLUSTER_ENDPOINT_URL=http://localhost:3000 meteor --settings settings.json --port 4000<br />

Хороший!

Другие настройки

Как отмечалось выше: эта установка является лишь введением в пакет кластера и не рекомендуется для использования в рабочей среде.
Если вас интересуют более сложные настройки и вы хотите глубже изучить использование пакета кластера, вам следует проверить это сообщение в блоге от Meteorhacks.

Дополнительные ресурсы

Хотите узнать больше о Meteor и масштабируемости? Вот некоторые дополнительные ресурсы, которые вы обязательно должны проверить: