API-интерфейс для микросервиса / обратный прокси-сервер Pattern - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть приложение, в котором есть несколько микросервисов, как показано ниже

 - python microservice   - runs as a Docker container on port 5001, 5002, 5003, 5004, 5005
 - nodejs microservice  - runs as a Docker container on runs on port 4000
 - mongodb  - runs as a Docker container on port 27017
 - graphql microservice - runs as a Docker container on port 4000

  1. Мне требуются пояснения для следующих параметров

ВАРИАНТ 1:

 Is it correct to configure nginx as a reverse proxy for each application so that I want to run each microservice on port 80

 i.e * python microservice docker container + nginx
     * nodejs microservice docker container + nginx
     * mongodb microservice docker container + nginx
     * graphql microservice docker container + nginx  

ВАРИАНТ 2:


 or should I configure a single nginx instance and setup upstream for python application, nodejs application and mongodb ?

 ie python + nodejs + mongodb + graphql + nginx   

Примечание: В ОПЦИИ 2 работает только один экземпляр nginx, а для ОПЦИИ 1 каждый микросервис имеет nginx экземпляр работает. Какой шаблон является правильным ВАРИАНТ 1 или ВАРИАНТ 2?

Правильно ли сконфигурировать mongodb и выставить его на порт 80?

1 Ответ

1 голос
/ 21 февраля 2020

Вопрос 1: Если вы используете только один nginx, у вас есть единственная точка отказа. Это означает, что если по какой-либо причине произойдет сбой nginx, все службы будут недоступны.

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

Хороший подход здесь заключается в том, чтобы иметь реплики (например, 2) того же сервера nginx, который содержит правила маршрутизации всех микросервисов.

Вопрос 2: При развертывании проблем нет mongoDB в контейнере, как только у вас есть постоянное хранилище. Порт вообще не проблема.

...