深入分析流媒體服務(wù)器負(fù)載均衡的兩種機(jī)制
前面我們對(duì)流媒體服務(wù)器的負(fù)載均衡內(nèi)容作了一個(gè)概述,相信大家已經(jīng)對(duì)這個(gè)知識(shí)有了一定的認(rèn)識(shí)。那么現(xiàn)在我們來(lái)仔細(xì)分析一下它的系統(tǒng)設(shè)計(jì)和機(jī)制問題。從原理上面看看流媒體服務(wù)器的負(fù)載平衡時(shí)如何做到,那么具體的內(nèi)容還請(qǐng)大家從文章中了解吧。
流媒體服務(wù)器中的負(fù)載均衡系統(tǒng)設(shè)計(jì)
流媒體服務(wù)器中的負(fù)載均衡系統(tǒng)是在基于LAN的分布式體系結(jié)構(gòu)下實(shí)現(xiàn)的負(fù)載均衡,所有來(lái)自客戶端的請(qǐng)求被透明地分配到若干服務(wù)器上。對(duì)用戶而言,整個(gè)分布式系統(tǒng)仿佛是臺(tái)單一的邏輯服務(wù)器。這樣的集群系統(tǒng)能夠提供較強(qiáng)的可擴(kuò)展性和較好的吞吐性能。從商業(yè)角度而言,不僅可以保護(hù)原來(lái)的投資,而且也可以通過(guò)廉價(jià)的集群系統(tǒng)獲得高性能計(jì)算機(jī)所能達(dá)到的處理能力。
然而要使這樣的集群系統(tǒng)保持較高的資源利用率面臨一定挑戰(zhàn)。例如,現(xiàn)有的負(fù)載均衡方法都不能很好地解決本系統(tǒng)中涉及的問題,最早的負(fù)載均衡技術(shù)是通過(guò) DNS來(lái)實(shí)現(xiàn)的,在DNS中為多個(gè)地址配置同一個(gè)域名,從而查詢?cè)撚蛎目蛻魴C(jī)將訪問不同的服務(wù)器,達(dá)到負(fù)載均衡的目的。 DNS負(fù)載均衡雖然簡(jiǎn)單而有效,但它不能區(qū)分服務(wù)器的差異,也不能反映服務(wù)器的當(dāng)前運(yùn)行狀態(tài)。
有人采用反向代理服務(wù)器進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)的方法,該方法雖然能夠應(yīng)用優(yōu)化的負(fù)載均衡策略,使每次服務(wù)均由最空閑的內(nèi)部服務(wù)器來(lái)提供,以達(dá)到負(fù)載均衡的目的。但隨著并發(fā)連接數(shù)量的增加,代理服務(wù)器本身的負(fù)載也變得非常大,反向代理服務(wù)器本身反而會(huì)成為服務(wù)的瓶頸。還有人采用支持負(fù)載均衡的地址轉(zhuǎn)換網(wǎng)關(guān)的方法,可以將一個(gè)外部IP地址映射為多個(gè)內(nèi)部IP地址,對(duì)每次請(qǐng)求動(dòng)態(tài)使用其中一個(gè)內(nèi)部地址,達(dá)到負(fù)載均衡的目的。
很多硬件廠商將此技術(shù)集成在設(shè)備中,采用隨機(jī)選擇、根據(jù)服務(wù)器的連接數(shù)量或者響應(yīng)時(shí)間進(jìn)行選擇的負(fù)載均衡策略來(lái)分配負(fù)載,然而硬件實(shí)現(xiàn)的負(fù)載控制器靈活性不強(qiáng),不能支持更優(yōu)化的負(fù)載均衡策略和更復(fù)雜的應(yīng)用協(xié)議。還有負(fù)載均衡方法是在某些協(xié)議內(nèi)部實(shí)現(xiàn)的,例如HTTP協(xié)議中的重定向功能等,但它依賴于特定協(xié)議,因此使用范圍有限。
流媒體服務(wù)器中采用的基于分配器的負(fù)載均衡機(jī)制
基于分配器的負(fù)載均衡機(jī)制是IP/TCP/HTTP的重定向分配。一般需要一個(gè)特殊的前端節(jié)點(diǎn),稱為分配器(dispatcher)。所有的客戶端請(qǐng)求都經(jīng)過(guò)分配器并由它分配到后端服務(wù)器處理。這種基于分配器的請(qǐng)求分配機(jī)制通常對(duì)客戶端是透明的,采用的機(jī)制有兩種:
一種稱為中繼機(jī)制(relaying),如圖1所示,客戶端請(qǐng)求到達(dá)分配器后,由分配器按定的負(fù)載分配算法,將請(qǐng)求傳遞給被選中的服務(wù)器。服務(wù)器處理后的結(jié)果傳回至分配器,再由分配器轉(zhuǎn)發(fā)給客戶端。分配器的工作通常在操作系統(tǒng)的應(yīng)用層完成,也有修改操作系統(tǒng)核心直接支持中繼機(jī)制的系統(tǒng),其性能會(huì)有所改善,這種優(yōu)化的方法稱為TCP銜接(TCP splicing);
圖1. 中繼機(jī)制示意圖
另外一種機(jī)制稱為TCP傳遞(TCP handoff),如圖2所示,客戶端的請(qǐng)求經(jīng)過(guò)分配器分配到達(dá)服務(wù)器,服務(wù)器將處理后的結(jié)果不經(jīng)過(guò)分配器而直接發(fā)送給客戶端。中繼或TCP銜接機(jī)制要求所有的通信均要經(jīng)過(guò)分配器(特別是處理結(jié)果信息量很大的情況下),因此容易在分配器形成通信瓶頸,TCP傳遞機(jī)制避免了這一問題,因此性能更好,但是需要對(duì)前端和后端節(jié)點(diǎn)進(jìn)行修改,以支持TCP handoff 。
圖2. TCP傳遞機(jī)制示意圖