欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

你們都是怎么確保系統(tǒng)不被突然的訪問流量壓垮的

錢良釵2年前17瀏覽0評論

你們都是怎么確保系統(tǒng)不被突然的訪問流量壓垮的?

確保系統(tǒng)的高可用,要做的事情非常多,比如使用 Redis 緩存數(shù)據(jù)庫的數(shù)據(jù),降低數(shù)據(jù)庫的壓力,同時也要注意緩存穿透、雪崩、擊穿等問題;但要是說到“不要被突增的訪問量擊垮”,通常就會到我們常說的分布式架構(gòu)三板斧:限流、熔斷、降級。

01. 限流

限流理解起來很簡單,比如故宮每天只賣八萬張票,超過八萬的游客,無法買票進(jìn)入,因為如果超過八萬人,景點的工作人員可能就忙不過來,過于擁擠的景點也會影響游客的體驗和心情,并且還會有安全隱患;只賣N張票,這就是一種限流的手段。

軟件架構(gòu)中的限流也一樣,就是流量徒增的時候,只允許一部分流量進(jìn)來,而多余的那部分,就拒絕掉。

通常我們可以通過限流算法達(dá)到這樣的效果,比如計數(shù)器法、滑動窗口法、漏桶算法、令牌桶算法,每個算法的詳解之前的文章有介紹過,這里就不在占用篇幅了。上面的例子中,故宮每天只賣八萬張票,有點兒類似于令牌桶算法,票就相當(dāng)于令牌,只有拿到令牌的請求,才能訪問到服務(wù)。

另外限流可以針對不同的系統(tǒng)或業(yè)務(wù)流程限流,比如核心系統(tǒng) A 要做限流,B 系統(tǒng)調(diào)用 A 系統(tǒng)很重要,C 系統(tǒng)調(diào)用 A 系統(tǒng)相對來說不是那么重要,所以當(dāng) A 系統(tǒng)有些扛不住的時候,可以限制 C 系統(tǒng)的調(diào)用次數(shù),保證 B 系統(tǒng)的穩(wěn)定運(yùn)行。

02. 熔斷

現(xiàn)實生活中,保險絲的作用就是熔斷,可以在發(fā)生短路的時候自動跳閘,保護(hù)家電。

在我們大部分應(yīng)用場景中,A 系統(tǒng)調(diào) B 系統(tǒng)接口,B 系統(tǒng)再調(diào) C 系統(tǒng)接口這樣的場景非常多,這就是調(diào)用鏈路:A->B->C->D;每個系統(tǒng)的承載上限肯定是不一樣的,比如流量徒增,D 系統(tǒng)達(dá)到承載上限了,D 系統(tǒng)的接口響應(yīng)非常慢,這樣可能會導(dǎo)致 A/B/C 調(diào)用它時出現(xiàn)超時等待的情況;如果進(jìn)一步惡化,會導(dǎo)致鏈路雪崩,從一個服務(wù)的故障,變成了多個系統(tǒng)的故障。

這時候熔斷就排上用場了,如果短時間內(nèi)有大量的請求超時,那么就意味著這個系統(tǒng)出現(xiàn)了故障,那么就沒有必要再去訪問這個服務(wù)了,這時候就要使用熔斷,斷開這條鏈路。

熔斷器還可以自動診斷下游服務(wù)的狀態(tài),如果服務(wù)恢復(fù)的話,那么再慢慢釋放請求,直到故障發(fā)生前的狀態(tài)。

03. 降級

服務(wù)降級既可以通過代碼自動判斷,比如上文的服務(wù)限流中說到,當(dāng)流量徒增,可以限制不重要的系統(tǒng)或服務(wù)的訪問量,這里的誰重要誰不重要,就算是服務(wù)級別的區(qū)分,當(dāng)訪問量徒增,哪些系統(tǒng)是可以自動降級的。

服務(wù)降級也可以人工根據(jù)突發(fā)情況切換;比如在某些服務(wù)節(jié)點的時候(例如雙 11, 618),為了保證購物和支付的正常運(yùn)行,會禁用一些不重要的服務(wù);甚至在購物和支付兩者之間,購物更重要,所以可以提前預(yù)付或者延遲支付。

總之,限流、熔點和降級都是在流量徒增、過大時,保證系統(tǒng)穩(wěn)定的手段。

我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注。

java打war包,你們都是怎么確保系統(tǒng)不被突然的訪問流量壓垮的