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

Rest 它如何将各种微服务与Docker连接起来?,rest,docker,spring-boot,microservices,Rest,Docker,Spring Boot,Microservices,我有两个微服务进入Docker,我想连接一个和另一个,但我不知道怎么做。这两个(以及未来的应用程序)是API Rest和Spring boot,我正在搜索信息、教程。。。但我什么也没看到。我的想法是有一个主应用程序,它能够连接到其他微服务,它们是API Rest,然后这个主应用程序发布,所有这些我都希望它在容器中(Docker) 可能吗 有人知道解释这一点的教程吗 非常感谢 给你一个最简单的答案: 一般来说,容器之间可以通过任何协议(http、ftp、tcp、udp)进行通信,而不仅仅限于res

我有两个微服务进入Docker,我想连接一个和另一个,但我不知道怎么做。这两个(以及未来的应用程序)是API Rest和Spring boot,我正在搜索信息、教程。。。但我什么也没看到。我的想法是有一个主应用程序,它能够连接到其他微服务,它们是API Rest,然后这个主应用程序发布,所有这些我都希望它在容器中(Docker)

可能吗

有人知道解释这一点的教程吗


非常感谢

给你一个最简单的答案: 一般来说,容器之间可以通过任何协议(http、ftp、tcp、udp)进行通信,而不仅仅限于rest(http/s)

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

  • PS。有更复杂的技术存在,但它从根本上归结为以上的方法

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

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

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

    使用API网关有以下好处:

    • 将客户端与应用程序划分为微服务的方式隔离开来

    • 将客户端与确定服务实例位置的问题隔离开来

    • 为每个客户端提供最佳API

    • 减少请求/往返次数。例如,API网关使客户端能够通过一次往返从多个服务检索数据。更少的请求也意味着更少的开销并改善用户体验。API网关对于移动应用程序至关重要

    • 通过将调用多个服务的逻辑从客户端移动到API网关,简化了客户端

    • 将“标准”公共web友好API协议转换为内部使用的任何协议

    API网关模式有一些缺点:

    • 复杂性增加-API网关是另一个必须开发、部署和管理的移动部分

    • 由于通过API网关的额外网络跳数增加了响应时间-但是,对于大多数应用程序,额外往返的成本微不足道

    如何实现API网关?


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

    非常感谢!你的信息对我非常有用!你的信息对我很有用