本地开发多个微服务

Locally Developing Multiple Microservices

假设您有一个 React 前端 (FE),它与多个微服务的基于 Python 的后端 (BE) 交互。因此,FE 可能会在 BE-A 调用端点,然后在 BE-B 调用端点,也许稍后在 BE-C 调用端点。某些页面可能需要同时与 BE-A、BE-B 和 BE-C 交互。

远程部署时,一切正常,但在本地处理时,有没有一种简单的方法可以在一个终端会话中使用 BE-A 运行,然后在一秒钟内使用 BE-B终端会话等等?

注意:我知道当地的 Docker 方法,但我想知道是否有更简单的方法来做到这一点,而不需要 Docker?

我不太确定你在 python 中使用了什么,但我假设你使用的是类似 flusk 的东西。 假设您正在使用 Flask,并且您将服务脚本作为微服务-a.py, 微服务-b.py 和微服务-c.py。你可以 运行 他们这样:

在LinuxBash

打开终端会话 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 命令的更多信息 here

您甚至可以编写一些小的 powershell 或 bash 脚本来初始化、启动进程、停止和删除它们。您不必在所有 3 个终端会话中手动执行此操作,如果您有更多的微服务,那么您将需要管理更多的终端会话。那会让你的工作更轻松。


你当然可以这样做,但我强烈建议为此目的使用 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 

Note: I'm aware of the local Docker approach but am wondering if there's a simpler way to do it without anything like Docker?

为此使用 docker 比手动编写和管理所有这些脚本(bash 或 powerhsell)要简单得多。

您可以在 Stack-overflow 或其他在线资源上找到很多如何为类似应用程序创建 Dockerfile 和 docker-compose 文件的示例。