Spring boot 为什么Ribbon HttpClient用于支持Spring Cloud Netflix中的RestTemplate?

Spring boot 为什么Ribbon HttpClient用于支持Spring Cloud Netflix中的RestTemplate?,spring-boot,spring-cloud,netflix,Spring Boot,Spring Cloud,Netflix,所以。我们开始与SpringCloud(和SpringCloudNetflix)库合作,在基于SpringBoot的服务中实现服务发现和客户端负载平衡。部分原因是我也错了,虽然它也支持重试,这在这样的设置中似乎非常重要 他解释说事实并非如此。这很公平,但文件可能已经清楚了这一点。至少会让我免于一些错误的假设 但是在调查了密码之后。我不明白为什么要使用Ribbon HttpClient?负载平衡器支持目前是通过Ribbon实现的 但是,执行实际HTTP请求的代码仅通过SpringCloud抽象AP

所以。我们开始与SpringCloud(和SpringCloudNetflix)库合作,在基于SpringBoot的服务中实现服务发现和客户端负载平衡。部分原因是我也错了,虽然它也支持重试,这在这样的设置中似乎非常重要

他解释说事实并非如此。这很公平,但文件可能已经清楚了这一点。至少会让我免于一些错误的假设

但是在调查了密码之后。我不明白为什么要使用Ribbon HttpClient?负载平衡器支持目前是通过Ribbon实现的

但是,执行实际HTTP请求的代码仅通过SpringCloud抽象API处理该请求。因此,从Ribbon专门使用(现在已弃用)HttpClient似乎毫无意义,因为它也可以使用SpringRestTemplate默认使用的实现

如果它的行为与配置为使用的任何客户端RestTemplate类似,或者实际上与Ribbon客户端类似,并且支持将其配置为执行应该能够执行的操作(如重试),则似乎更容易理解的行为。

Kristofer

我还在负载平衡的RestTemplate中寻找重试逻辑,结果证明RestClient(尽管它已被弃用)确实支持故障转移,对请求工厂的一个小更改似乎对我有用


Netflix团队特别要求它。我不太明白这一点。Netflix团队特别要求您调用一个不推荐使用的Jersey包装器,该包装器调用Apache HttpClient,而不是使用不同的Spring ClientHttpRequestFactory来获取实际的HTTP客户端?据我所知,RibbonClientHttpRequestFactory需要做的就是解析一个服务实例address.Nice。实际上,我们在RestTemplate上有一个动态代理,以解决另一个问题。因此,我最终在调用周围添加了一个Spring Retry RetryTemplate。这是目前的解决方案。