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

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


咨詢
建站咨詢
