ibcadmin 发表于 2019-8-13 18:11:04

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

<p><strong>简介</strong></p>
<p>  .net core使用ocelot---第一篇 简单使用 <br />  .net core使用ocelot---第二篇 身份验证使用 <br />  .net core使用ocelot---第三篇 日志记录 <br />  .net core使用ocelot---第四篇 限流熔断 </p>
<p>         本文介绍Ocelot的Qos(服务质量)模块。</p>
<p><strong>什么是QoS</strong></p>
<p>         服务质量是指能够为不同的应用程序、用户或数据流提供不同的优先级,或者保证数据流具有一定的性能级别。</p>
<p>         Ocelot利用Polly实现服务质量控制。我们用Ocelot 4.0.0创建我们的例子。</p>
<p><strong>准备</strong></p>
<p>         创建两个可以运行的项目。大致和上篇文章一致。</p>
<p>         运行后,我们会在http://localhost:9000/customers这个路由添加QoS。</p>
<p><strong>在configuration.json添加QoS</strong></p>
<p>         我们只是需要添加QoSOptions节点即可。</p>
<p><strong>QoSOptions包含3个重要的属性。</strong></p>
<ol>
<li>ExceptionAllowedBeforeBreaking</li>

</ol>
<p>该值必须大于0,该值是指当异常发生达到此值断路器会停止。</p>
<p>   2. DurationOfBreak</p>
<p>该值指定断路器停止后会保持多久。该值的单元是毫秒。</p>
<p>   3. TimeoutValue</p>
<p>该值指定当请求超过此值会被自动设置为超时。同样该值的单元是毫秒。</p>
<p>         下面是一个配置样例。</p>

{
    "DownstreamPathTemplate": "/api/values",
    "DownstreamScheme": "http",
    "DownstreamHostAndPorts": [
      {
      "Host": "localhost",
      "Port": 9001
      }
    ],
    "UpstreamPathTemplate": "/customers",
    "UpstreamHttpMethod": [ "Get" ],
    "QoSOptions": {
      "ExceptionsAllowedBeforeBreaking":2,
      "DurationOfBreak":5000,
      "TimeoutValue":2000
    }
}

<p>  上面的配置意味着,当我们访问http://localhost:9000/customers,如果超过两秒未回应,会报超时错误。如果服务抛出第二个异常,则服务器将在5秒内无法访问。</p>
<p><strong>注意</strong></p>
<p>         QoSOptions还有一个属性TimeoutStrategy,该属性的默认值是TimeoutStrategy.Pessimistic 然而在此项目,还是不要改变这个值。</p>
<p>         为了查看效果,我改一下APIService</p>

private static int _count = 0;

// GET api/values

public IEnumerable<string> Get()
{
    _count++;
    System.Console.WriteLine($"get...{_count}");
    if(_count <= 3)
    {
      Thread.Sleep(5000);
    }            
    return new string[] { "value1", "value2" };
}   

<p> </p>
<p>  效果如下</p>
<p><div align="center"></div></p>
<p>  当我们第一次访问时,断路器停止5秒。</p>
<p><div align="center"></div></p>
<p>  </p>
<p>  第二次访问它告诉我们断路器打开,我们五秒内不能访问服务。</p>
<p>  五秒后,服务可以访问。</p>
<p>  好了,就到这。</p>
<p>  源码在此。</p>
<p>  网盘链接:https://pan.baidu.com/s/17sqfGcYx8yEHRL_LwKAUlA <br />  提取码:p3d0 </p><br>来源:<a href="https://www.cnblogs.com/xlxr45/p/11321481.html" target="_blank">https://www.cnblogs.com/xlxr45/p/11321481.html</a><br>免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: .net core使用ocelot---第五篇 服务质量