.net core使用ocelot---第五篇 服务质量
简介
本文介绍ocelot的qos(服务质量)模块。
什么是qos
服务质量是指能够为不同的应用程序、用户或数据流提供不同的优先级,或者保证数据流具有一定的性能级别。
ocelot利用polly实现服务质量控制。我们用ocelot 4.0.0创建我们的例子。
准备
创建两个可以运行的项目。大致和上篇文章一致。
运行后,我们会在这个路由添加qos。
在configuration.json添加qos
我们只是需要添加qosoptions节点即可。
qosoptions包含3个重要的属性。
- exceptionallowedbeforebreaking
该值必须大于0,该值是指当异常发生达到此值断路器会中断。
2. durationofbreak
该值指定断路器中断后会保持多久。该值的单位是毫秒。
3. timeoutvalue
该值指定当请求超过此值会被自动设置为超时。同样该值的单位是毫秒。
下面是一个配置样例。
{ "downstreampathtemplate": "/api/values", "downstreamscheme": "http", "downstreamhostandports": [ { "host": "localhost", "port": 9001 } ], "upstreampathtemplate": "/customers", "upstreamhttpmethod": [ "get" ], "qosoptions": { "exceptionsallowedbeforebreaking":2, "durationofbreak":5000, "timeoutvalue":2000 } }
上面的配置意味着,当我们访问,如果超过两秒未回应,会报超时错误。如果服务抛出第二个异常,则服务器将在5秒内无法访问。
注意
qosoptions还有一个属性timeoutstrategy,该属性的默认值是timeoutstrategy.pessimistic 然而在此项目,还是不要改变这个值。
为了查看效果,我改一下apiservice
private static int _count = 0; // get api/values [httpget] public ienumerable<string> get() { _count++; system.console.writeline($"get...{_count}"); if(_count <= 3) { thread.sleep(5000); } return new string[] { "value1", "value2" }; }
效果如下
当我们第一次访问时,断路器中断5秒。
第二次访问它告诉我们断路器打开,我们五秒内不能访问服务。
五秒后,服务可以访问。
好了,就到这。
源码在此。
网盘链接:https://pan.baidu.com/s/17sqfgcyx8yehrl_lwkaula
提取码:p3d0
上一篇: 08-函数
推荐阅读
-
使用.NET Core3.0创建一个Windows服务的方法
-
使用Swagger服务搭建.Net Core API
-
asp.net core 3.0 中使用 swagger
-
asp.net core系列 72 Exceptionless使用介绍
-
在.NET Core中使用异步编程的方法步骤
-
Asp.Net Core WebAPI使用Swagger时API隐藏和分组详解
-
或许是你应该了解的一些 ASP.NET Core Web API 使用小技巧
-
.NET CORE中使用AutoMapper进行对象映射的方法
-
详解.NET Core使用Quartz执行调度任务进阶
-
ASP.NET Core静态文件的使用方法