前提
- 在大量并發(fā)的環(huán)境下狡赐,為了防止由于請(qǐng)求暴漲腿堤,導(dǎo)致系統(tǒng)崩潰從而引起雪崩,一般會(huì)對(duì)流量做一定的限制操作。比如等待窗轩、排隊(duì)账千、降級(jí)及穗、拒絕服務(wù)挚瘟、限流等。
說(shuō)明
- 漏桶算法(Leaky Bucket)是網(wǎng)絡(luò)世界中流量整形或速率限制(Rate Limiting)時(shí)經(jīng)常使用的一種算法兴猩,它的主要目的是控制數(shù)據(jù)注入到網(wǎng)絡(luò)的速率期吓,平滑網(wǎng)絡(luò)上的突發(fā)流量。漏桶算法提供了一種機(jī)制倾芝,通過(guò)它讨勤,突發(fā)流量可以被整形以便為網(wǎng)絡(luò)提供一個(gè)穩(wěn)定的流量。
算法的基本過(guò)程
- 到達(dá)的數(shù)據(jù)包(網(wǎng)絡(luò)層的PDU)被放置在底部具有漏孔的桶中(數(shù)據(jù)包緩存)
- 漏桶最多可以排隊(duì)b個(gè)字節(jié)晨另,漏桶的這個(gè)尺寸受限于有效的系統(tǒng)內(nèi)存潭千。如果數(shù)據(jù)包漏桶已經(jīng)滿了,那么數(shù)據(jù)包應(yīng)被丟棄
- 數(shù)據(jù)包從漏桶中漏出借尿,以常量速率(r字節(jié)/秒)注入網(wǎng)絡(luò)刨晴,因此平滑了突發(fā)流量
- 漏桶算法強(qiáng)調(diào)的是在桶中緩存數(shù)據(jù)包,然后以一定的速率從桶中取出數(shù)據(jù)包路翻,從而實(shí)現(xiàn)了限流狈癞,防止突發(fā)流量
圖說(shuō)明
圖片截圖來(lái)自網(wǎng)絡(luò)
圖片截圖來(lái)自網(wǎng)絡(luò)