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