偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

過載保護+異構(gòu)服務(wù)器的負載均衡,怎么設(shè)計?

開發(fā) 開發(fā)工具 前端
負載均衡是指,將請求/數(shù)據(jù)分攤到多個操作單元上執(zhí)行,關(guān)鍵在于均衡。然而,后端的服務(wù)器有可能硬件條件不同,能否根據(jù)異構(gòu)服務(wù)器的處理能力來動態(tài)、自適應(yīng)進行負載均衡,以及過載保護呢?

負載均衡是指,將請求/數(shù)據(jù)分攤到多個操作單元上執(zhí)行,關(guān)鍵在于均衡。

然而,后端的服務(wù)器有可能硬件條件不同:

  • 如果對標低配的服務(wù)器“均勻”分攤負載,高配的服務(wù)器利用率會不足
  • 如果對標高配的服務(wù)器“均勻”分攤負載,低配的服務(wù)器會扛不住

能否根據(jù)異構(gòu)服務(wù)器的處理能力來動態(tài)、自適應(yīng)進行負載均衡,以及過載保護呢?

[[252421]]

負載均衡通常是怎么做的?

負載均衡

service層的負載均衡,一般是通過service連接池來實現(xiàn)的,調(diào)用方連接池會建立與下游服務(wù)多個連接,每次請求“隨機”獲取連接,來保證訪問的均衡性。

負載均衡、故障轉(zhuǎn)移、超時處理等細節(jié)也都是通過調(diào)用方連接池來實現(xiàn)的。

調(diào)用方連接池能否,根據(jù)service的處理能力,動態(tài)+自適應(yīng)的進行負載調(diào)度呢?

(1) 方案一:可以通過“靜態(tài)權(quán)重”標識service的處理能力。

負載均衡

最容易想到的方法,可以為每個下游service設(shè)置一個“權(quán)重”,代表service的處理能力,來調(diào)整訪問到每個service的概率,如上圖所示:

  • 假設(shè)ip1,ip2,ip3的處理能力相同,可以設(shè)置weight1=1,weight2=1,weight3=1,這樣三個service連接被獲取到的概率分別就是1/3,1/3,1/3,能夠保證均衡訪問;
  • 假設(shè)ip1的處理能力是ip2,ip3的處理能力的2倍,可以設(shè)置weight1=2,weight2=1,weight3=1,這樣三個service連接被獲取到的概率分別就是2/4,1/4,1/4,能夠保證處理能力強的service分到等比的流量,不至于資源浪費;

Nginx就具備類似的能力。

  • 方案優(yōu)點:簡單粗暴,能夠快速的實現(xiàn)異構(gòu)服務(wù)器的負載均衡。
  • 方案缺點:權(quán)重是固定的,無法自適應(yīng)動態(tài)調(diào)整,而很多時候,服務(wù)器的處理能力是很難用一個固定的數(shù)值量化。

(2) 方案二:通過“動態(tài)權(quán)重”標識service的處理能力。

如何來標識一個service的處理能力呢?

服務(wù)能不能處理得過來,該由調(diào)用方說了算:

  • 調(diào)用服務(wù),快速處理,處理能力跟得上
  • 調(diào)用服務(wù),處理超時,處理能力很有可能跟不上了

如何來設(shè)計動態(tài)權(quán)重?

可以這么玩:

  • 用一個動態(tài)權(quán)重,來標識每個service的處理能力,默認初始處理能力相同,即分配給每個service的概率相等;
  • 每當(dāng)service成功處理一個請求,認為service處理能力足夠,權(quán)重動態(tài)+1;
  • 每當(dāng)service超時處理一個請求,認為service處理能力可能要跟不上了,權(quán)重動態(tài)-10;

畫外音:

權(quán)重下降,會比權(quán)重上升更快。

為了方便權(quán)重的處理,可以把權(quán)重的范圍限定為[0, 100],把權(quán)重的初始值設(shè)為60分。

舉例說明:

假設(shè)service-ip1,service-ip2,service-ip3的動態(tài)權(quán)重初始值:

  • weight1=60
  • weight2=60
  • weight3=60

剛開始時,請求分配給這3臺service的概率分別是60/180,60/180,60/180,即負載是均衡的。

隨著時間的推移:

  • 處理能力強的service成功處理的請求越來越多
  • 處理能力弱的service偶爾有超時

隨著動態(tài)權(quán)重的增減,權(quán)重會發(fā)生變化:

  • weight1=100
  • weight2=60
  • weight3=40

那么此時,請求分配給這3臺service的概率分別是100/200,60/200,40/200,即處理能力強的service會被分配到更多的流量。

那什么是過載保護?

過載保護

如上圖所示,如果沒有過載保護:

  • 隨著外部負載的不斷升高,系統(tǒng)實際處理負載會增加
  • 外部負載升高到一個臨界值,系統(tǒng)會被壓垮,實際處理能力會降為0

畫外音:這就是所謂的“掉底”。

過載保護,是指當(dāng)外部負載超過系統(tǒng)處理能力時,系統(tǒng)會進行自我保護,依然能對外提供有損的穩(wěn)定服務(wù)。

過載保護

如上圖所示,如果進行了過載保護:

  • 隨著外部負載的不斷升高,系統(tǒng)實際處理負載會增加
  • 外部負載即使超過一個臨界值,系統(tǒng)不會被壓垮,而能保持一定的處理能力

畫外音:外部負載***大,系統(tǒng)也不會“掉底”。

那如何進行過載保護?

(1) 方案一:可以通過“靜態(tài)權(quán)重”標識service的處理能力。

這是最簡易的方式,服務(wù)端設(shè)定一個負載閾值,超過這個閾值的請求壓過來,全部拋棄。

畫外音:這個方式不是特別優(yōu)雅。

(2) 方案二:借助“動態(tài)權(quán)重”來實施過載保護。

如同異構(gòu)服務(wù)器負載均衡,仍然通過:

  • 成功處理加分(+1)
  • 處理超時扣分(-10)

這種動態(tài)權(quán)重,來標識后端的處理能力。

畫外音:仍然是在連接池層面實現(xiàn)的。

當(dāng)一個服務(wù)端屢次處理超時,權(quán)重不斷降低時,連接池只要實施一些策略,就能夠?qū)?ldquo;疑似過載”的服務(wù)器進行降壓,而不用服務(wù)器“拋棄請求”這么粗暴的實施過載保護。

應(yīng)該實施什么樣的策略,來對“疑似過載”的服務(wù)器進行降壓保護呢?

可以這么玩:

(1) 如果某一個服務(wù)器,連續(xù)3個請求都超時,即連續(xù)-10分三次,就可以認為,服務(wù)器處理不過來了,得給這個服務(wù)器喘一小口氣,于是設(shè)定策略:接下來的若干時間內(nèi),例如1秒,負載不再分配給這個服務(wù)器;

畫外音:休息1秒后,再分給它。

(2) 如果某一個service的動態(tài)權(quán)重,降為了0(休息了3次還超時),就可以認為,服務(wù)器完全處理不過來了,得給這個服務(wù)器喘一大口氣,于是設(shè)定策略:接下來的若干時間內(nèi),例如1分鐘,請求不再分配給這個服務(wù)器;

畫外音:根據(jù)經(jīng)驗,此時服務(wù)器一般在fullGC,差不多1分鐘能回過神來。

這樣的話,不但能借助“動態(tài)權(quán)重”來實施動態(tài)自適應(yīng)的異構(gòu)服務(wù)器負載均衡,還能在客戶端層面更優(yōu)雅的實施過載保護,在某個下游服務(wù)器快要響應(yīng)不過來的時候,給其喘息的機會。

過載保護要注意什么問題?

要防止過載保護引起服務(wù)器的雪崩,如果“整體負載”已經(jīng)超過了“服務(wù)器集群”的處理能力,怎么轉(zhuǎn)移請求也是處理不過來的。這時,還是得通過拋棄請求來實施自我保護。

總結(jié)

  • 負載均衡、故障轉(zhuǎn)移、超時處理通常是連接池層面來實施的
  • 異構(gòu)服務(wù)器負載均衡,最簡單的方式是靜態(tài)權(quán)重法,缺點是無法自適應(yīng)動態(tài)調(diào)整
  • 動態(tài)權(quán)重法,可以動態(tài)的根據(jù)服務(wù)器的處理能力來分配負載,需要有連接池層面的微小改動
  • 過載保護,是在負載過高時,服務(wù)器為了保護自己,保證一定處理能力的一種自救方式
  • 動態(tài)權(quán)重法,還可以用做服務(wù)器的過載保護

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2016-09-21 13:52:53

服務(wù)器負載過載保護

2010-04-26 17:41:29

服務(wù)器負載均衡

2010-05-10 14:02:53

服務(wù)器負載均衡

2010-05-05 18:44:27

服務(wù)器負載均衡

2010-05-05 18:28:16

負載均衡服務(wù)器

2010-05-06 14:30:29

流媒體服務(wù)器負載均衡

2010-04-30 09:40:41

2010-04-22 23:07:47

服務(wù)器負載均衡

2009-07-22 10:25:37

2010-05-06 14:15:02

流媒體服務(wù)器負載均衡

2009-01-10 18:53:01

服務(wù)器ServerDNS

2014-08-14 10:10:34

設(shè)計模式熔斷器

2010-04-26 09:58:10

服務(wù)器負載均衡

2010-05-05 22:40:21

apache服務(wù)器負載均衡

2010-04-25 19:24:58

服務(wù)器負載均衡

2025-03-25 10:42:30

2010-06-29 11:21:58

Web服務(wù)器

2011-11-22 21:26:59

pfSense配置Web服務(wù)器負載均衡

2010-04-20 17:12:57

服務(wù)器負載均衡

2010-11-19 12:53:53

梭子魚負載均衡
點贊
收藏

51CTO技術(shù)棧公眾號