- 相關(guān)推薦
系統架構師知識:負載均衡
負載均衡(Load Balance),顧名思義,是把服務(wù)的并發(fā)請求均衡地負載到后端多個(gè)具有相同能力的服務(wù)進(jìn)行處理分擔,以廉價(jià)有效透明的方式擴展網(wǎng)絡(luò )設備或服務(wù)的帶寬,增加吞吐量,增強服務(wù)的整體處理能力,提供服務(wù)的靈活性和可用性。
1、什么是負載均衡?
常見(jiàn)的典型的負載均衡應用場(chǎng)景:
(1)、web集群:將大量的并發(fā)訪(fǎng)問(wèn)或數據流量分擔到多臺節點(diǎn)設備上分別處理,減少用戶(hù)等待響應的時(shí)間。
(2)、MapReduce:?jiǎn)蝹(gè)重負載的運算分擔到多臺節點(diǎn)設備上做并行處理,每個(gè)節點(diǎn)設備處理結束后,將結果匯總,返回給⽤戶(hù),系統處理能⼒得到大幅度提高。
2、負載均衡算法
負載均衡算法是負載均衡設備(包括虛擬設備或相關(guān)軟件)在執行負載均衡調度,選擇具體處理的后端服務(wù)的時(shí)候使用的調度和分發(fā)的邏輯。
負載均衡的算法只是規定了調度和分發(fā)的邏輯,在不同的負載均衡方案中都可能使用相同和(或)類(lèi)似的算法,它只是負載均衡方案的一部分。
常見(jiàn)的主流負載均衡算法包括:
(1)、輪詢(xún)算法:Round Robin/Weight Round Robin Scheduling
輪詢(xún)算法通過(guò)依次輪叫的方式依次將請求調度不同的后端服務(wù)器(Real Server)。通?梢苑譃槠胀ㄝ喸(xún)和加權輪詢(xún)兩種方式。算法的優(yōu)點(diǎn)是簡(jiǎn)潔且無(wú)狀態(tài)。
算法簡(jiǎn)單表示為:i = ( i + 1 ) mod n
(2)、Hash算法: 隨機數Hash,Sources Hashing Scheduling
Hash算法,又叫取余算法。一般是對請求報文中的某項數據(key,一般常用客戶(hù)端來(lái)源IP)計算Hash值,然后按機器數量(n)取模。
算法簡(jiǎn)單表示為:idx = Hash(key) % n
Hash算法中,Key的選擇常用實(shí)踐如下:
a、請求時(shí)間或隨機數
特點(diǎn)是簡(jiǎn)單,具有一定分散性,但不穩定,一般用于要求不高的負載均衡場(chǎng)景。
b、來(lái)源IP
特點(diǎn)是簡(jiǎn)單。如果客戶(hù)的分布比較廣,這種方式分散性較好。但如果較多的客戶(hù)請求來(lái)源于同一IP(公司網(wǎng)絡(luò )通過(guò)路由器上網(wǎng)),分散效果較差。
大多負載均衡設備都支持這種算法,著(zhù)名的nginx和LVS等軟件也支持。
(3)、一致性Hash算法:Consistency Hash Scheduling
一致性Hash算法最常用于分布式緩存(如memcached、redis等)的定位,但同時(shí)也可以在系統或程序中用于負載均衡,該算法本來(lái)的意義就在于分散負載和快速定位。
推薦閱讀:截至目前看過(guò)的一致性Hash算法最佳介紹請猛擊這里。
(4)、最少連接或請求數: (Weight)Least Connection/Request Scheduling
最小連接調度是一種動(dòng)態(tài)調度算法,它通過(guò)服務(wù)器當前所活躍的連接數來(lái)估計服務(wù)器的負載情況。
算法主要邏輯是,調度設備或服務(wù)記錄后端服務(wù)器接受請求的計數,每次請求總是發(fā)給計數最小的服務(wù)器處理。
(5)、最大空閑:Most idle First(基于監控CPU,內存,帶寬等綜合評估)
(6)、平均最快響應:平均最快響應
(7)、最少流量:Least Traffic Scheduling
還有一種常見(jiàn)的就是基于會(huì )話(huà)的負載實(shí)現,但是嚴格來(lái)說(shuō)Session(一般用于WEB)不能算是算法。Session實(shí)現負載均衡的主要過(guò)程為:首次請求記錄用戶(hù)的SessionID,然后再通過(guò)輪詢(xún)等算法選擇后端服務(wù)器,如果用戶(hù)后續使用同一SessionID發(fā)起請求,則無(wú)需再選擇服務(wù)器,直接轉發(fā)給前面根據SessionID找到的對應的后端服務(wù)器。
3、負載均衡模式
負載均衡模式主要是指在整體方案中選擇從服務(wù)網(wǎng)絡(luò )的哪個(gè)層次或哪個(gè)產(chǎn)品來(lái)實(shí)現負載均衡方案。
(1)、外部模式(RR-DNS)
RR-DNS,即DNS輪詢(xún)模式,它的原理是利用DNS服務(wù)器支持同一域名配置多個(gè)獨立IP指向,然后輪詢(xún)解析指向IP實(shí)現多次訪(fǎng)問(wèn)的調度和分發(fā),實(shí)現負載均衡。
它的主要特點(diǎn)為:
a、負載均衡實(shí)現與后端服務(wù)完全沒(méi)有關(guān)系,有DNS在本地解析指向實(shí)現輪詢(xún)調度。這個(gè)方面來(lái)看性能最佳效率最高。
b、DNS服務(wù)無(wú)法檢測到后端服務(wù)器是否正常,在TTL失效前,會(huì )一直指向失效的服務(wù)器,這就要求在實(shí)踐生成中,必須解決后端服務(wù)器的高可用問(wèn)題。
c、一般的第三方DNS服務(wù)提供商都支持該功能,但如果更新頻率高或附帶更新邏輯,一般會(huì )在系統內自鍵DNS服務(wù),然后在注冊為公共DNS服務(wù)。
(2)、應用層模式
a、什么是正向和反向代理?
正向代理:用戶(hù)通過(guò)代理服務(wù)訪(fǎng)問(wèn)internet, 把internet返回的數據轉發(fā)給用戶(hù)。正向代理對于整個(gè)網(wǎng)絡(luò )請求,它的角色實(shí)際是客戶(hù)端,代理客戶(hù)對外的訪(fǎng)問(wèn)請求。
反向代理:接受internet上用戶(hù)的請求,轉發(fā)給內部的多臺服務(wù)器處理,完成后轉發(fā)后端服務(wù)器的返回給對應的用戶(hù)。反向代理對于整個(gè)網(wǎng)絡(luò )請求,它的角色實(shí)際是服務(wù)器,代理接受(accept)所有用戶(hù)的請求。
b、反向代理應用模式
常見(jiàn)的反向代理應用模式,比如通過(guò) Apache, nginx等Web服務(wù)器軟件實(shí)現WEB應用的負載均衡和高可用。
利用反向代理軟件實(shí)現負載均衡是性?xún)r(jià)比較高的模式。
(3)、網(wǎng)絡(luò )層模式
a、IP轉換
IP轉換模式的負載均衡一般是在網(wǎng)絡(luò )的IP層實(shí)現,通過(guò)報文改寫(xiě)的方式實(shí)現VIP到多個(gè)內部IP的轉發(fā)調度,以達到負載均衡的效果。
它的主要特點(diǎn)包括:
網(wǎng)絡(luò )層方案,效率較高,穩定性較好;可與操作系統內核結合;工業(yè)級模式和方案;大部分商業(yè)設備和產(chǎn)品都以該方式為主;LVS的基本原理也類(lèi)同。
b、IP轉換之LVS
LVS(Linux Virtual Server),是中國人(98年)寫(xiě)的工業(yè)級的負載平衡調度解決方案,章文嵩博士是該開(kāi)源軟件創(chuàng )始人。也是目前業(yè)界最流行的軟件方式實(shí)現負載均衡的模式之一。LVS也是利用IP轉發(fā)的原理實(shí)現大多數有商業(yè)產(chǎn)品實(shí)現的能力,并做了部分優(yōu)化,主要有三種模式的應用。
(a)、通過(guò)NAT(Network Address Translation)實(shí)現虛擬服務(wù)器(VS/NAT)
(b)、通過(guò)IP隧道實(shí)現虛擬服務(wù)器(VS/TUN)
(c)、通過(guò)直接路由實(shí)現虛擬服務(wù)器(VS/DR)
關(guān)于LVS的介紹文章非常多,這里就不再詳細介紹了,推薦參考閱讀<<構建高性能web站點(diǎn)>>和<<大型網(wǎng)站技術(shù)架構>>這兩本書(shū)中關(guān)于負載均衡的部分章節。
c、IP轉換之負載均衡設備
F5等負載均衡設備同樣是在網(wǎng)絡(luò )層實(shí)現負載均衡,但一般而言造價(jià)較為昂貴,性?xún)r(jià)比較低。
【系統架構師知識:負載均衡】相關(guān)文章:
系統架構師性能知識整理12-29
系統架構師是做什么的12-30
如何成為優(yōu)秀的系統架構師06-03
系統架構師的就業(yè)前景分析01-11
系統架構師必須具備哪些能力05-07
系統架構師是干什么的01-12
Windows系統分區知識01-13
電腦硬件系統的維護知識10-12
Linux操作系統文件系統基礎知識07-25