масштабируемая архитектура с помощью node.js - PullRequest
0 голосов
/ 18 мая 2018

В рамках следующего назначения мне нужно подготовить масштабируемую и полностью параллельную архитектуру поддерживающего узла.Я запутался в концепции kubernetes / Containers и мне действительно нужна помощь.И я не могу использовать какой-либо платный сервис!Просто простые необработанные серверы DO и балансировщики нагрузки.

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

Вот что я имею в виду:

Клиент <-> NginX -> Nodejs <-> MongoDB

Итак, выше приведена стандартная установка для API REST на основе nodejs Iверить.Теперь, как добавить масштабируемость к этому и параллелизм?

Любая помощь будет оценена!

1 Ответ

0 голосов
/ 18 мая 2018

Позвольте мне дать вам краткий обзор и после этого просто задать больше вопросов в комментариях к моему ответу, если вам нужно знать больше.

Вам нужен образ докера всех ваших сервисов:

  1. Вам понадобится изображение nginx, содержащее ваш код внешнего интерфейса.(https://serversforhackers.com/c/dckr-nginx-image)

  2. Вам понадобится изображение докера, в котором содержится ваш код бэкенда. (https://nodejs.org/en/docs/guides/nodejs-docker-webapp/)

  3. Вам понадобится простое базовое изображение mongo-db.(https://medium.com/@pablo_ezequiel/creating-a-docker-image-with-mongodb-4c8aa3f828f2)

Теперь для новичков я бы пошел в Google Cloud Plattform и настроил управляемый кластер kubernetes. Это будет сделано за 1 минуту, и у вас будет полный функционалkubernetes environment. (https://cloud.google.com/kubernetes-engine/docs/quickstart) - В первый год у вас будет 300 $ для бесплатного использования. Так что этого более чем достаточно, чтобы играть по кругу и настроить среду для вашего задания.

Теперь выпотребуется Ingress API. Ingress - единственная точка доступа к Сервисам, которую вы позже развернете в своем кластере. Допустим, ваш Ingress прослушивает 14.304.233. Когда вы пишете 14.304.233 / customerBackend, он перенаправит этот запрос наСлужба customerBackend (Вы, конечно, должны это определить). Дополнительная информация здесь: https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress

Теперь вам нужно развернуть созданные вами образы. В Kubernetes у вас есть концепцияМодули (см. Здесь: https://kubernetes.io/docs/concepts/workloads/pods/pod/).Normally в каждом Модули запускается только один контейнер.Каждая группа Pod (например, все Pod, внутри которых имеется контейнер Node) имеет одну так называемую службу, которая управляет доступом к модулю.Допустим, вы хотите иметь 3 экземпляра вашего сервера NodeJS.Каждый из 3 контейнеров будет работать в отдельном модуле.Если вы хотите отправить запрос в бэкэнд, он будет проходить через Сервис, который затем перенаправит запросы в один из пунктов.Когда вам нужно масштабировать, вы просто развертываете больше модулей.Служба автоматически балансирует нагрузку на развернутые модули.

Сколько модулей требуется для развертывания, определено в так называемом deploy.yaml (см .: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/).

Это очень симулированов docker-compose.yaml, но с некоторыми другими атрибутами, которые вы можете настроить.

...