南京网站建设网站设计,wordpress.net,浙江省建筑信息港官网,装饰设计有限公司Spring Cloud为Netflix Zuul提供了支持 -Netflix Zuul是用于创建具有路由和过滤功能的边缘服务的工具包。 在Spring Cloud站点上非常全面地记录了Zuul代理支持。 我的目标是关注与代理服务处理超时有关的一小部分属性。 目标服务和网关 为了更好地研究超时#xff0c;我创建… Spring Cloud为Netflix Zuul提供了支持 -Netflix Zuul是用于创建具有路由和过滤功能的边缘服务的工具包。 在Spring Cloud站点上非常全面地记录了Zuul代理支持。 我的目标是关注与代理服务处理超时有关的一小部分属性。 目标服务和网关 为了更好地研究超时我创建了一个示例服务 此处提供代码该服务将可配置的“延迟”参数作为请求正文的一部分并且示例请求/响应如下所示 延迟5秒的样本请求 {id: 1,payload: Hello,delay_by: 5000,throw_exception: false
} 和预期的响应 {id: 1,received: Hello,payload: Hello!
} 该服务已在Eureka中以“ sample-svc”的ID注册该服务之上的Spring Cloud Zuul代理具有以下配置 zuul:ignoredServices: *routes:samplesvc:path: /samplesvc/**stripPrefix: trueserviceId: sample-svc 本质上通过Eureka将对/ samplesvc / uri的所有请求转发到名称为“ sample-svc”的歧义服务。 我还在网关顶部有一个UI可以使具有不同延迟的测试更加容易 服务延迟测试 将低“延迟”参数添加到服务调用时网关的行为没有任何与超时相关的问题但是如果将延迟参数更改为低至1到1.5秒则网关将超时。 原因是如果将网关设置为使用Eureka则网关将使用Netflix Ribbon组件进行实际呼叫。 此外将功能区调用包装在Hystrix中以确保该调用保持容错能力。 我们遇到的第一个超时是因为Hystrix的延迟容限阈值非常低因此调整hystrix设置应该可以使我们超过第一次超时。 hystrix:command:sample-svc:execution:isolation:thread:timeoutInMilliseconds: 15000 请注意用于配置的Hystrix“命令键”是在Eureka中注册的服务名称。 对于这个特定的Zuul调用来说这可能有些微不足道如果您可以全面地对其进行调整那么按照以下方式进行配置就可以了 hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 15000 进行此更改后通过网关对服务的请求最多可以延迟5秒而不会出现任何问题。 如果我们超过5秒尽管会再次超时。 现在我们达到了Ribbons超时设置可以通过调整如下所示的配置再次为特定的服务调用以细粒度的方式对其进行配置 sample-svc:ribbon:ReadTimeout: 15000 通过这两个超时调整基于网关的呼叫现在应该通过 结论 目的不是显示设置任意高的超时值的方法而只是显示如何设置可能更适合您的应用程序的值。 合理的超时对于确保不良的服务行为不会累积到用户非常重要。 要注意的一件事是如果通过指定服务的直接url将网关配置为不使用功能区和Eureka则这些超时设置根本不相关。 如果您有兴趣进一步探索请在此处找到示例。 翻译自: https://www.javacodegeeks.com/2016/06/spring-cloud-zuul-support-configuring-timeouts.html