马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

.net core使用ocelot---第五篇 服务质量

[复制链接]
查看2468 | 回复0 | 2019-8-13 18:11:04 | 显示全部楼层 |阅读模式

简介

  .net core使用ocelot---第一篇 简单使用
  .net core使用ocelot---第二篇 身份验证使用
  .net core使用ocelot---第三篇 日志记录
  .net core使用ocelot---第四篇 限流熔断

本文介绍Ocelot的Qos(服务质量)模块。

什么是QoS

服务质量是指能够为不同的应用程序、用户或数据流提供不同的优先级,或者保证数据流具有一定的性能级别。

Ocelot利用Polly实现服务质量控制。我们用Ocelot 4.0.0创建我们的例子。

准备

创建两个可以运行的项目。大致和上篇文章一致。

运行后,我们会在http://localhost:9000/customers这个路由添加QoS。

在configuration.json添加QoS

我们只是需要添加QoSOptions节点即可。

QoSOptions包含3个重要的属性。

  1. ExceptionAllowedBeforeBreaking

该值必须大于0,该值是指当异常发生达到此值断路器会停止。

   2. DurationOfBreak

该值指定断路器停止后会保持多久。该值的单元是毫秒。

   3. TimeoutValue

该值指定当请求超过此值会被自动设置为超时。同样该值的单元是毫秒。

下面是一个配置样例。

  1. {
  2. "DownstreamPathTemplate": "/api/values",
  3. "DownstreamScheme": "http",
  4. "DownstreamHostAndPorts": [
  5. {
  6. "Host": "localhost",
  7. "Port": 9001
  8. }
  9. ],
  10. "UpstreamPathTemplate": "/customers",
  11. "UpstreamHttpMethod": [ "Get" ],
  12. "QoSOptions": {
  13. "ExceptionsAllowedBeforeBreaking":2,
  14. "DurationOfBreak":5000,
  15. "TimeoutValue":2000
  16. }
  17. }
复制代码

  上面的配置意味着,当我们访问http://localhost:9000/customers,如果超过两秒未回应,会报超时错误。如果服务抛出第二个异常,则服务器将在5秒内无法访问。

注意

QoSOptions还有一个属性TimeoutStrategy,该属性的默认值是TimeoutStrategy.Pessimistic 然而在此项目,还是不要改变这个值。

为了查看效果,我改一下APIService

  1. private static int _count = 0;
  2. // GET api/values
  3. [HttpGet]
  4. public IEnumerable<string> Get()
  5. {
  6. _count++;
  7. System.Console.WriteLine($"get...{_count}");
  8. if(_count <= 3)
  9. {
  10. Thread.Sleep(5000);
  11. }
  12. return new string[] { "value1", "value2" };
  13. }
复制代码

  效果如下

181527nj18levlqlrz7nkl.gif

  当我们第一次访问时,断路器停止5秒。

181528dcwwjzzmxwccmfac.png

  

  第二次访问它告诉我们断路器打开,我们五秒内不能访问服务。

  五秒后,服务可以访问。

  好了,就到这。

  源码在此。

  网盘链接:https://pan.baidu.com/s/17sqfGcYx8yEHRL_LwKAUlA
  提取码:p3d0


来源:https://www.cnblogs.com/xlxr45/p/11321481.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则