相关疑难解决方法(0)

Spring cloud - 如何获得分布式弹簧应用的重试,负载平衡和断路器的好处

我想在spring-cloud-Eureka支持的微服务应用程序中使用以下功能.

1)负载平衡 - 如果我有一个服务的3个节点,它们之间应该发生负载平衡

2)重试逻辑 - 如果其中一个节点没有响应,则在返回另一个节点之前,应该对某个数字(例如3.应该是可配置的)进行重试.

3)断路器 - 如果由于某些原因,所有3个服务节点都有一些问题访问db并抛出异常或没有响应,电路应该打开,后退方法调用,电路在服务恢复后自动关闭.

看一下Spring-cloud的很多例子,我想通了

1)RestTemplate将帮助选项1.但是当RestTemplate访问一个服务实例并且如果节点失败时,它会尝试其他两个节点吗?

2)Hystix将帮助断路器选项(上面的3).但是如果只有一个节点没有响应,它会在打开电路和调用回退方法之前尝试其他节点.一旦服务恢复,它会自动关闭电路吗?

3)如何使用spring-cloud获得retryLogic?我知道@Retryable注释.但它会在以下情况下有所帮助吗?重试一个节点3次,失败后,在断路器启动前尝试下一个节点3次,最后一个节点3次.

我看到所有这些配置都可以在Spring云中使用.但是要很难理解如何配置所有这些以获得有效的解决方案.

这是一个建议:

@HystrixCommand
@Retryable
public Object doSomething() {
   // use your RestTemplate here
}
Run Code Online (Sandbox Code Playgroud)

但我不完全知道它是否会帮助我解决上面提到的所有细微之处.

我确实看到有一个@FeignClient.但是从这篇博客中我了解到它为HTTP客户端请求提供了高级功能.它是否有助于重试和断路器以及负载平衡一体机?

谢谢

spring-boot spring-cloud netflix-eureka

6
推荐指数
1
解决办法
3730
查看次数

标签 统计

netflix-eureka ×1

spring-boot ×1

spring-cloud ×1