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 微服务架构 - 不同容器之间的通信的主要内容,如果未能解决你的问题,请参考以下文章

布道微服务_20微服务容器DevOps

布道微服务_20微服务容器DevOps

Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)

微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计

基于容器与微服务架构的Web应用实践eShopOnContainers

无法通过 Docker 容器运行 NodeJS 微服务