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