Spring Cloud Zuul支持–配置超时

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,可以使具有不同延迟的测试更加容易:

ZuulGatewayUI

服务延迟测试

将低“延迟”参数添加到服务调用时,网关的行为没有任何与超时相关的问题,但是,如果将延迟参数更改为低至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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NYOJ 113

字符串替换 时间限制:3000 ms | 内存限制:65535 KB 难度:2描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入输入包含多行数据 每行数据是一个字符串,长度不超过1000 数据以EOF结束输出对于输入的…

java 多表格处理工具,表单工具十一大标准

现在市场上的表单工具百家争鸣,鱼目混杂。到底什么时候能解决客户问题表单,今天我们主要从客户角度来真正表单工具的十大标准:1) 零编码制作表单业务人员通过高效灵活的设计器,可以自由定制符合自己业务逻辑的表单,同时…

关于python的单线程和多线程

单线程 比如两件事,要相继执行,而不是一起执行 学习一下单线程和多线程的问题from time import ctime,sleep 单线程 print(单线程开始:) def music_single(name):for i in range(2):print(i was listening to music %s. %s %(name,ctime()))s…

C语言itoa()函数和atoi()函数详解(整数转字符C实现)

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说…

exo文件_您在eXo平台上的第一个Juzu Portlet

exo文件菊珠是佛教的佛珠。 一句话,我相信您已经学到了什么,印象深刻吗? 好吧,我在这里不谈论佛教。 Juzu还是一个用于快速开发Portlet(以及即将推出的独立应用程序)的新框架。 您可以在Juzu网站上找到所需…

matlab指定间隔符,在matlab中为.dat文件指定小数分隔符[复制]

您必须以文本形式读取数据(使用textscan,textread,dlmread,etc.)并转换为数字.假设您已将数据读入单元格数组,其中包含单元格中的每个数字:>> C {1,2345,3,14159,2,7183,1,4142,0,7071}C 1,2345 3,14159 2,7183 1,4142 0,7071使用strrep和str2double如下&…

volatile、static

谈到 volatile、static 就必须说多线程。 1、一个线程在开始执行的时候,会开启一片自己的工作内存(自己线程私有),同时将主内存中的数据复制到自己 的工作内存,从此读写数据都是自己的工作内存的数据,&…

最大流EK算法

最大流模板&#xff1a; #include <iostream> #include <queue> //#include <conio.h> using namespace std; #define arraysize 201 int maxData 0x7fffffff; int capacity[arraysize][arraysize]; //记录残留网络的容量 int flow[arraysize]; …

将自定义功能添加到Spring数据存储库

Spring Data非常方便&#xff0c;并且避免了样板代码&#xff0c;从而加快了开发速度。 但是&#xff0c;在某些情况下&#xff0c;注释查询不足以实现您可能想要实现的自定义功能。 因此&#xff0c;spring数据允许我们向Spring数据存储库添加自定义方法。 我将使用前一篇博客…

mysql concat的使用

想要在一个id前都加个0,如果处理呢? mysql concat的使用 update a_data set idCONCAT(0, id) where data_packet_id in (2774, 2775, 2776);转载于:https://www.cnblogs.com/djwhome/p/9554086.html

biweb wms门户网站php开源建站系统 v5.8.3,BIWEB WMS PHP开源企业建站系统 v5.8.5

BIWEB WMS 企业版升级啦&#xff01;&#xff01;&#xff01;现推出中英文双语版&#xff0c;并可以完美支持中文繁简转换。该系统需要PHP5以上版本&#xff0c;并要开启PDO和PDO_MYSQL组件&#xff0c;否则无法使用。BIWEB V5.8.5启用了新的底层框架&#xff0c;共享内存缓存…

Edmonds_Karp 算法 (转)

找了好久终于在这个牛这里找到为什么反向边要加回流量的原因了&#xff0c; 因为是初学教程&#xff0c;所以我会尽量避免繁杂的数学公式和证明。也尽量给出了较为完整的代码。 本文的目标群体是网络流的初学者&#xff0c;尤其是看了各种NB的教程也没看懂怎么求最大流的小盆友…

Grid表格的js触发事件

没怎么接触过Grid插件&#xff1b; 解决的问题是&#xff1a;点击Grid表行里的内容触发js方法弹出模态框&#xff0c;用以显示选中内容的详细信息。 思路&#xff1a;给准备要触发的列加上一个css属性&#xff0c;通过这个css属性来获取元素并触发js方法。 1 function flowGrid…

php 合并数组成父子关系,php - 将电子表格解析为PHP数组并返回具有父子关系的嵌套MLM表 - SO中文参考 - www.soinside.com...

这里有一些非递归代码可以让你开始(如果你还没有解决它)&#xff0c;它将根据从电子表格加载的$rows数组构建一个树。这个想法是每个节点都有一个名称和一个子数组。所以代码只是在步骤1中为每个人(父和子)创建一个节点&#xff0c;然后从下到上填写步骤2中的链接。代码不健壮&…

在JVM上对高并发HTTP服务器进行基准测试

在第一篇有关HTTP客户端的文章 &#xff08;我将您重定向到JVM上的高效HTTP的介绍&#xff09;之后&#xff0c;现在让我们讨论HTTP 服务器 。 有一些关于HTTP服务器的基准测试&#xff0c;但是它们经常受到诸如以下缺点的阻碍&#xff1a; 没有有效地执行高并发方案&#xf…

时间常用api

1.常用api 创建 Date 对象 - 年 - 月 - 日 - 小时 - 分 - 秒 - 星期 var nownew Date() var year now.getFullYear(); var month now.getMonth(); &#xff08;月 &#xff1a;0 - 11 &#xff0c;处理&#xff1a; month month 1;&#xff09; var da…

最大流的算法——Edmonds-Karp算法(最短路径增广算法)

最大流的算法——Edmonds-Karp算法(最短路径增广算法) 这里介绍一个最简单的算法:Edmonds-Karp算法 即最短路径增广算法 简称EK算法 EK算法基于一个基本的方法:Ford-Fulkerson方法 即增广路方法 简称FF方法 增广路方法是很多网络流算法的基础 一般都在残留网络中实现 其思路是每…

php做一个计算日期之间天数,PHP计算任意两个日期之间的天数

PHP面试题中&#xff0c;关于日期的题目作为基础考题经常出现&#xff0c;下面讨论一下获取两个日期之间的天数的方法。收到一个答案&#xff0c;拆分年、月、日&#xff0c;分别进行减法&#xff0c;然后统计天数&#xff0c;好累。针对低版本的PHP可以用下面的方式搞定&#…

[usaco2004][bzoj3379] 交作业

按距离从小到大排序 f[i][j][0或1]表示在i或j还有i-j没有完成 转移 tmpdp[i][j][0];tmpmin(tmp,max(dp[i][j1][1]a[j1].dist-a[i].dist,a[i].t));tmpmin(tmp,max(dp[i-1][j][0]a[i].dist-a[i-1].dist,a[i].t)); 注意边界 比如&#xff1a;dp[0][i],dp[0][c3]初值应为inf #inclu…

程序员的快速成长之路

在一封与TechRepublic会员交流的邮件当中&#xff0c;他提到了面向程序员的博客、文章及杂志分成两类&#xff1a;面向初学者类&#xff08;"hello world"这种类型的教程&#xff09;以及面向专家类&#xff08;MSDN杂志&#xff09;。这个观点很好&#xff0c;有关程…