【廣告】
分析之前
依我個人的理解來說限流的話應該靈活到可以針對每一個接口來做。比如說一個類里面有5個接口,那么我的限流插件就應該能針對每一個接口就行不同的限流方案。所以呢,既然針對的每個接口所以就需要一個可以標示這個接口的key(我取的是類名 方法名 入?yún)ⅲ?/p>
分布式限流強烈推薦使用redis lua或者nginx lua來實現(xiàn)。
這里用2個限流條件來做示例講一下常見的限流算法:
接口1它10秒鐘很大允許訪問100次
接口2它10秒鐘很大允許每個人訪問100次。
計數(shù)器算法
這個算法可以說是限流算法中簡單的一種算法了。
核心思想
計數(shù)器算法的意思呢就是當接口在一個時間單位中被訪問時,我就記下來訪問次數(shù),直到它訪問的次數(shù)到達上限。
涉及變量
接口(key)
時間單位(expire)
允許訪問多少次(limit)
訪問次數(shù)(value)
條件一
當一個請求過來時,我們就會得到這個key。
123456789 if(存在key){ value ; if(value>=limit){ 不能訪問 } }else{ 添加key,value為1 設置key過期時間為expire }
企業(yè): 南京正厚軟件技術有限公司
手機: 13357804560
電話: 025-86665061
地址: 南京鼓樓區(qū)湖南路16號5樓