在本地开发多个微服务

时间:2019-10-29 20:06:21

标签: localhost microservices

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

如果将其远程部署,则一切正常,但是在本地进行操作时,是否可以通过在一个Terminal会话中运行BE-A,在第二个Terminal会话中运行BE-B等简单的方法来完成此任务?

注意:我知道本地的Docker方法,但是想知道是否有一种更简单的方法来实现而不需要Docker这样的东西?

1 个答案:

答案 0 :(得分:1)

我不太确定您在python中使用什么,但我会假设您使用的是flusk之类的东西。 假设您使用的是flask,并且您的服务脚本为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

这样,您将在不同端口上运行每个服务,以便可以从localhost:5001,localhost:5002和localhost:5003等本地主机上的不同端口使用每个服务api。

在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 
  

注意:我知道本地Docker方法,但是想知道是否   有没有像Docker这样的简单方法吗?

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

当您在此处通过Stack-overflow或其他在线资源进行构建时,可以找到很多示例来为类似的应用程序创建Dockerfile和docker-compose文件。