新聞中心
面對現(xiàn)在網(wǎng)站出現(xiàn)的大量惡意請求,把大量的計算和網(wǎng)絡(luò)資源占用,威脅網(wǎng)站安全性,限制這種惡意請求,采取動態(tài)限流是一種很有效的技術(shù)方案,但是維護一整套的限流系統(tǒng)的運行,需要消耗較多的系統(tǒng)資源和開發(fā)成本,本文利用Redis中SetNX實現(xiàn)無須維護的動態(tài)限流解決方案介紹。

創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為興文企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè),興文網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
什么是動態(tài)限流?動態(tài)限流是一種新興的系統(tǒng)層面技術(shù),它通過實時監(jiān)控當前系統(tǒng)流量,以每秒鐘請求數(shù)為標準對惡意IP進行攔截,限制其訪問的頻率,從而實現(xiàn)安全防護。我們知道,一般情況下,受限流的惡意IP會被限制在1-2秒內(nèi)發(fā)出最多3次請求,超出此限制時,將凍結(jié)IP,直至解封才能繼續(xù)使用。具體實現(xiàn)可以用后文要講的Redis實現(xiàn)。
Redis是一種非常受歡迎的開源key-value分布式存儲系統(tǒng)。Redis由C語言設(shè)計實現(xiàn),它可以容納多種數(shù)據(jù)類型,可靠性,性能等都非常優(yōu)秀,因此Redis在限流和其他場景中也有廣泛的應(yīng)用。其中SetNX是一種實現(xiàn)Redis動態(tài)限流的思路,我們這里把它作為例子來講述Redis的動態(tài)限流實現(xiàn)方式。
具體來說,利用SetNX實現(xiàn)的動態(tài)限流,可以用以下流程進行描述:
– 以IP作為key,時間戳作為value,這樣在Redis中就會出現(xiàn)一組key-value;
– 對于非法IP,直接返回 403;
– 檢查每次客戶端訪問,搜索Redis中是否已存在當前IP;
– 如果存在,則檢查當前時間戳是否在規(guī)定的時間周期內(nèi);
– 如果在規(guī)定的時間周期內(nèi),則返回403,否則更新時間戳,允許訪問;
– 如果不存在,則執(zhí)行SetNX操作,將當前IP與時間戳加入到Redis中;
– 不管是否返回403,均需要查找Redis中的訪問記錄,然后在規(guī)定的時間周期到期后,自動刪除該key,以便下次訪問時重新添加新的IP與時間戳。
上述流程說明在使用SetNX實現(xiàn)動態(tài)限流時,只要檢查Redis中是否存在當前IP,就能準確地限制不好的請求,實現(xiàn)有效的動態(tài)限流,同時由于無需維護整個系統(tǒng),可以節(jié)省一定的系統(tǒng)開發(fā)和維護成本,非常方便簡潔。
綜上所述,Redis SetNX是一種非常方便的實現(xiàn)動態(tài)限流的方式,只要搭建一個簡單的key-value集合,就能實現(xiàn)自動化的帶有活動的限流管理,減少系統(tǒng)開發(fā)和維護的成本。
香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡稱香港主機/香港空間。香港虛擬主機特點是免備案空間開通就用, 創(chuàng)新互聯(lián)香港主機精選cn2+bgp線路訪問快、穩(wěn)定!
文章題目:利用RedisSetNX實現(xiàn)動態(tài)限流(redis限流setnx)
轉(zhuǎn)載源于:http://m.5511xx.com/article/cdpocic.html


咨詢
建站咨詢
