日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.Netcore 2.0 Ocelot Api网关教程(7)- 限流

發布時間:2023/12/4 asp.net 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Netcore 2.0 Ocelot Api网关教程(7)- 限流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文介紹Ocelot中的限流,限流允許Api網關控制一段時間內特定api的總訪問次數。
限流的使用非常簡單,只需要添加配置即可。

1、添加限流

修改?configuration.json?配置文件,對?UpstreamPathTemplate?為?/webapib/values?的配置修改如下:

{

"UpstreamPathTemplate": "/webapib/values",
"UpstreamHttpMethod": [ "Get" ],
"RateLimitOptions": {
"ClientWhiteList": [
"myclient"
],
"EnableRateLimiting": true,
"Period": "1m",
"PeriodTimespan": 30,
"Limit": 2
}
}

對?RateLimitOptions?中幾個配置項做下解釋:

  • ClientWhiteList:一個字符串數組,在請求頭中包含ClientId=xxx的請求不受限流控制,其中ClientId這個key可以修改,后邊會介紹,xxx表示配置的白名單。

  • EnableRateLimiting:Boolean值,是否啟用限流,只有為true時,配置生效。

  • Period:限流控制的時間段,可以輸入 1s(1秒),1m(1分),1h(1小時),1d(1天)類似的值,以此類推。

  • PeriodTimespan:超過限流限制的次數后,需要等待重置的時間(單位是秒)。

  • Limit:在Period時間內最大能訪問的數量。
    用一句話描述一下上邊的配置:對于除了請求頭中包含ClientId=myclient的請求啟用限流,1分鐘之內該api最多被訪問2次,如果已經達到2次,從第2次請求結束起30秒后才能進行下一次訪問。
    分別運行WebApiB和OcelotGetWay,使用Postman以get方式請求鏈接http://localhost:5000/webapib/values,如下所示:


    再看一下未達到限制的response header和達到限制的response header:

    可以看到在未達到限制時的header會返回前面配置的Perid和剩余請求次數。

    在達到限制時的header會返回剩余多長時間(秒)重置。
    再次用Postman以get的方式請求http://localhost:5000/webapib/values,不過此次要添加header:

    多次請求后同樣可以請求到數據,并沒有受到限流配置影響。

2、全局配置

同時在全局配置中可以添加一些關于限流的配置來控制是否在response header中返回限流相關的信息,以及限流的返回信息和狀態碼還有ClientIdHeader。
修改?GlobalConfiguration?如下:

"GlobalConfiguration": {
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 8500
},
"RateLimitOptions": {
"DisableRateLimitHeaders": true,
"QuotaExceededMessage": "Stop request plz!",
"HttpStatusCode": 999,
"ClientIdHeader": "cid"
}
}

重新運行Ocelot Api網關,請求鏈接如下:

Do not display rate limit headers.png

返回信息中不再包含限流相關信息。

?當達到限流時,返回的信息以及狀態碼也會根據配置發生變化:

細心的同學可能已經發現,在上邊的兩次請求中都添加了header ClientId=myclient,但是還是受到了限流控制,這是因為我們在上邊的全局配置中已經將ClientId修改為cid,修改header信息重新訪問,就不會再受到限流控制:

相關文章:

  • .Netcore 2.0 Ocelot Api網關教程(番外篇)- Ocelot v13.x升級

  • .Netcore 2.0 Ocelot Api網關教程(6)- 配置管理

  • 【.NET Core項目實戰-統一認證平臺】第十六章 網關篇-Ocelot集成RPC服務

  • ocelot 自定義認證和授權

  • eShopOnContainers 知多少[9]:Ocelot gateways

  • 使用Ocelot、IdentityServer4、Spring Cloud Eureka搭建微服務網關:(一)

原文地址:https://www.jianshu.com/p/f62ca68e26f2

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的.Netcore 2.0 Ocelot Api网关教程(7)- 限流的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。