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

2022-10-17,,,

简介

   
  
   
   

         本文介绍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" };  
}   

 

  效果如下

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

  

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

  五秒后,服务可以访问。

  好了,就到这。

  源码在此。

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

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

下载本文的Word格式文档,以方便收藏与打印。