.net core使用ocelot---第五篇 服務質量


簡介

  .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

該值指定當請求超過此值會被自動設置為超時。同樣該值的單位是毫秒。

         下面是一個配置樣例。

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

  上面的配置意味着,當我們訪問http://localhost:9000/customers,如果超過兩秒未回應,會報超時錯誤。如果服務拋出第二個異常,則服務器將在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM