问题标签 [netflix-ribbon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-cloud - Spring Cloud:使用 Ribbon 和 Feign 客户端(但不是 Eureka)缺少服务器实例
我@FeignClient
第一次尝试在一个简单的 REST 客户端测试应用程序中使用。我想使用 Ribbon 在两个服务器实例之间进行负载平衡,但不使用 Eureka。按照文档,我已经配置了我application.yml
的listOfServers
属性并禁用了 Eureka。ribbon
我的客户端的名称与属性的 YAML 前缀名称相同。
application.yml
:
客户端代码:
当我调用应用程序时,我可以看到listOfServers
功能区正在拾取:
然而,客户端然后只使用没有服务器前缀的注释的值进行调用@RequestMapping
,显然失败了。
我期待它依次注入每个服务器(http:{server instance}/context-path/customers
),所以我显然在这里错过了一些东西。
谁能指出我正确的方向?
谢谢,
抢。
netflix-zuul - 在 Spring Cloud zuul 上获取电路的连接统计信息
我正在运行一些微服务实例,它们充当边缘路由器并具有 @EnableZuulProxy 注释。我编写了许多过滤器,它们控制进入系统的请求流。
我想做的是从幕后发生的事情中获取电路统计数据。我看到有一个底层的 netflix 类 DynamicServerListLoadBalancer 有一些我想看到的 sts。是否可以获取它的实例并在特定时间获取它的统计信息>
我可以看到它有这样的东西:(我格式化了我在日志中看到的日志语句)
所有这些对于获取和采取行动都是有价值的。大多数情况下,行为是将使用启发式方法反馈给系统。
spring-cloud - Spring Cloud Sidecar 负载均衡不重试失败
我有以下设置:
- Spring Cloud Eureka Server(带有 Spring Boot 应用程序
@EnableEurekaServer
) - Spring Cloud Sidecar(运行
:8080
) - 同一个 Spring Boot 应用程序的 2 个实例在 Eureka (
@EnableEurekaClient
) 上正确注册并公开一个GET /configurations
端点(在:8081
and上运行:8082
)
所有这些都在 Java 8 + Spring Cloud 1.1.0.M5 上运行。
通过 Sidecar 调用 REST 端点:8080
工作正常,请求负载平衡正确,客户端响应正确。如果我关闭 2 个应用程序实例之一并再次调用端点,客户端会收到此错误:
Sidecar 日志显示以下内容:
有趣的是,似乎检测到连接被拒绝错误(Stale connection detected
)并且完成了对另一个实例的调用(我确实看到了传入的请求),但结果仍然是错误。我希望重试调用的响应返回给客户端。
这是一个里程碑错误还是我缺少一些配置来使其工作?
java - 需要帮助配置 zuul + 功能区
我需要有关通过 Spring Boot 和 Zuul 配置功能区(负载平衡)的帮助。您可以在下面找到我的配置。
最初我会分享我当前的架构以及我想要达到的目标:
- 我有一个带网关的节点(Spring Boot + zuul + Ribbon)
- 我有另外两个节点将部署我的可扩展服务
祖尔配置:
只要你看到没有什么特别的。我的可扩展服务具有以下配置:
据我了解,这是一个非常常见的配置。
如果我直接向http://11.11.111.125:8092/outlets
or提出请求http://11.11.111.126:8093/outlets
,一切正常。
但是当我向网关发出请求时,我收到 404。我在日志中可以看到:
据我所知,服务请求不包含路径/出口。或者可能是我的功能区客户端配置错误?
而且我不知道如何解决它。
任何人都可以帮助我吗?
spring-cloud - 春云 + 丝带 + feign + zuul + eureka
如何通过 Ribbon 对微服务进行负载均衡(不是 feign)。我有 3 个微服务“M1”、“M2”和“M2_duplication”,“M1”通过 feign 与“M2”通信。我想如果“M2”获得太多流量,请求将被转发到“M2_duplication”。这怎么可能通过@ribbonclient 实现?
聚甲醛 M1:
M1中的feign调用:
应用 M1:
spring-cloud - 没有尤里卡的spring cloud、zuul代理和ribbon healthcheck问题
我已将我的 zuul 代理配置为与我的微服务的多个实例一起使用。我唯一做的就是将ribbon.listOfServers 关键字添加到我的配置中。
它适用于循环策略。
但是,当我关闭其中一个微服务实例功能区时,仍然会向该实例发送请求并将错误返回给客户端。
如何在 ZuulProxy 中启用 healthCheck 功能?
我的zuul配置如下图:
我的 Main Spring 类具有以下注释:
我得到以下异常:
spring - 带有客户端证书和 Docker 的 FeignClient
我要求我的微服务使用两种方式的 ssl。每个微服务都是一个 Spring Boot 应用程序,注释为:
每个 yml 都有类似的 eureka/ribbon 配置:
每个微服务都有一个控制器,它为各种功能公开一个 rest api。
当一个微服务需要调用另一个微服务端点时,我试图通过创建该微服务的客户端接口来实现:
这是 Feign 配置:
TrustingSSLSocketFactory 类复制自:https ://github.com/Netflix/feign/blob/master/core/src/test/java/feign/client/TrustingSSLSocketFactory.java并使用我的客户端证书/密码进行了修改。
User 微服务以及其他配置的安全性配置为:
要调用客户端,我只需注入客户端,并将其作为任何其他接口调用。
用户微服务有一个返回简单回复的测试端点。
当 UserClient 尝试与用户主机建立连接时,我收到 UnknownHostException。我可能没有正确实施这一点,并希望得到一些指导。
spring-cloud - Zuul/Ribbon/Hystrix 不在不同的实例上重试
背景
我正在使用带有 Zuul 和 Eureka 的 Spring cloud Brixton.RC2。
我有一个网关服务@EnableZuulProxy
和book-service
一个status
方法。status
通过配置,我可以通过休眠定义的时间来模拟该方法的工作。
Zuul 路线很简单
我运行两个实例book-service
。当我将睡眠时间设置为低于 Hystrix 超时阈值(1000 毫秒)时,我可以看到请求发送到图书服务的两个实例。这很好用。
问题
我知道如果 Hystrix 命令失败,Ribbon 应该可以在不同的服务器上重试该命令。这应该使失败对客户端透明。
我阅读了 Ribbon 配置并在 Zuul 中添加了以下配置:
现在我更新配置,只有一个服务休眠超过 1s,这意味着我有一个健康服务,一个坏的。
当我调用网关时,调用会发送到两个实例,一半的调用返回 500。在网关中,我看到 Hystrix 超时:
为什么 Ribbon 不在另一个实例上重试调用?
我在这里错过了什么吗?
参考
java - 服务注册中心和外部服务
通过我的自定义应用程序,我可以使用服务注册表和功能区自动在我的RestTemplate
. 我想与外部服务一样,比如说弹性搜索节点。我想要一个RestTemplate
从 eureka 获取工作节点并使用此信息进行故障转移的工具。我怎样才能做到这一点?或者是否有可能以另一种方式实现相同的目标?
spring - 如何根据 http 响应代码启用/禁用功能区负载平衡?
使用 netflix 功能区有时您不想进行负载平衡,例如,如果响应代码为 404,您不希望进行负载平衡,但对于 503,您确实需要。
现在的问题是如何配置功能区来设置我上面提到的规则?