Spring 云 - 将服务绑定在一起

Spring Cloud - Binding Services Together

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

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

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

另一种解决方法是您可以在微服务 A 中使用 ResourceProcessor,在微服务 B 中使用 FeignClient。从A的Resource Processor调用微服务B的服务

你可以使用Spring Cloud Netflix,它自带优秀的模式,服务发现(Eureka),断路器(Hystrix),智能路由(Zuul)和客户端负载均衡(Ribbon)将适合大规模专门建立在微服务之上的分布式系统。

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

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

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

如上所述,您的另一个选择是使用 Feign client