欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-30 18:19:00
简介 .net core使用ocelot 第一篇 简单使用 .net core使用ocelot 第二篇 身份验证使用 .net core使用ocelot 第三篇 日志记录 .net core使用ocelot 第四篇 限流熔断 本文介绍Ocelot的Qos(服务质量)模块。 什么是QoS 服务质量是指 ......

简介

   
  
   
   

         本文介绍ocelot的qos(服务质量)模块。

什么是qos

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

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

准备

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

         运行后,我们会在这个路由添加qos。

在configuration.json添加qos

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

qosoptions包含3个重要的属性。

  1. 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" };  
}   

 

  效果如下

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

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

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

  

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

  五秒后,服务可以访问。

  好了,就到这。

  源码在此

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