问题标签 [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 - 通过 Resttemplate 与 Spring Cloud 进行服务到服务通信(Oauth 2)
您好我正在尝试通过 Rest-template 从不同的服务调用 Spring Boot 服务。我现在使用 consul 作为服务发现 Service1-->rest-->Service2
我不希望通过 Zuul 的这种通信 service1 应该能够直接调用 service2 但功能区应该通过 consul 发现第二个服务。一切正常,但是当我尝试将 service1 调用到 service2 时,我在 service1 处遇到异常
下面是我的代码
注意:一切都在 https 上
spring-boot - Spring Cloud / Netflix OSS 中的负载均衡
我正在查看 Spring Boot / Cloud 和 Netflix FW(Eureka,Ribbon)。我正在处理这个例子:
https://spring.io/blog/2015/07/14/microservices-with-spring 基本上是关于一些使用 Eureka Service Registry 的小型 Spring Boot 微服务。
我现在想启动同一个服务的多个实例(在这个例子中是 AccountService,在不同的端口上)。我阅读的所有内容(以上文章,http://callistaenterprise.se/blogg/teknik/2015/04/10/building-microservices-with-spring-cloud-and-netflix-oss-part-1/等)表明,如果我这样做了,所有实例都冗余地向 Eureka 注册,当我调用服务时,应用客户端负载平衡并动态选择要调用的服务。
然而,这不是发生的事情。当我启动第一个服务实例时,它会注册并显示在 Eureka Dashboard 中。当我在不同的端口上启动相同的服务时,它也会注册,但它似乎替换了以前的服务实例:Eureka Dashboard 仍然只显示一个可用区 = 1(应该是 2?)的实例并且所有调用此服务由第二个实例处理。当我查询注册表时,只应用了这个实例。
当我停止第二个实例时,一段时间后尤里卡切换回第一个实例,它仍然有效。所以它似乎保留了所有实例,但只使用最新注册的实例。
我错过了什么重要的事情吗?我认为应该同时使用所有实例?
========== 应用程序属性是(这些实际上与 Spring 站点中的示例相同):
尤里卡服务器
帐户服务器
spring - 在 SpringClientFactory AppContext 中请求作用域 bean
我正在使用 aSpringClientFactory
创建一个带有自定义的功能区客户端com.netflix.niws.client.http.RestClient
。这RestClient
与@Bean
请求范围内的(即@Scope("request")
)连接。这一切都是作为 Brixton 发布系列的一部分完成的。
这SpringClientFactory
有一个ApplicationContext
它自己为给定实例化的name
,并且这个上下文没有任何注册的范围。
我有一个扩展的解决方法SpringClientFactory
,但感觉有点笨拙,并且它对BeanFactory
可用的类型做出假设。
有没有人尝试在 a 中使用替代 bean 范围(请求、会话、全局会话)SpringClientFactory
?
这个更针对 Spring Cloud 维护者:是否有意识的原因是范围没有从父上下文传播到在NamedContextFactory
? 似乎这可能只是一个疏忽。
spring-cloud - 使用尤里卡的spring cloud zuul故障转移并动态部署多个尤里卡实例
最近我一直在做一个 API 网关项目。然而,对于服务注册和发现,我遇到了一些关于 Zuul 故障转移和动态部署多个 Eureka 实例的问题。以下是我的项目。
尤里卡服务器项目
EurekaBootstrap.java
配置:应用程序.yml
我将 peer1 和 peer2 配置为主机中的 localhost
zuul 带丝带项目
ZuulBootstrap.java
预过滤器:SimpleFilter.java
zuul 配置:application.yml
目标服务项目 只是带有 yml 配置的普通项目
我没有解析这个项目的源代码,而是配置配置文件
源代码结束,附件是源代码
我通过更改活动启动了2个eureka实例,然后启动了zuul服务器。最后,我通过更改服务器端口启动了 2 个目标服务。我使用 JMeter 进行了一些测试。我在并发测试中停止了一个目标服务,然后一些请求失败了关于socket closed。
所以问题是为什么 zuul 和ribbon 无法处理故障转移,或者我应该如何配置才能达到这种效果?
第二个问题是每次部署另一个eureka server时,需要编辑eureka server配置、zuul配置和目标服务配置。因此,所有这些项目都需要重新启动。我不能接受,那么有没有办法在不编辑其他项目的配置并重新启动它们的情况下动态更改 eureka 服务器的数量?
最后,我希望 Pivotal 团队可以更新 Spring Cloud 的文档以提供更详细的信息。
spring-boot - 将可伸缩性问题与服务分开
我使用 Spring RestTemplate 在本地环境中使用其他服务。
在可扩展性的生产环境中,我想使用像 eureka 和功能区客户端这样的服务注册表。
我想将我的代码与 eureka 和功能区客户端完全分离,这样我就可以在本地运行我的服务,而无需为 eureka 运行单独的服务、向 eureka 注册服务以及在编排期间对 eureka 进行查找的开销。
我已经使用弹簧配置文件功能分离出与本地和生产相关的代码和配置。
我被困在使用 RestTemplate 调用其他服务的地方。
我想将负载平衡的休息模板用于生产环境,将普通休息模板用于本地服务调用。
我很难根据我的环境注入 RestTemplate 的类型。
有人可以帮助我注入 RestTemplate 的正确方法,以便我的服务可以在本地运行,并在 Prod 环境中运行时利用服务注册表和功能区客户端而不影响代码。
谢谢, 斯里
spring - @LoadBalanced RestTemplate 调用嵌套的上下文端点
下面的指南页面很棒,可以作为 Spring Boot 应用程序中功能区的基本案例。
https://spring.io/guides/gs/client-side-load-balancing/
一旦端点映射嵌套,该示例就会停止工作 - 例如添加
@RequestMapping(value = "/welcome")
在班级层面
然后将客户端中的@LoadBalanced RestTemplate 调用从
至
在直接访问http://localhost:8090/welcome/greeting时,调用失败并附加堆栈跟踪仍然可以正常工作。将功能区配置为对长和嵌套 URL 端点(例如 domain.com/x/y/z/p/q)的请求进行负载平衡的适当方法是什么?
堆栈跟踪:
load-balancing - Spring Cloud Consul + Ribbon 跨多个数据中心?
目前我正在使用 Spring Cloud Consul 进行服务发现,并想使用 Ribbon 来负载平衡服务调用。我能够成功地在同一个 DC 中的所有服务实例之间进行负载平衡(使用 RestTemplate),但是当这些服务被取消注册时,它从未在另一个 DC 中看到该服务的实例。从 Consul 的角度来看,两个数据中心都使用 WAN-Gossip 正确连接。我需要在 Spring Cloud Consul 中配置什么来“查看”其他数据中心/区域吗?我的最终目标是在 DC1 内的服务之间实现负载平衡,当 DC1 中的所有实例都关闭时,切换到 DC2 中的负载平衡。
谢谢!
spring-cloud-netflix - spring-cloud - 仅带有 Ribbon 的 Hystrix 流
在spring-boot-starter-actuator
使用 Ribbon/Feign 客户端的 Web 应用程序中,不启用 hystrix 流/端点。
HystrixCircuitBreakerConfiguration.HystrixWebConfiguration
即使条件为真,也不会激活。
如何为 Feign/Ribbon 启用 hystrix 流?
环境:Spring Boot 1.3.5.RELEASE,Spring Cloud Brixton.SR4
spring-boot - Netflix 功能区和 Hystrix 超时
我们在项目中使用 Spring Cloud。我们有几个微服务,每个都有自己的 .yml 文件。
以下属性仅在zuul服务器中
测试1:
账户服务:
这个服务是我调用来测试超时的,我通过zuul调用请求,即使用端口8006。
上述服务使用 Spring RestTemplate 在内部调用以下服务。我通过在Association Service中添加如下所示的 5000 毫秒睡眠时间开始测试,并向Accounts Service发出请求(getAccounts 调用)。
协会服务:
以下是我在协会服务中遇到的错误
以下是我在Accounts Service中遇到的错误
如果我将睡眠时间保持为 4500,它会给我响应,但如果 >=4800,它会引发上述异常。我认为这与功能区超时无关,而是与其他有关。在某一点之后出现上述异常的任何具体原因。
测试 2
然后我尝试直接在Accounts Service中保持 75000 毫秒的睡眠时间并删除睡眠时间关联服务。
在这种情况下,我得到了“异常”:“com.netflix.zuul.exception.ZuulException”,
在我的 APIGateway(Zuul application) 日志中,我看到以下错误。
我认为这与 Ribbon ConnectTimeout 或 ReadTimeout 无关。这个错误是因为属性"execution.isolation.thread.timeoutInMilliseconds: 60000"。我还将此属性减少到 10000 毫秒以测试行为,如果睡眠时间更长(例如:12000),则会得到相同的异常。
我想了解 Ribbon ConnectTimeout 和 Read-timeout vs Hystrix timeout 以及如何在我的应用程序中测试功能区超时。另外,如果我想为不同的微服务设置不同的超时时间,我是否将这些属性保存在各自的 .yml 文件中?有什么想法吗?
我正在尝试创建一个供我的团队使用的文档,以便开发人员轻松了解这些超时选项在 Spring Cloud 中的工作方式。
(描述很长,但为了更清楚,我必须详细写下)
java - 使用前置过滤器和尤里卡的Zuul动态路由
我正在创建一个包含 3 个(服务 A、服务 B 和服务 C)微服务的示例。所有 3 项服务以及网关服务 (zuul) 都在 eureka 中注册。我的用例是:
1)所有请求都会通过网关服务进入系统——工作
2)对于每个针对Service C的请求,网关服务应该首先调用Service A来执行某些动作。在服务 A 的肯定响应中,请求应该被转发到服务 B。一旦我们从服务 A 和服务 B 得到肯定的响应,请求最终应该被转发到服务 C。
我想使用zuul路由过滤器和eureka动态实现上述用例。我查看了PreDecoration过滤器并尝试了以下操作。我的网关服务在 8080 端口上运行