簡介 .net core使用ocelot 第一篇 簡單使用 .net core使用ocelot 第二篇 身份驗證使用 .net core使用ocelot 第三篇 日誌記錄 .net core使用ocelot 第四篇 限流熔斷 本文介紹Ocelot的Qos(服務質量)模塊。 什麼是QoS 服務質量是指 ...
簡介
.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個重要的屬性。
- 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