系統(tǒng)負(fù)載劇變下的9個(gè)管控策略
假如目前的系統(tǒng)有100臺(tái)機(jī)器,能夠支撐每天1億的點(diǎn)擊量(這個(gè)就簡(jiǎn)單比喻一下),然后系統(tǒng)流量劇變了要,我如何應(yīng)對(duì),系統(tǒng)有那些策略可以處理,這里總結(jié)了一下之前的一些做法。
1、水平擴(kuò)展
這個(gè)最容易理解,加機(jī)器,這樣的話對(duì)于系統(tǒng)剛剛開(kāi)始的伸縮性設(shè)計(jì)要求比較高,能夠非常靈活的添加機(jī)器,來(lái)應(yīng)對(duì)流量的變化。
2、系統(tǒng)分組
假如系統(tǒng)服務(wù)的業(yè)務(wù)不同,有優(yōu)先級(jí)高的,有優(yōu)先級(jí)低的,那就讓不同的業(yè)務(wù)調(diào)用提前分組好的機(jī)器,這樣的話在關(guān)鍵時(shí)刻,可以保核心業(yè)務(wù)。
3、系統(tǒng)限流
系統(tǒng)機(jī)器也加了,然后分組也做了,但是就是能力提升不上來(lái),說(shuō)白了就那樣了,這時(shí)候,可以設(shè)置系統(tǒng)的極限能力閥值,例如QPS***到多少,或者是同時(shí)并發(fā)的任務(wù)有多少,超過(guò)這個(gè)閥值之后就拒絕提供服務(wù)了。
4、業(yè)務(wù)引流
這個(gè)的話跟多的是業(yè)務(wù)做的事情,把流量引走,不要來(lái)請(qǐng)求系統(tǒng)了,一種簡(jiǎn)單的做法就是,冗余的業(yè)務(wù)直接隱藏掉鏈接,從開(kāi)源節(jié)流的角度來(lái)想,就是開(kāi)源。
5、業(yè)務(wù)降級(jí)
如果一個(gè)系統(tǒng)請(qǐng)求,涉及到多個(gè)邏輯處理,其中有的是可以沒(méi)有的,就是類(lèi)似錦上添花的那種,在高并發(fā)的情況下,可以通過(guò)系統(tǒng)開(kāi)關(guān)的形式,不去做這個(gè)請(qǐng)求,這樣就間接的提升了系統(tǒng)的能力,畢竟少做了一件事情。
6、依賴(lài)系統(tǒng)的能力擴(kuò)展
如果單獨(dú)看應(yīng)用系統(tǒng),可能東西要做的還真不多,但是要結(jié)合上下游的系統(tǒng),尤其是下游依賴(lài)的存儲(chǔ)系統(tǒng),數(shù)據(jù)庫(kù)是否能夠支持夠,分布式緩存是否能夠支持夠,都需要做好評(píng)估。
7、系統(tǒng)依賴(lài)梳理
上一條主要是說(shuō)存儲(chǔ)系統(tǒng),如果本身是SOA的形式,可能會(huì)依賴(lài)其他系統(tǒng),各個(gè)系統(tǒng)是否強(qiáng)弱依賴(lài),在那個(gè)環(huán)節(jié)依賴(lài)了,都需要評(píng)估出來(lái),可以人肉來(lái)做,也可以系統(tǒng)分析調(diào)用情況,來(lái)自動(dòng)的做出來(lái)。
8、系統(tǒng)容量評(píng)估
系統(tǒng)到底能夠撐多少的量,這個(gè)要有個(gè)客觀數(shù)字的評(píng)估,需要結(jié)合系統(tǒng)的負(fù)載以及響應(yīng)時(shí)間等數(shù)據(jù),搞出一個(gè)模型出來(lái),這樣方便數(shù)字化出來(lái)。
9、數(shù)據(jù)庫(kù)的讀寫(xiě)分離以及主備按照讀寫(xiě)比例進(jìn)行劃分
這個(gè)在數(shù)據(jù)庫(kù)方面可以做優(yōu)化