spring-cloud-Eureka
我想要支持的微服务应用程序中的以下功能。
1)负载平衡 - 如果我有 3 个节点用于一项服务,负载平衡应该发生在它们之间
2) 重试逻辑 - 如果其中一个节点没有响应,则应在回退到另一个节点之前重试一定次数(例如 3. 应该是可配置的)。
3) 断路器 - 如果由于某些原因,所有 3 个服务节点在访问数据库时出现问题并抛出异常或没有响应,则电路应该打开,调用回退方法,并且在服务恢复后电路自动关闭。
看了很多 Spring-cloud 的例子,我想通了
1)RestTemplate 将有助于选项 1。但是当 RestTemplate 访问一个服务实例并且如果节点失败时,它会尝试使用其他两个节点吗?
2) Hystix 将有助于断路器选项(以上 3)。但是如果只有一个节点没有响应,它会在打开电路并调用回退方法之前尝试其他节点。一旦服务恢复,它会自动关闭电路吗?
3)如何用spring-cloud获取retryLogic?我确实知道@Retryable
注释。但它会在以下情况下有所帮助吗?一个节点重试 3 次,失败后,在断路器启动之前尝试下一个节点 3 次和最后一个节点 3 次。
我看到所有这些配置都在 spring cloud 中可用。但是很难理解如何配置所有这些以获得有效的解决方案。
这是一个建议:
@HystrixCommand
@Retryable
public Object doSomething() {
// use your RestTemplate here
}
但我不完全知道它是否会帮助我解决我上面提到的所有微妙之处。
我确实看到有一个@FeignClient
. 但是从这个博客中,我了解到它为 HTTP 客户端请求提供了高级功能。它有助于重试和断路器以及负载平衡多合一吗?
谢谢