Распределение нагрузки API между несколькими серверами - PullRequest
0 голосов
/ 13 мая 2019

Я планирую создать API для одного из моих проектов.Но я ищу хороший способ управлять им и управлять нагрузкой на сервер.

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

Мысли:

Если я создам один сервер и этот сервер выйдет из строя, вся система выйдет из строя.Но если я создам несколько серверов, чтобы справиться с этим, и один из них потерпит крах, то только эта часть выйдет из строя.

Как я думал сделать это:

1) Создать один API ENDPOINT

2) Когда пользователь отправляет ЗАПРОС на этот API ENDPOINT, ENDPOINT отправляет другой запрос на правильный сервер, содержащий специальную задачу, когда задача выполнена, он возвращает данные обратно пользователю.

AKA:

Пользователь => ENDPOINT => ENDPOINT 1, ENDPOINT 2, ENDPOINT 3, => ENDPOINT => Пользователь

Это то, как я должен это сделать?

PS Я не знаю, правильная ли это терминология, но я пытаюсь научиться масштабировать мой ENDPOINTS / API / код.

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Что касается балансировки нагрузки, вы должны использовать определенные приложения веб-сервера , чтобы сделать это, , как nginx или apache. В таких инструментах веб-сервера уже реализованы механизмы балансировки нагрузки, вам просто нужно его настроить.

Кроме того, я рекомендую вам упаковать ваш сервер в docker изображения. Таким образом, вы можете использовать Docker Swarm или Kubernetes для развертывания и масштабирования вашего приложения. Управлять службами, проверять состояния приложений и развертывать новые версии проще.

Вы можете использовать docker с nginx, где каждый док-контейнер имеет экземпляр вашего приложения, а nginx позаботится о перенаправлении / распределении ваших запросов между вашими экземплярами.

0 голосов
/ 13 мая 2019

То, что вы в основном ищете, - это сравнение архитектуры на основе микросервисов (или SOA) и монолита.

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

Если вы перейдете на микросервисы?

Широко распространено мнение, что проектдолжны быть построены в монолитной архитектуре и затем перемещены в микросервисы по мере роста сложности. Статья Мартина Фаулера хорошо объясняет эту концепцию.

Это связано с тем, что с этой архитектурой связаны определенные недостатки и компромиссы - например, несогласованность и задержка.

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

...