400-638-8808
|
微信公眾號(hào)








穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無(wú)阻

協(xié)同辦公 資源管理

超大郵件 超級(jí)功能

智能反垃圾郵件技術(shù)
易管理 免維護(hù)

微信掃一掃 關(guān)注"天下數(shù)據(jù)"商品一律九折
![]()
搜索"朗玥科技"關(guān)注,了解最新優(yōu)惠

在一個(gè)高并發(fā)系統(tǒng)中對(duì)流量的把控是非常重要的,當(dāng)巨大的流量直接請(qǐng)求到我們的服務(wù)器上沒(méi)多久就可能造成接口不可用,不處理的話(huà)甚至?xí)斐烧麄(gè)應(yīng)用不可用。
比如最近就有個(gè)這樣的需求,我作為客戶(hù)端要向kafka生產(chǎn)數(shù)據(jù),而kafka的消費(fèi)者則再源源不斷的消費(fèi)數(shù)據(jù),并將消費(fèi)的數(shù)據(jù)全部請(qǐng)求到web服務(wù)器,雖說(shuō)做了負(fù)載(有4臺(tái)web服務(wù)器)但業(yè)務(wù)數(shù)據(jù)的量也是巨大的,每秒鐘可能有上萬(wàn)條數(shù)據(jù)產(chǎn)生。如果生產(chǎn)者直接生產(chǎn)數(shù)據(jù)的話(huà)極有可能把web服務(wù)器拖垮。
對(duì)此就必須要做限流處理,每秒鐘生產(chǎn)一定限額的數(shù)據(jù)到kafka,這樣就能極大程度的保證web的正常運(yùn)轉(zhuǎn)。
其實(shí)不管處理何種場(chǎng)景,本質(zhì)都是降低流量保證應(yīng)用的高可用。
常見(jiàn)算法
對(duì)于限流常見(jiàn)有兩種算法:
漏桶算法
令牌桶算法
漏桶算法比較簡(jiǎn)單,就是將流量放入桶中,漏桶同時(shí)也按照一定的速率流出,如果流量過(guò)快的話(huà)就會(huì)溢出(漏桶并不會(huì)提高流出速率)。溢出的流量則直接丟棄。
如下圖所示:

這種做法簡(jiǎn)單粗暴。
漏桶算法雖說(shuō)簡(jiǎn)單,但卻不能應(yīng)對(duì)實(shí)際場(chǎng)景,比如突然暴增的流量。
這時(shí)就需要用到令牌桶算法:
令牌桶會(huì)以一個(gè)恒定的速率向固定容量大小桶中放入令牌,當(dāng)有流量來(lái)時(shí)則取走一個(gè)或多個(gè)令牌。當(dāng)桶中沒(méi)有令牌則將當(dāng)前請(qǐng)求丟棄或阻塞。
相比之下令牌桶可以應(yīng)對(duì)一定的突發(fā)流量.

RateLimiter實(shí)現(xiàn)
對(duì)于令牌桶的代碼實(shí)現(xiàn),可以直接使用Guava包中的RateLimiter。

調(diào)用結(jié)果如下:

代碼可以看出以每秒向桶中放入兩個(gè)令牌,請(qǐng)求一次消耗一個(gè)令牌。所以每秒鐘只能發(fā)送兩個(gè)請(qǐng)求。按照?qǐng)D中的時(shí)間來(lái)看也確實(shí)如此(返回值是獲取此令牌所消耗的時(shí)間,差不多也是每500ms一個(gè))。
使用有幾個(gè)值得注意的地方:
允許先消費(fèi),后付款,意思就是它可以來(lái)一個(gè)請(qǐng)求的時(shí)候一次性取走幾個(gè)或者是剩下所有的令牌甚至多取,但是后面的請(qǐng)求就得為上一次請(qǐng)求買(mǎi)單,它需要等待桶中的令牌補(bǔ)齊之后才能繼續(xù)獲取令牌。
總結(jié)
針對(duì)于單個(gè)應(yīng)用的限流夠用了,如果是分布式環(huán)境可以借助Redis來(lái)完成。
產(chǎn)品與服務(wù)
香港服務(wù)器 香港高防服務(wù)器 美國(guó)服務(wù)器 韓國(guó)服務(wù)器 新加坡服務(wù)器 日本服務(wù)器 臺(tái)灣服務(wù)器云服務(wù)器
香港云主機(jī) 美國(guó)云主機(jī) 韓國(guó)云主機(jī) 新加坡云主機(jī) 臺(tái)灣云主機(jī) 日本云主機(jī) 德國(guó)云主機(jī) 全球云主機(jī)高防專(zhuān)線(xiàn)
海外高防IP 海外無(wú)限防御 SSL證書(shū) 高防CDN套餐 全球節(jié)點(diǎn)定制 全球?qū)>(xiàn)GPLC關(guān)于我們
關(guān)于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團(tuán)隊(duì)建設(shè) 加入天下數(shù)據(jù) 媒體報(bào)道 榮譽(yù)資質(zhì) 付款方式關(guān)注我們
微信公眾賬號(hào)
新浪微博
天下數(shù)據(jù)手機(jī)站 關(guān)于天下數(shù)據(jù) 聯(lián)系我們 誠(chéng)聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊(cè) 網(wǎng)站地圖
天下數(shù)據(jù)18年專(zhuān)注海外香港服務(wù)器、美國(guó)服務(wù)器、海外云主機(jī)、海外vps主機(jī)租用托管以及服務(wù)器解決方案-做天下最好的IDC服務(wù)商
《中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證》 ISP證:粵ICP備07026347號(hào)
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運(yùn)營(yíng))聯(lián)合版權(quán)
深圳總部:中國(guó).深圳市南山區(qū)深圳國(guó)際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號(hào)建安商業(yè)大廈7樓
7×24小時(shí)服務(wù)熱線(xiàn):4006388808香港服務(wù)電話(huà):+852 67031102
本網(wǎng)站的域名注冊(cè)業(yè)務(wù)代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品