負(fù)載均衡(Load Balance)
由于目前現(xiàn)有網(wǎng)絡(luò)的各個(gè)核心部分隨著業(yè)務(wù)量的提高,訪(fǎng)問(wèn)量和數(shù)據(jù)流量的快速增長(zhǎng),其處理能力和計(jì)算強(qiáng)度也相應(yīng)地增大,使得單一的服務(wù)器設(shè)備根本無(wú)法承擔(dān)。在此情況下,如果扔掉現(xiàn)有設(shè)備去做大量的硬件升級(jí),這樣將造成現(xiàn)有資源的浪費(fèi),而且如果再面臨下一次業(yè)務(wù)量的提升時(shí),這又將導(dǎo)致再一次硬件升級(jí)的高額成本投入,甚至性能再卓越的設(shè)備也不能滿(mǎn)足當(dāng)前業(yè)務(wù)量增長(zhǎng)的需求。
針對(duì)此情況而衍生出來(lái)的一種廉價(jià)有效透明的方法以擴(kuò)展現(xiàn)有網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性的技術(shù)就是負(fù)載均衡(Load Balance)。
各種軟件使用的負(fù)載均衡策略都不盡相同,在這里,我們以VIEWGOOD的流媒體平臺(tái)WebMedia為例,具體直觀的說(shuō)明一下關(guān)于電影網(wǎng)站的如何實(shí)現(xiàn)負(fù)載均衡。
在VIEWGOOD的流媒體平臺(tái)系統(tǒng)中,不需要單獨(dú)的負(fù)載平衡服務(wù)器,WEB服務(wù)器的負(fù)載平衡由WEB服務(wù)器自己承擔(dān),而點(diǎn)播、直播服務(wù)器的負(fù)載平衡由負(fù)載平衡服務(wù)器(與認(rèn)證計(jì)費(fèi)服務(wù)器共用)承擔(dān)。
如果在系統(tǒng)運(yùn)行過(guò)程中,發(fā)現(xiàn)系統(tǒng)的負(fù)載能力不夠時(shí),可以隨時(shí)添加WEB服務(wù)器、點(diǎn)播服務(wù)器、直播服務(wù)器,無(wú)需停止服務(wù),只需要在系統(tǒng)服務(wù)器參數(shù)表中把服務(wù)器相關(guān)信息添加進(jìn)去即可,真正做到7×24小時(shí)不間斷運(yùn)行。另外,與VIEWGOOD流媒體平臺(tái)中CDN內(nèi)容分發(fā)一樣,VIEWGOOD的負(fù)載是全網(wǎng)負(fù)載。
很多廠(chǎng)商將Microsoft公司的MediaService與Real公司的Helix 系統(tǒng)做集成,解決不同格式的支持問(wèn)題。但多種類(lèi)視頻服務(wù)結(jié)構(gòu)下,負(fù)載均衡只能在相同視頻服務(wù)系統(tǒng)間進(jìn)行;比如一共有6臺(tái)媒體服務(wù)器,其中2臺(tái)MediaServer、2臺(tái)RealServer、2臺(tái)MPEG視頻流服務(wù),如果用戶(hù)點(diǎn)播了WMV節(jié)目,則只能在2臺(tái)MediaServer之間進(jìn)行負(fù)載均衡,將其負(fù)載分配到RealServer或MPEG視頻服務(wù)系統(tǒng)所在服務(wù)器是沒(méi)有意義的;因此,如果某一時(shí)刻用戶(hù)點(diǎn)播相對(duì)集中于某一格式的節(jié)目,則就會(huì)發(fā)生該格式對(duì)應(yīng)視頻服務(wù)無(wú)法支撐、而其他格式的視頻服務(wù)器又過(guò)于空閑的情況。
WEB服務(wù)器負(fù)載平衡
當(dāng)大量用戶(hù)同時(shí)訪(fǎng)問(wèn)網(wǎng)站(一般是廣域網(wǎng)網(wǎng)站),一臺(tái)WEB服務(wù)器提供不了這么多負(fù)載時(shí),則需要使用多臺(tái)WEB服務(wù)器進(jìn)行負(fù)載平衡(本處講述的是平臺(tái)自身提供的負(fù)載平衡,客戶(hù)當(dāng)然也可以直接使用硬件負(fù)載平衡)。
用戶(hù)首先要有一臺(tái)WEB服務(wù)器作為門(mén)戶(hù)網(wǎng)站,然后可根據(jù)實(shí)際情況設(shè)置各臺(tái)WEB服務(wù)器的服務(wù)區(qū)域,當(dāng)用戶(hù)訪(fǎng)問(wèn)門(mén)戶(hù)網(wǎng)站時(shí),首先會(huì)根據(jù)用戶(hù)的IP地址判斷用戶(hù)屬于哪個(gè)區(qū)域,然后將用戶(hù)的連接重新定向到對(duì)應(yīng)服務(wù)區(qū)域的那臺(tái)WEB服務(wù)器上,如果沒(méi)有指定服務(wù)區(qū)域,或者對(duì)應(yīng)服務(wù)區(qū)域的WEB服務(wù)器連接數(shù)已滿(mǎn),則系統(tǒng)會(huì)自動(dòng)比較哪臺(tái)WEB服務(wù)器相對(duì)負(fù)載最輕(CPU、內(nèi)存、網(wǎng)絡(luò)帶寬、連接人數(shù)等),將用戶(hù)的訪(fǎng)問(wèn)重新定向到相對(duì)負(fù)載最輕的那臺(tái)WEB服務(wù)器上。此用戶(hù)的頁(yè)面訪(fǎng)問(wèn)都在這臺(tái)服務(wù)器上進(jìn)行,直到此用戶(hù)斷開(kāi)連接。
WebVOD模塊負(fù)載平衡
當(dāng)大量用戶(hù)同時(shí)點(diǎn)播節(jié)目時(shí),一臺(tái)VOD服務(wù)器提供不了這么多負(fù)載時(shí),則需要使用多臺(tái)VOD服務(wù)器進(jìn)行負(fù)載平衡。
首先根據(jù)實(shí)際情況定義各臺(tái)服務(wù)器的角色,主服務(wù)器還是邊緣服務(wù)器,或者身兼兩職。然后根據(jù)區(qū)域?qū)吘壏⻊?wù)器進(jìn)行分組,接下來(lái)系統(tǒng)會(huì)通過(guò)CDN將節(jié)目分發(fā)到各臺(tái)服務(wù)器上。最后再設(shè)置各臺(tái)服務(wù)器的服務(wù)區(qū)域,是優(yōu)先服務(wù)該區(qū)域還是只服務(wù)該區(qū)域,或者是禁止對(duì)某區(qū)域服務(wù)。如果設(shè)置為優(yōu)先服務(wù),則該服務(wù)器可以對(duì)不在服務(wù)器區(qū)域的用戶(hù)提供服務(wù);如果設(shè)置為只服務(wù)該區(qū)域,則服務(wù)器對(duì)除了該區(qū)域以外的所有用戶(hù)均不提供服務(wù);而設(shè)置為禁止對(duì)某區(qū)域服務(wù),則服務(wù)器對(duì)除了該區(qū)域外對(duì)的所有用戶(hù)提供服務(wù)。
當(dāng)用戶(hù)點(diǎn)播請(qǐng)求送到負(fù)載均衡服務(wù)器時(shí),負(fù)載均衡服務(wù)器會(huì)根據(jù)用戶(hù)所在的區(qū)域,判斷有沒(méi)有對(duì)應(yīng)服務(wù)區(qū)域的邊緣服務(wù)器,如果有對(duì)應(yīng)的服務(wù)器,并且用戶(hù)請(qǐng)求的節(jié)目在多臺(tái)服務(wù)器上存在,則系統(tǒng)會(huì)自動(dòng)比較哪臺(tái)視頻服務(wù)器相對(duì)負(fù)載最輕(CPU、內(nèi)存、網(wǎng)絡(luò)帶寬、連接人數(shù)等),將用戶(hù)的訪(fǎng)問(wèn)重新定向到相對(duì)負(fù)載最輕的那臺(tái)視頻服務(wù)器上。此臺(tái)流媒體服務(wù)器把視頻節(jié)目以流的形式直接傳輸給點(diǎn)播用戶(hù)。
如果沒(méi)有對(duì)應(yīng)區(qū)域的服務(wù)器或者沒(méi)有設(shè)置服務(wù)區(qū)域,則系統(tǒng)自動(dòng)在所有可用的服務(wù)器(有用戶(hù)請(qǐng)求的節(jié)目,并且不禁止該區(qū)域)中指定一臺(tái)相對(duì)負(fù)載最輕的視頻服務(wù)器,將用戶(hù)的訪(fǎng)問(wèn)重新定向過(guò)去,由此臺(tái)流媒體服務(wù)器把視頻節(jié)目以流的形式直接傳輸給點(diǎn)播用戶(hù)。
系統(tǒng)提供高效的流量平衡和在線(xiàn)用戶(hù)數(shù)管理機(jī)制,最大限度保證用戶(hù)的訪(fǎng)問(wèn)質(zhì)量。支持各節(jié)點(diǎn)之間的本地動(dòng)態(tài)負(fù)載均衡以及全局動(dòng)態(tài)負(fù)載均衡,支持多種負(fù)載均衡策略,可根據(jù)在線(xiàn)用戶(hù)數(shù)量、系統(tǒng)負(fù)載等分配流量;
WebIPTV、WebLIVE服務(wù)器負(fù)載平衡
WebIPTV、WebLIVE模塊和WebVOD模塊不同,一般情況下點(diǎn)播服務(wù)器上會(huì)存儲(chǔ)上萬(wàn)部不同的視頻節(jié)目,而直播服務(wù)器一般情況下只直播幾個(gè)固定的頻道。所以直播服務(wù)器的負(fù)載平衡主要有兩種方式:
采集工作站直接把采集到的視頻流傳輸?shù)礁髋_(tái)發(fā)布服務(wù)器上,由各臺(tái)發(fā)布服務(wù)器直接發(fā)布。這種方式的延時(shí)最小、效果最好,但是采用這種方式要求采集工作站的網(wǎng)絡(luò)帶寬(主要是上傳帶寬)較高,帶寬大小要大于:每路采集碼流×采集路數(shù)×直播服務(wù)器數(shù)量。
采集工作站先把采集到的視頻流傳輸?shù)狡渲幸慌_(tái)發(fā)布服務(wù)器上,然后再由這臺(tái)服務(wù)器傳輸?shù)狡渌髋_(tái)發(fā)布服務(wù)器上,然后再進(jìn)行發(fā)布。這種方式的延時(shí)稍長(zhǎng)(中間經(jīng)過(guò)了轉(zhuǎn)發(fā)),但是采用這種方式對(duì)采集工作站的網(wǎng)絡(luò)帶寬要求大大降低(上傳帶寬大于:每路采集碼流×采集路數(shù))。
這兩種方法各有利弊,具體采用哪種方法要根據(jù)采集工作站的帶寬情況來(lái)選擇(上述主要針對(duì)廣域網(wǎng)中的應(yīng)用,如果針對(duì)局域網(wǎng)和部分城域網(wǎng)的應(yīng)用,則可以利用VIEWGOOD平臺(tái)的組播功能,則上傳帶寬則等同于每路采集信號(hào)的上傳帶寬)。
用戶(hù)直播請(qǐng)求送到認(rèn)證計(jì)費(fèi)服務(wù)器,認(rèn)證計(jì)費(fèi)服務(wù)器判斷用戶(hù)直播請(qǐng)求的節(jié)目在哪幾臺(tái)直播服務(wù)器上能提供服務(wù),然后再判斷這幾臺(tái)直播服務(wù)器中哪臺(tái)相對(duì)負(fù)載最輕,就把請(qǐng)求發(fā)給這臺(tái)直播服務(wù)器,此臺(tái)流媒體服務(wù)器把視頻節(jié)目流直接傳輸給直播用戶(hù)。
作者郵箱:chenxingjing@viewgood.com
遠(yuǎn)古科技公司供稿 CTI論壇編輯