当前位置: 首页 > 知识库问答 >
问题:

用Feign、Ribbon和Eureka管理容错

公良浩邈
2023-03-14

我想使用Feign Client、Ribbon和Eureka实现一个弹性的微服务架构,所以我遇到了一个问题。当一个微服务目标关闭时,我希望重定向到另一个微服务实例,而不让用户看到它。例如,我有4个微服务B实例和一个实例A:

共有1个答案

郜彬
2023-03-14

基本上,Ribbon应该已经为您找到了活动的实例--首先,Eureka存储并更新了关于哪些实例活动的信息,其次,Ribbon向实例运行健康检查请求。如果这不适合您,您可以尝试自定义功能区的轮询间隔。如果希望针对不同的实例重复一个失败的请求,可以使用Spring Cloud Netflix Ribbon和Spring Retry(参见文档)。

话虽如此,由于Spring Cloud Ribbon现在处于维护模式,不会将其纳入2020.0.0发布系列,因此我绝对不鼓励在这一点上添加它。可用的替代方案是Spring Cloud LoadBalancer。它支持从服务发现中检索活动的实例(不管有没有缓存和健康检查)。在这一点上它不支持重试,但在项目backlog中有一个问题。

 类似资料:
  • 我正在使用Spring Cloud和Netflix OSS Eureka和Ribbon开发微服务。我有另一个服务作为oauth-server运行,它提供OAuth2令牌。我的所有微服务都向Eureka注册,包括oauth-server。如果我使用oauth-server的硬编码url作为“clientCredentialsResourceDetails.setAccessTokenUri(”htt

  • 我正在使用带有 netflix 堆栈和 Spring 启动的微服务构建一个应用程序。困扰我的一件事是,我还没有集成测试,我可以在其中模拟周围的服务。 因此,我有一个服务 A,它是一个带有功能区的尤里卡客户端,用于在呼叫期间将尤里卡名称解析为已注册服务 B 的 URL。 所以理想情况下,我想用 spring boot 的 integrationtest 注释启动应用程序,使用 wiremock 模拟

  • 我用Ribbon和Netflix Eureka创建了一个简单的项目。尤里卡运作良好,我可以看到所有注册服务。但是,Ribbon负载平衡器看不到这些服务。实际上,在它打印的日志中,它在“当前服务器列表”中看到了服务器,但是我得到一个例外,没有找到任何实例。如果能给我一些提示,我将不胜感激,我花了很多时间(甚至几天)才弄明白。 日志(我用

  • introduction 在上一篇中阐述了ribbon的基本用法,但是可以发现服务列表是通过配置得来的,实际 情况通常是由负载均衡+服务发现来实现的,通过服务发现获取服务列表,负载均衡通过rule选择要调用的服务。服务发现可以通过eureka来实现,后期会讲解利用consul做服务发现。 eureka discovery service eureka服务发现在前面的文章中已经提供到,这里直接给出代

  • 此处为完整stacktrace 有没有办法解决这个问题?我已经看到它是由@EnableFeignClients和@EnableDiscoveryClient注释引起的。

  • Ribbon是否缓存Eureka条目(以避免对每个请求进行服务查找),如果是,它在Spring Cloud中是如何配置的?例如,像这样的模拟客户端将如何配置条目/刷新率等的存活时间: } 我见过如下spring boot配置条目: 所以在这种情况下,缓存似乎每秒都会与Eureka检查更改,并允许每个条目缓存条目存活2秒IIUC?此外,就spring boot/spring cloud和Netfli