Docker 微服务架构 - 不同容器之间的通信
Posted
技术标签:
【中文标题】Docker 微服务架构 - 不同容器之间的通信【英文标题】:Docker Microservice Architecture - Communication between different containers 【发布时间】:2018-06-26 01:22:35 【问题描述】:我刚开始使用 docker,目前正在尝试研究如何使用微服务架构设置项目。
我的目标是从 api 中移出不同的服务,而是将每个服务放在自己的容器中。
当前架构
所需架构
问题
-
API 网关如何与内部服务通信?所有微服务都应该有自己的 API,只接受来自 API 网关的通信吗?还有其他通讯方式吗?
网关和微服务之间的理想身份验证是什么?智威汤逊令牌?基本身份验证?
如果托管在 Azure 中,您是否发现此架构存在任何问题?
是否可以在所需架构中进行集成测试?例如,我使用 EF SQlite inmemory 进行集成测试,并且可以在 api 中轻松访问它,但如果数据库位于它自己的容器中,我认为这不起作用。
我错过了什么重要的事情?
【问题讨论】:
仅供参考=>microservices.io/index.html 【参考方案1】:我创建了一个应用程序,它完全是一个基于微服务的架构,运行在 AWS ECS(容器服务)上,每个微服务都作为 Docker 镜像推送到容器上。有 2 个 EC2 实例正在运行以实现高可用性,并且两个实例上都在运行相同的微服务,因此如果一个实例出现故障,另一个可以处理请求。
每个微服务都使用自己的数据库,微服务之间的通信是使用 HTTP 协议和发现上的客户端注册表进行的,Spring Cloud Consul 和 Netflix Eureka 可用于服务发现和注册。
.
请看下图:
【讨论】:
以上是关于Docker 微服务架构 - 不同容器之间的通信的主要内容,如果未能解决你的问题,请参考以下文章
Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)
微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计