微服务apigateway/reverse代理设计模式
Microservice api gateway/reverse proxy design Pattern
我有一个应用程序,其中包含很少的微服务,如下所示
- 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:
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 实例 运行。 OPTION 1 或 OPTION 2 哪个模式是正确的?
- 容器化 mongodb 并将其暴露在端口 80 上是否正确?
问题一:
如果您只使用一个 nginx,就会出现单点故障。这意味着如果 nginx 由于某种原因失败,所有服务都将关闭。
如果您使用多个具有不同配置的不同 nginx,它将需要更多的维护、技术债务和资源。
这里的一个好方法是拥有同一个 nginx 服务器的副本(例如 2 个),其中包含路由所有微服务的规则。
问题二:
只要你有一些持久存储,在容器中部署 mongoDB 就没有问题。端口完全不是问题
我有一个应用程序,其中包含很少的微服务,如下所示
- 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:
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 实例 运行。 OPTION 1 或 OPTION 2 哪个模式是正确的?
- 容器化 mongodb 并将其暴露在端口 80 上是否正确?
问题一: 如果您只使用一个 nginx,就会出现单点故障。这意味着如果 nginx 由于某种原因失败,所有服务都将关闭。
如果您使用多个具有不同配置的不同 nginx,它将需要更多的维护、技术债务和资源。
这里的一个好方法是拥有同一个 nginx 服务器的副本(例如 2 个),其中包含路由所有微服务的规则。
问题二: 只要你有一些持久存储,在容器中部署 mongoDB 就没有问题。端口完全不是问题