【问题标题】:Spring Cloud - Binding Services TogetherSpring Cloud - 将服务绑定在一起
【发布时间】:2023-03-21 02:58:01
【问题描述】:

如何使用 Spring Cloud 将 REST 服务实际绑定在一起?我觉得我错过了一些明显的东西。例如,假设我有 2 个独立的微服务,它们都设置为与 Spring Cloud 和 Spring Boot 一起运行。如何将它绑定在一起,以便它可以让第一个服务调用第二个服务?

我的理解是Eureka可以作为服务注册中心使用。如果我们使用 Eureka,如果让一个服务调用另一个服务,代码会是什么样子?

【问题讨论】:

  • Eureka 只是服务的代理,现在您将调用eureka-url/service-name URL,而不是调用您的服务 URL。对于我们实施的微服务,没有什么能比得上 cloudfoundry bind-service。相反,我们必须编写自己的客户端代码。例如,您可以使用 RestTemplatApache HttpClient 或普通的 URLConnection 代码。
  • 您需要了解的所有基础知识都在他们的文档中,这是一篇非常好的基础文章:spring.io/blog/2015/07/14/microservices-with-spring

标签: java spring spring-boot spring-cloud netflix-eureka


【解决方案1】:

您可以使用Spring Cloud Netflix,它具有出色的模式,具有服务发现 (Eureka)、断路器 (Hystrix)、智能路由 (Zuul) 和客户端负载平衡 (Ribbon),适用于大规模分布式系统尤其是建立在微服务之上。

另外,请参考他们的good documentation resource

【讨论】:

    【解决方案2】:

    我认为其他答案都在正确的轨道上,但这里有一些更具体的答案。

    当您使用 Spring Cloud Netflix 创建 Eureka 服务器和客户端时,您可以使用 EurekaClient bean 获取其客户端的主页 URL。然后,您可以使用 RestClient 为该客户端调用 API。

    如上所述,您的其他选择是使用Feign client

    【讨论】:

      【解决方案3】:

      您可以拥有一个 API 网关,您可以在其中使用 FeignClient 从微服务调用服务。例如微服务 A 和微服务 B 。在网关中,这两个微服务都有 Feign 客户端。在网关中编写一个服务,它将调用 A 中的服务和 B 中的服务

      另一种解决方法是,您可以在微服务 A 中使用 ResourceProcessor,在微服务 B 中使用 FeignClient。从 A 的资源处理器调用微服务 B 的服务

      【讨论】:

        猜你喜欢
        • 2017-01-03
        • 2018-06-24
        • 2016-11-10
        • 2019-03-26
        • 2016-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-25
        相关资源
        最近更新 更多