簡(jiǎn)述:在一個(gè)高并發(fā)系統(tǒng)中對(duì)流量的把控是非常重要的,當(dāng)巨大的流量直接請(qǐng)求到我們的服務(wù)器上沒(méi)多久就可能造成接口不可用,不處理的話甚至?xí)斐烧麄€(gè)應(yīng)用不可用。比如最近就有個(gè)這樣的需求,我作為客戶端要向kafka生產(chǎn)數(shù)據(jù),而kafka的消費(fèi)者則再源源不斷的
在一個(gè)分布式系統(tǒng)系統(tǒng)軟件中對(duì)總流量的把控是非常重要的,當(dāng)極大的數(shù)據(jù)流量立即要求到他們的服務(wù)器上不久就有可能導(dǎo)致插口不能用,不解決得話乃至?xí)?dǎo)致全部運(yùn)用不能用。
例如近期就會(huì)有個(gè)這種要求,我做為手機(jī)客戶端要向kafka生產(chǎn)數(shù)據(jù),而kafka的顧客則再源源不斷的消費(fèi)數(shù)據(jù),并把交易的信息所有要求到web服務(wù)器,雖然進(jìn)行了負(fù)荷(有4臺(tái)web服務(wù)器)但業(yè)務(wù)數(shù)據(jù)的量都是很大的,每秒鐘很有可能有幾千條數(shù)據(jù)信息造成。假如經(jīng)營(yíng)者立即生產(chǎn)數(shù)據(jù)得話很有可能把web服務(wù)器壓垮。
對(duì)于此事就一定要做過(guò)流保護(hù)解決,每秒鐘生產(chǎn)制造一定額度的信息到kafka,那樣就可巨大層度的確保web的正常運(yùn)轉(zhuǎn)。
實(shí)際上無(wú)論解決哪種情景,實(shí)質(zhì)全是減少總流量確保使用的高可用性。
普遍優(yōu)化算法
針對(duì)過(guò)流保護(hù)普遍有二種優(yōu)化算法:
漏桶優(yōu)化算法
令牌桶優(yōu)化算法
漏桶優(yōu)化算法非常簡(jiǎn)單,便是將總流量放進(jìn)桶中,漏桶從而依照一定的速度排出,假如總流量太快得話便會(huì)外溢(漏桶并不會(huì)提升排出速度)。外溢的總流量則立即丟掉。
如圖所示:
這類作法簡(jiǎn)單直接。
漏桶優(yōu)化算法雖然簡(jiǎn)易,但卻不能解決現(xiàn)實(shí)情景,例如忽然猛增的總流量。
這時(shí)候就要使用令牌桶優(yōu)化算法:
令牌桶會(huì)以一個(gè)穩(wěn)定的速度向固定不動(dòng)容積尺寸桶中放進(jìn)動(dòng)態(tài)口令,當(dāng)有總流量來(lái)的時(shí)候則拿走一個(gè)或好幾個(gè)動(dòng)態(tài)口令。當(dāng)桶中并沒(méi)有動(dòng)態(tài)口令則將現(xiàn)階段要求拋棄或堵塞。
比較之下令牌桶能夠解決一定的應(yīng)急總流量.
RateLimiter完成
針對(duì)令牌桶的代碼實(shí)現(xiàn),能直接應(yīng)用Guava包里的RateLimiter。
啟用結(jié)論如下所示:
編碼看得出以每秒鐘向桶中放進(jìn)2個(gè)動(dòng)態(tài)口令,要求一次耗費(fèi)一個(gè)動(dòng)態(tài)口令。因此每秒鐘只有推送2個(gè)要求。根據(jù)圖上的時(shí)間段看來(lái)也的確這般(傳參是獲得此動(dòng)態(tài)口令所耗費(fèi)的的時(shí)間,類似都是每500ms一個(gè))。
應(yīng)用幾個(gè)特別注意的地區(qū):
容許先交易,后付款,意思就是它可以來(lái)一個(gè)要求的情況下一次性拿走好多個(gè)或者剩余每一個(gè)動(dòng)態(tài)口令乃至多取,可是后來(lái)的要求就得為上一次請(qǐng)求付錢(qián),它必須等候桶里的動(dòng)態(tài)口令補(bǔ)足以后能夠再次獲得動(dòng)態(tài)口令。
匯總
適用于單獨(dú)使用的過(guò)流保護(hù)夠用了,假如是分布式系統(tǒng)自然環(huán)境能夠依靠Redis來(lái)進(jìn)行。
騰佑科技(mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個(gè)國(guó)家版權(quán)局認(rèn)證。公司自成立以來(lái),一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計(jì)算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內(nèi)容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開(kāi)發(fā)等產(chǎn)品服務(wù)及行業(yè)客戶技術(shù)一體化智能解決方案;2018年成為百度智能云AI河南服務(wù)中心。
售前咨詢熱線:400-996-8756
備案提交:0371-89913068
售后客服:0371-89913000
搜索詞
熱門(mén)產(chǎn)品推薦