不懂高性能的負載均衡設計瘾敢?沒關系,架構師帶你飛

在軟件系統的架構設計中尿这,對集群的負載均衡設計是作為高性能系統優(yōu)化環(huán)節(jié)中必不可少的方案簇抵。負載均衡本質上是用于將用戶流量進行均衡減壓的,因此在互聯網的大流量項目中射众,其重要性不言而喻碟摆。

一、什么是負載均衡叨橱?

早期的互聯網應用典蜕,由于用戶流量比較小断盛,業(yè)務邏輯也比較簡單,往往一個單服務器就能滿足負載需求愉舔。隨著現在互聯網的流量越來越大钢猛,稍微好一點的系統,訪問量就非常大了轩缤,并且系統功能也越來越復雜命迈,那么單臺服務器就算將性能優(yōu)化得再好,也不能支撐這么大用戶量的訪問壓力了火的,這個時候就需要使用多臺機器壶愤,設計高性能的集群來應對。

那么馏鹤,多臺服務器是如何去均衡流量征椒、如何組成高性能的集群的呢?

此時就需要請出 「負載均衡器」 入場了假瞬。

負載均衡(Load Balancer)是指把用戶訪問的流量陕靠,通過「負載均衡器」,根據某種轉發(fā)的策略脱茉,均勻的分發(fā)到后端多臺服務器上剪芥,后端的服務器可以獨立的響應和處理請求,從而實現分散負載的效果琴许。負載均衡技術提高了系統的服務能力税肪,增強了應用的可用性。

(可以按照圖中去理解榜田,圖片來源網絡)

二益兄、負載均衡方案有幾種?

目前市面上最常見的負載均衡技術方案主要有三種:

基于DNS負載均衡

基于硬件負載均衡

基于軟件負載均衡

三種方案各有優(yōu)劣箭券,DNS負載均衡可以實現在地域上的流量均衡净捅,硬件負載均衡主要用于大型服務器集群中的負載需求,而軟件負載均衡大多是基于機器層面的流量均衡辩块。在實際場景中蛔六,這三種是可以組合在一起使用。下面來詳細講講:

基于DNS負載均衡

(網絡圖片)

基于DNS來做負載均衡其實是一種最簡單的實現方案废亭,通過在DNS服務器上做一個簡單配置即可国章。

其原理就是當用戶訪問域名的時候,會先向DNS服務器去解析域名對應的IP地址豆村,這個時候我們可以讓DNS服務器根據不同地理位置的用戶返回不同的IP液兽。比如南方的用戶就返回我們在廣州業(yè)務服務器的IP,北方的用戶來訪問的話掌动,我就返回北京業(yè)務服務器所在的IP四啰。

在這個模式下宁玫,用戶就相當于實現了按照「就近原則」將請求分流了,既減輕了單個集群的負載壓力拟逮,也提升了用戶的訪問速度撬统。

使用DNS做負載均衡的方案,天然的優(yōu)勢就是配置簡單敦迄,實現成本非常低,無需額外的開發(fā)和維護工作凭迹。

但是也有一個明顯的缺點是:當配置修改后罚屋,生效不及時。這個是由于DNS的特性導致的嗅绸,DNS一般會有多級緩存脾猛,所以當我們修改了DNS配置之后,由于緩存的原因鱼鸠,會導致IP變更不及時猛拴,從而影響負載均衡的效果。

另外蚀狰,使用DNS做負載均衡的話愉昆,大多是基于地域或者干脆直接做IP輪詢,沒有更高級的路由策略麻蹋,所以這也是DNS方案的局限所在跛溉。

基于硬件負載均衡

(網絡圖片)

硬件的負載均衡那就比較牛逼了,比如大名鼎鼎的?F5 Network Big-IP?扮授,也就是我們常說的?F5?芳室,它是一個網絡設備,你可以簡單的理解成類似于網絡交換機的東西刹勃,完全通過硬件來抗壓力堪侯,性能是非常的好,每秒能處理的請求數達到百萬級荔仁,即 幾百萬/秒 的負載伍宦,當然價格也就非常非常貴了,十幾萬到上百萬人民幣都有咕晋。

因為這類設備一般用在大型互聯網公司的流量入口最前端雹拄,以及政府、國企等不缺錢企業(yè)會去使用掌呜。一般的中小公司是不舍得用的滓玖。

采用?F5?這類硬件做負載均衡的話,主要就是省心省事质蕉,買一臺就搞定势篡,性能強大翩肌,一般的業(yè)務不在話下。而且在負載均衡的算法方面還支持很多靈活的策略禁悠,同時還具有一些防火墻等安全功能念祭。但是缺點也很明顯,一個字:貴碍侦。

基于軟件負載均衡

(網絡圖片)

軟件負載均衡是指使用軟件的方式來分發(fā)和均衡流量粱坤。軟件負載均衡,分為7層協議 和 4層協議瓷产。

網絡協議有七層站玄,基于第四層傳輸層來做流量分發(fā)的方案稱為4層負載均衡,例如?LVS?濒旦,而基于第七層應用層來做流量分發(fā)的稱為7層負載均衡株旷,例如?Nginx?。這兩種在性能和靈活性上是有些區(qū)別的尔邓。

基于4層的負載均衡性能要高一些晾剖,一般能達到 幾十萬/秒 的處理量,而基于7層的負載均衡處理量一般只在 幾萬/秒 梯嗽。

基于軟件的負載均衡的特點也很明顯齿尽,便宜。在正常的服務器上部署即可慷荔,無需額外采購雕什,就是投入一點技術去優(yōu)化優(yōu)化即可,因此這種方式是互聯網公司中用得最多的一種方式显晶。

三贷岸、常用的均衡算法有哪些?

上面講完了常見的負載均衡技術方案磷雇,那么接下來咱們看一下偿警,在實際方案應用中,一般可以使用哪些均衡算法唯笙?

輪詢策略

負載度策略

響應策略

哈希策略

下面來分別介紹一下這幾種均衡算法/策略的特點:

輪詢策略

輪詢策略其實很好理解螟蒸,就是當用戶請求來了之后,「負載均衡器」將請求輪流的轉發(fā)到后端不同的業(yè)務服務器上崩掘。這個策略在DNS方案中用的比較多七嫌,無需關注后端服務的狀態(tài),只藥有請求苞慢,就往后端輪流轉發(fā)诵原,非常的簡單、實用。

在實際應用中绍赛,輪詢也會有多種方式蔓纠,有按順序輪詢的、有隨機輪詢的吗蚌、還有按照權重來輪詢的腿倚。前兩種比較好理解,第三種按照權重來輪詢蚯妇,是指給每臺后端服務設定一個權重值敷燎,比如性能高的服務器權重高一些,性能低的服務器給的權重低一些箩言,這樣設置的話懈叹,分配流量的時候,給權重高的更多流量分扎,可以充分的發(fā)揮出后端機器的性能。

負載度策略

負載度策略是指當「負載均衡器」往后端轉發(fā)流量的時候胧洒,會先去評估后端每臺服務器的負載壓力情況畏吓,對于壓力比較大的后端服務器轉發(fā)的請求就少一些,對于壓力比較小的后端服務器可以多轉發(fā)一些請求給它卫漫。

這種方式就充分的結合了后端服務器的運行狀態(tài)菲饼,來動態(tài)的分配流量了,比輪詢的方式更為科學一些列赎。

但是這種方式也帶來了一些弊端宏悦,因為需要動態(tài)的評估后端服務器的負載壓力,那這個「負載均衡器」除了轉發(fā)請求以外包吝,還要做很多額外的工作饼煞,比如采集 連接數、請求數诗越、CPU負載指標砖瞧、IO負載指標等等,通過對這些指標進行計算和對比嚷狞,判斷出哪一臺后端服務器的負載壓力較大块促。

因此這種方式帶來了效果優(yōu)勢的同時,也增加了「負載均衡器」的實現難度和維護成本床未。

響應策略

響應策略是指竭翠,當用戶請求過來的時候,「負載均衡器」會優(yōu)先將請求轉發(fā)給當前時刻響應最快的后端服務器薇搁。

也就是說斋扰,不管后端服務器負載高不高,也不管配置如何,只要覺得這個服務器在當前時刻能最快的響應用戶的請求褥实,那么就優(yōu)先把請求轉發(fā)給它呀狼,這樣的話,對于用戶而言损离,體驗也最好哥艇。

那「負載均衡器」是怎么知道哪一臺后端服務在當前時刻響應能力最佳呢?

這就需要「負載均衡器」不停的去統計每一臺后端服務器對請求的處理速度了僻澎,比如一分鐘統計一次貌踏,生成一個后端服務器處理速度的排行榜。然后「負載均衡器」根據這個排行榜去轉發(fā)服務窟勃。

那么這里的問題就是統計的成本了祖乳,不停的做這些統計運算本身也會消耗一些性能,同時也會增加「負載均衡器」的實現難度和維護成本秉氧。

哈希策略

Hash策略也比較好理解眷昆,就是將請求中的某個信息進行hash計算,然后根據后端服務器臺數取模汁咏,得到一個值亚斋,算出相同值的請求就被轉發(fā)到同一臺后端服務器中。

常見的用法是對用戶的IP或者ID進行這個策略攘滩,然后「負載均衡器」就能保證同一個IP來源或者同一個用戶永遠會被送到同一個后端服務器上了帅刊,一般用于處理緩存、會話等功能的時候特別好用漂问。

以上赖瞒,就是實現高性能負載均衡的常見技術方案和策略了,歡迎大家一起交流蚤假。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末栏饮,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子勤哗,更是在濱河造成了極大的恐慌抡爹,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芒划,死亡現場離奇詭異冬竟,居然都是意外死亡,警方通過查閱死者的電腦和手機民逼,發(fā)現死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門泵殴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拼苍,你說我怎么就攤上這事笑诅〉饔В” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵吆你,是天一觀的道長弦叶。 經常有香客問我,道長妇多,這世上最難降的妖魔是什么伤哺? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮者祖,結果婚禮上立莉,老公的妹妹穿的比我還像新娘。我一直安慰自己七问,他們只是感情好蜓耻,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著械巡,像睡著了一般刹淌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上讥耗,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天芦鳍,我揣著相機與錄音,去河邊找鬼葛账。 笑死,一個胖子當著我的面吹牛皮仁,可吹牛的內容都是我干的籍琳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼贷祈,長吁一口氣:“原來是場噩夢啊……” “哼趋急!你這毒婦竟也來了?” 一聲冷哼從身側響起势誊,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呜达,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粟耻,有當地人在樹林里發(fā)現了一具尸體查近,經...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年挤忙,在試婚紗的時候發(fā)現自己被綠了霜威。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡册烈,死狀恐怖戈泼,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤大猛,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布扭倾,位于F島的核電站,受9級特大地震影響挽绩,放射性物質發(fā)生泄漏膛壹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一琼牧、第九天 我趴在偏房一處隱蔽的房頂上張望恢筝。 院中可真熱鬧,春花似錦巨坊、人聲如沸撬槽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侄柔。三九已至,卻和暖如春占调,著一層夾襖步出監(jiān)牢的瞬間暂题,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工究珊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留薪者,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓剿涮,卻偏偏與公主長得像言津,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子取试,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內容