Локально развивающиеся множественные микросервисы - PullRequest
0 голосов
/ 29 октября 2019

Представьте, что у вас есть React-интерфейс (FE), который взаимодействует с Python-интерфейсом (BE) нескольких микросервисов. Таким образом, FE может вызвать конечную точку в BE-A, а затем позже в BE-B и, возможно, позже в BE-C. Некоторым страницам может потребоваться одновременное взаимодействие с BE-A, BE-B и BE-C.

При удаленном развертывании все работает отлично, но при локальных операциях легкоспособ сделать это с BE-A, работающим в одном сеансе терминала, BE-B во втором сеансе терминала и так далее?

Примечание: я знаю о локальном подходе Docker, но мне интересно, есть либолее простой способ сделать это без чего-либо подобного Docker?

1 Ответ

1 голос
/ 30 октября 2019

Я не совсем уверен, что вы используете с python, но я предполагаю, что вы используете что-то вроде flusk. Допустим, вы используете колбу и у вас есть свои скрипты для сервисов micro-service-a.py, micro-service-b.py и micro-service-c.py. Вы можете запустить их так:

В Linux Bash

Открыть сеанс терминала 1 и запустить:

$ export FLASK_APP=micro-service-a.py

$ flask run --host 0.0.0.0 --port 5001

Открыть сеанс терминала 2и запустите:

$ export FLASK_APP=micro-service-b.py

$ flask run --host 0.0.0.0 --port 5002

Откройте сеанс терминала 3 и запустите:

$ export FLASK_APP=micro-service-c.py

$ flask run --host 0.0.0.0 --port 5003

Таким образом, вы будете работать с каждым портом для каждого из своих сервисов, чтобы вы могли использовать каждый API-интерфейс сервиса издругой порт на локальном хосте, например localhost: 5001, localhost: 5002 и localhost: 5003.

В Windows Powershel

Единственное отличие состоит в том, что вы задали бы env:FLASK_APP по-другому. Например:

$env:FLASK_APP = "micro-service-a.py"

flask run

Вы можете узнать больше о командах CLI здесь .

Вы даже можете написать небольшой скрипт powershell или bash для инициализации, запуска процессовОстановись и убери их. Вам не нужно делать это вручную во всех трех терминальных сессиях, и если у вас больше микро-сервисов, то вам потребуется еще больше терминальных сессий, которыми вам нужно будет управлять. Это облегчит вашу работу.


Вы можете сделать это наверняка, но вместо этого я настоятельно рекомендую использовать Docker для этой цели. Хорошая вещь о docker заключается в том, что вы создали бы docker-compose, который имел бы собственную сеть для вашей среды. Это будет включать в себя все части вашего приложения, включая ReactApp в качестве одного контейнера и контейнера для каждой микро-службы. Таким образом, вы могли бы даже иметь разные версии Python в каждом микросервисе, и команды для инициализации, сборки и запуска, остановки, запуска, удаления всего вашего приложения будут выглядеть так:

docker-compose -f "docker-compose-my-react-and-python-app.yml" up -d

docker-compose -f "docker-compose-my-react-and-python-app.yml" stop

docker-compose -f "docker-compose-my-react-and-python-app.yml" start

docker-compose -f "docker-compose-my-react-and-python-app.yml" down -v 

Примечание:Я знаю о локальном подходе Docker, но мне интересно, есть ли более простой способ сделать это без чего-либо вроде Docker?

Использование docker для этого намного проще, чем написание и управление всеми этими скриптами (bashили powerhsell) вручную.

Вы можете найти множество примеров того, как создавать файлы Dockerfile и docker-compose для аналогичных приложений, которые вы создаете здесь, через переполнение стека или другие источники в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...