gpt4 book ai didi

spring-boot - @RibbonClient 和 @LoadBalanced 之间的区别

转载 作者:行者123 更新时间:2023-12-02 04:21:47 25 4
gpt4 key购买 nike

我理解@LoadBalanced表示Rest模板应该基于使用Ribbon的客户端负载平衡,并检查Eureka服务器以将服务名称解析为主机/端口。

@RibbonClient有什么用。是否支持没有Eureka的原生Ribbon Client LB,并且在配置DiscoveryEnabledNIWSServerList时也支持Eureka Discover?

最佳答案

TL;DR:@LoadBalanced是标记注释 & @RibbonClient用于配置目的。

<小时/>

@LoadBalanced

用作标记注释,指示注释的RestTemplate应该使用RibbonLoadBalancerClient用于与您的服务交互。

反过来,这允许您对传递给 RestTemplate 的 URL 使用“逻辑标识符” 。这些逻辑标识符通常是服务的名称。例如:

restTemplate.getForObject("http://some-service-name/user/{id}", String.class, 1);

哪里some-service-name是逻辑标识符。

@RibbonClient

用于配置您的功能区客户端。

@RibbonClient 是必需的吗?

不!如果您使用服务发现并且可以接受所有默认功能区设置,则甚至不需要使用 @RibbonClient注解。

什么时候应该使用@RibbonClient

至少有两种情况需要使用@RibbonClient

  1. 您需要为特定功能区客户端自定义功能区设置
  2. 您没有使用任何服务发现

自定义功能区设置:

定义@RibbonClient

@RibbonClient(name = "some-service", configuration = SomeServiceConfig.class)
  • name - 将其设置为与您使用 Ribbon 调用的服务相同的名称,但需要对 Ribbon 与该服务的交互方式进行额外的自定义。
  • configuration - 将其设置为 @Configuration类,所有自定义项定义为 @Beans 。确保@ComponentScan没有选择此类否则它将覆盖所有功能区客户端的默认设置。

请参阅 Spring Cloud Netflix 文档中的“自定义 RibbonClient”部分 (link)

在没有服务发现的情况下使用功能区

如果您不使用服务发现,name @RibbonClient的领域注释将用于在 application.properties 中为您的配置添加前缀。以及您传递给 RestTemplate 的 URL 中的“逻辑标识符” .

定义@RibbonClient

@RibbonClient(name = "myservice")

然后在你的application.properties

myservice.ribbon.eureka.enabled=false
myservice.ribbon.listOfServers=http://localhost:5000, http://localhost:5001

关于spring-boot - @RibbonClient 和 @LoadBalanced 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com