首页 > 解决方案 > Spring Cloud 负载均衡和 Feign 客户端

问题描述

我一直使用spring-clound-openfeignConsul 作为服务注册表,使用 Ribbon 作为负载均衡器。我目前正在使用 spring-boot 2.3.10.RELEASE。

我真的很喜欢 spring-cloud-feign-inheritance 支持,据我了解,它允许我编写服务器端和客户端使用的单个接口。

https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html#spring-cloud-feign-inheritance

从 spring-boot2.4.x开始,spring 团队建议将 Ribbonspring-clould-loadbanced替换为替换,因为不再维护 Ribbon。

如果我有一个界面,可以说:


interface Greeting {
   @GetMapping
   String hello(String name);
}

通过使用 Spring Openfeign + Ribbon + Consul,我可以扩展它:


@FeignClient(name="my-service-id")
interface GreetingClient extends Greeting { }

有了它,我将拥有一个具有负载平衡功能的客户端实现。

我是否仍然可以完成与 with 相同的结果spring-cloud-openfeignspring-clould-loadbalancer或者我真的需要使用RestTemplateDiscoveryClient拥有我的 API 的客户端?

对此的全面了解将不胜感激,因为我在其他任何地方都找到了明智的答案。

标签: javaspringspring-bootload-balancing

解决方案


如果你想像使用 Ribbon 一样工作,需要将 spring cloud loadbalancer 连接到 consul。您可以阅读如何将 spring cloud loadbalanncer 连接到 connnect 链接 https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#serviceregistry


推荐阅读