它如何将各种微服务与Docker连接起来?

问题描述 投票:2回答:2

我有两个微服务到Docker,我想连接一个,但我不知道这样做。这两个(以及未来的应用程序)是带有Spring-boot的API Rest,我正在搜索信息,教程...但我什么也看不见。我的想法是有一个主应用程序,它能够与其他微服务连接,他们是API Rest,然后这个主应用程序发布和所有这些我想把它放在容器(Docker)。

可能吗?

有谁知道任何解释这个的教程?

非常感谢!

rest docker spring-boot microservices
2个回答
3
投票

您所描述的可能是API网关。 Here是一个很好的教程,解释了这种模式。

实现API网关,它是所有客户端的单一入口点。 API网关以两种方式之一处理请求。有些请求只是代理/路由到适当的服务。它通过扇出多个服务来处理其他请求。

enter image description here

此模式的变体是前端后端模式。它为每种客户端定义了一个单独的API网关。

enter image description here

使用API​​网关具有以下好处:

  • 将客户端与应用程序分区为微服务的方式隔离开来
  • 将客户端与确定服务实例的位置的问题隔离开来
  • 为每个客户提供最佳API
  • 减少请求/往返次数。例如,API网关使客户端能够通过单次往返从多个服务中检索数据。更少的请求也意味着更少的开销并改善用户体验。 API网关对于移动应用程序至关重要。
  • 通过将用于调用多个服务的逻辑从客户端移动到API网关来简化客户端
  • 从“标准”公共Web友好API协议转换为内部使用的任何协议

API网关模式有一些缺点:

  • 复杂性增加 - API网关是另一个必须开发,部署和管理的移动部分
  • 由于通过API网关额外的网络跳跃而增加了响应时间 - 但是,对于大多数应用程序而言,额外往返的成本是微不足道的。

如何实现API网关?

事件驱动/被动方法最好是必须按比例扩展以处理高负载。在JVM上,基于NIO的库(如Netty,Spring Reactor等)是有意义的。 NodeJS是另一种选择。


2
投票

只需给你最简单的答案:一般情况下,容器可以使用任何协议(http,ftp,tcp,udp)相互通信,而不仅限于休息(http / s)

  1. 使用内部/外部IP和端口
  2. 使用内部/外部名称(dns): 您的微服务中的多个主机位于同一个集群中 - >您应该能够在Springboot中编写程序来调用http:// {{container service name}},这是容器的内置功能 如果您在不同的群集或主机或互联网上有更多的微服务,您可以使用API​​M(API管理)或反向代理(NGINX,HAProxy)来管理服务名称,例如。 microservice1.yourdomain.com - > container1或service1(cluster)microservice2.yourdomain.com - > container2或service 2(cluster)yourdomain.com/microservice1-> container2或service 2(cluster)yourdomain.com/microservice2-> container1或服务1(簇)

PS。有更复杂的技术,但它从根本上落在了方法之上。

© www.soinside.com 2019 - 2024. All rights reserved.