WebApiThrottle限流框架介紹
為了防止網站意外暴增的流量比如活動、秒殺、攻擊等,導致整個系統癱瘓,在前後端介面服務處進行流量限制是非常有必要的。本篇主要介紹下Net限流框架WebApiThrottle的使用。
WebApiThrottle是一個專門為webApi限制請求頻率而設計的,支援寄宿OWIN上的中介軟體的限制過濾。服務端介面可以基於客戶端請求IP地址、客戶端請求key、及請求路由去限制webapi介面的訪問頻率。
使用nuget命令安裝WebApiThrottle:
PM> Install-Package WebApiThrottle
Nuget地址:
WebApiThrottle支援自定義配置各種限流策略。可以根據不同場景配置多個不同的限制,比如授權某個IP每秒、每分鐘、每小時、每天、每週的最大呼叫次數。 這些限制策略可以配置在所有請求上,也可以單獨給每個API介面去配置。
相關推薦
WebApiThrottle限流框架介紹
為了防止網站意外暴增的流量比如活動、秒殺、攻擊等,導致整個系統癱瘓,在前後端介面服務處進行流量限制是非常有必要的。本篇主要介紹下Net限流框架WebApiThrottle的使用。 WebApiThrottle是一個專門為webApi限制請求頻率而設計的,支援寄宿OWIN上的
WebApiThrottle限流框架——IP和客戶端key的白名單
如果請求是從一個白名單中的IP或客戶端key發起的,那麼限流策略將不會生效,這個請求的所有資訊也不會被儲存。 其IP白名單列表支援IP v4和v6的範圍配置,比如"192.168.0.0/24", "fe80::/10" 和 "192.168.0.0-192.168.0.25
WebApiThrottle限流框架——關於被拒請求的計數器
預設情況下,被拒絕的請求不會累加到WebApiThrottle的計數器裡。 比如一個客戶端在同一秒中請求了3次,而你配置的限制策略是每秒1次,那麼分鐘、小時、天的計數器只會記錄第一次呼叫,因為第一次請求不會被拒絕。如果你想把被拒絕的請求也計算到其他的計數器裡(分鐘、小時、天)
WebApiThrottle限流框架——獲取API的客戶端key
預設情況下,WebApiThrottle的ThrottlingHandler(限流處理器)會從客戶端請求head裡通過Authorization-Token key取值。如果你的API key儲存在不同的地方,你可以重寫ThrottlingHandler.SetIndenti
WebApiThrottle限流框架——執行期間更新限制頻率
為了更新限制策略物件,並在執行時使用新的ThrottlingHandler物件,需要引入WebApiThrottle 1.2版本後支援的ThrottleManager.UpdatePolicy函式。 在啟動時註冊ThrottlingHandler物件,並在建構函式中傳入Po
WebApiThrottle限流框架——儲存限流的資料
WebApiThrottle會在記憶體中儲存所有的請求資料,寄宿在IIS裡使用ASP.NET版本的cache、自寄宿在Owin上使用執行時版本的快取MemoryCache。如果你想改變請求資料儲存的策略,框架是支援redis、nosql、資料庫儲存的,這種情況下必須建立自己的
WebApiThrottle限流框架——用ThrottlingFilter、EnableThrottlingAttribute特性配置限制頻率
EnableThrottling與ThrottlingHandler是一個二選一的策略配置方案,二者會做同樣的事情,但ThrottlingHandler可以通過EnableThrottlingAttribute特性指定某個webapi的controllers和actions去
WebApiThrottle限流框架——關於ThrottlingMiddleware限制頻率
ThrottlingMiddleware是一個OWIN中介軟體部分,它的作用跟ThrottlingHandler一樣。使用ThrottlingMiddleware 你可以在webapi作用域範圍外配置限制策略,跟使用OAuth中介軟體或SignalR端點類似。 自寄宿配置例
WebApiThrottle限流框架——限流的請求日誌
如果你想記錄限流後的請求日誌,可以實現IThrottleLogger介面,新增到ThrottlingHandler裡。 public interface IThrottleLogger { void Log(ThrottleLogEntry entry); } 實
WebApiThrottle限流框架——在web.config或app.config中定義限制策略
在web.config或app.config中配置限制策略,通過ThrottlePolicy.FromStore加裝配置項。 config.MessageHandlers.Add(new ThrottlingHandler() { Policy = Throttle
WebApiThrottle限流框架——IP和客戶端key自定義限制頻率
你可以自定義基於ip或客戶端key的請求頻率限制,這些限制會重寫WebApiThrottle的預設配置。 需要注意的是,這些自定義策略需要寫到全域性配置裡才會生效,策略裡可以單獨給某個ip或某個key配置限流策略。 config.MessageHandlers.Add(n
WebApiThrottle限流框架——基於IP全侷限流
下面的程式碼是限制來自同IP請求的最大次數。如果在一分鐘內,同樣IP的客戶端分別呼叫api/values和api/values/1兩個介面, 那麼呼叫api/values/1的請求會被拒絕掉。 public static class WebApiConfig { p
WebApiThrottle限流框架——基於IP的端點限流
上面的api/values限流配置會對整個api/values開頭的API限流,同一秒內、同一ip訪問api/values後,所有後續訪問api/values/xxx的請求都會被拒絕掉。 如果配置了端點限流,同一秒內你也訪問api/values/1了,請求將不會被拒絕,因為它
WebApiThrottle限流框架——基於IP和客戶端key的端點限流
如果同一個ip的客戶端,在同一秒內,呼叫了2次api/values,其最後一次的呼叫將會被拒絕掉。 如果想介面通過唯一key去識別限制客戶端,忽略客戶端的ip地址限制,應該配置IpThrottling為false。 config.MessageHandlers.Add(n
WebApiThrottle限流框架——端點自定義限制頻率
你也可以為明確的路由地址去自定義限制頻率,這些限制配置會重寫WebApiThrottle的預設配置。也可以通過相關聯的路由地址去定義端點的限制規則,比如api/entry/1端點的請求僅僅是/entry/整個路由地址請求的一部分。 配置後,端點限制引擎會在請求的絕對URI中去
一個優秀的分散式spring boot/Spring Cloud API限流框架,特別適合微服務架構
啥也不說了,上程式碼先: https://github.com/tangaiyun/redislimiter-spring-boot redislimiter-spring-boot 一個優秀的分散式spring boot/Spring Cloud API限流框架,特別適合微服務架構. 快速開始 1
大資料流處理框架介紹
實時流處理簡單概述:實時是說整個流處理相應時間較短,流式技算是說資料是源源不斷的,沒有盡頭的。實時流處理一般是將業務系統產生的資料進行實時收集,交由流處理框架進行資料清洗,統計,入庫,並可以通過視覺化的方式對統計結果進行實時的展示。本文涉及到的框架或技術有 Fl
併發限流工具類RateLimiter介紹
RateLimiter 從概念上來講,速率限制器會在可配置的速率下分配許可證。如果必要的話,每個acquire() 會阻塞當前執行緒直到許可證可用後獲取該許可證。一旦獲取到許可證,不需要再釋放許可證。 校對注:RateLimiter使用的是一種叫令牌桶的流控演
DRF 框架總結 - 限流 Throttling
限流Throttling 可以對介面訪問的頻次進行限制,以減輕伺服器壓力。 使用 可以在配置檔案中,使用DEFAULT_THROTTLE_CLASSES 和 DEFAULT_THROTTLE_RATES進行全域性配置, REST_FRAMEWORK = { 'D
Hystrix 分散式系統限流、降級、熔斷框架
為什麼需要Hystrix 在大中型分散式系統中,通常系統很多依賴,如下圖: