2016-02-22 5 views
2

Я программирования на стороне сервера приложение, которое будет управлять запросами от:Масштабируемость приложения на стороне сервера, лучший подход

  • игры клиента
  • Веб-сайт (HTTP запросы)
  • API

На данный момент я использую только одно приложение (NodeJS) для каждого типа запросов, проблема в том, что с растущей базой пользователей этот подход будет генерировать бутылочную горловину.

Actual architetture

Я хотел бы несколько советов о том, как развивать серверный architetture так, что это будет масштабируемым.

Единственное решение, которое я знаю, это использовать несколько серверов с одним и тем же приложением, в котором будет использоваться одна и та же память (сервер Redis).

Возможно ли в nodeJS разделить управление этими типами запросов на несколько серверов? Может быть, один или несколько серверов для каждого типа запросов?

В настоящее время я использую:

  • NodeJS
  • Redis
  • MySQL
  • Экспресс
  • Socket.io

Спасибо заранее, вы можете порекомендовать некоторые книги по этому поводу?

+0

В настоящее время я использую одно приложение nodeJS для всех типов запросов, но проблема в том, что в будущем перепроектировать эту архитектуру может быть сложно. –

ответ

1

На одной машине для управления мощностью многоядерной архитектуры вы можете использовать node.js Cluster модуль (https://nodejs.org/api/cluster.html).

Я думаю, что это хорошая идея разделить API и веб-сайт на разные приложения. Если вы решили запустить несколько приложений node.js на одной машине, попробуйте использовать pm2 (http://pm2.keymetrics.io/). Вероятно, вы могли бы разделить свой API на кучу небольших приложений, которые называются микросервисной архитектурой. Мне лично не нравится подход к микросервису, который вы можете проверить в Интернете за плюсами и минусами.

Кроме того, если вы развертывания приложения (или кучу приложений) на разных виртуальных/phisycal машин (что обычно в производстве), вы можете использовать haproxy для балансировки и отказоустойчивости (http://www.haproxy.org/).

Смежные вопросы