漫談負(fù)載均衡相關(guān)概念
關(guān)于負(fù)載均衡的概念,我們已經(jīng)介紹的很多了。那么在此,我們繼續(xù)介紹一下負(fù)載均衡相關(guān)的內(nèi)容。那么包括它的技術(shù)實(shí)現(xiàn)和層次以及服務(wù)器相關(guān)內(nèi)容?,F(xiàn)在,讓我們具體看一下內(nèi)容吧。
負(fù)載均衡技術(shù)實(shí)現(xiàn)結(jié)構(gòu)
在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,負(fù)載均衡提供了一種廉價(jià)有效的方法擴(kuò)展服務(wù)器帶寬和增加吞吐量,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力,提高網(wǎng)絡(luò)的靈活性和可用性。它主要完成以下任務(wù):
解決網(wǎng)絡(luò)擁塞問題,服務(wù)就近提供,實(shí)現(xiàn)地理位置無關(guān)性
為用戶提供更好的訪問質(zhì)量
提高服務(wù)器響應(yīng)速度
提高服務(wù)器及其他資源的利用效率
避免了網(wǎng)絡(luò)關(guān)鍵部位出現(xiàn)單點(diǎn)失效
廣義上的負(fù)載均衡既可以設(shè)置專門的網(wǎng)關(guān)、負(fù)載均衡器,也可以通過一些專用軟件與協(xié)議來實(shí)現(xiàn)。對一個(gè)網(wǎng)絡(luò)的負(fù)載均衡應(yīng)用,從網(wǎng)絡(luò)的不同層次入手,根據(jù)網(wǎng)絡(luò)瓶頸所在進(jìn)行具體分析。從客戶端應(yīng)用為起點(diǎn)縱向分析,參考OSI的分層模型,我們把負(fù)載均衡技術(shù)的實(shí)現(xiàn)分為客戶端負(fù)載均衡技術(shù)、應(yīng)用服務(wù)器技術(shù)、高層協(xié)議交換、網(wǎng)絡(luò)接入?yún)f(xié)議交換等幾種方式。
負(fù)載均衡的層次
基于客戶端的負(fù)載均衡
這種模式指的是在網(wǎng)絡(luò)的客戶端運(yùn)行特定的程序,該程序通過定期或不定期的收集服務(wù)器群的運(yùn)行參數(shù):CPU占用情況、磁盤IO、內(nèi)存等動(dòng)態(tài)信息,再根據(jù)某種選擇策略,找到可以提供服務(wù)的最佳服務(wù)器,將本地的應(yīng)用請求發(fā)向它。如果負(fù)載信息采集程序發(fā)現(xiàn)服務(wù)器失效,則找到其他可替代的服務(wù)器作為服務(wù)選擇。整個(gè)過程對于應(yīng)用程序來說是完全透明的,所有的工作都在運(yùn)行時(shí)處理。因此這也是一種動(dòng)態(tài)的負(fù)載均衡技術(shù)。
但這種技術(shù)存在通用性的問題。因?yàn)槊恳粋€(gè)客戶端都要安裝這個(gè)特殊的采集程序;并且,為了保證應(yīng)用層的透明運(yùn)行,需要針對每一個(gè)應(yīng)用程序加以修改,通過動(dòng)態(tài)鏈接庫或者嵌入的方法,將客戶端的訪問請求能夠先經(jīng)過采集程序再發(fā)往服務(wù)器,以重定向的過程進(jìn)行。對于每一個(gè)應(yīng)用幾乎要對代碼進(jìn)行重新開發(fā),工作量比較大。
所以,這種技術(shù)僅在特殊的應(yīng)用場合才使用到,比如在執(zhí)行某些專有任務(wù)的時(shí)候,比較需要分布式的計(jì)算能力,對應(yīng)用的開發(fā)沒有太多要求。另外,在采用JAVA構(gòu)架模型中,常常使用這種模式實(shí)現(xiàn)分布式的負(fù)載均衡,因?yàn)閖ava應(yīng)用都基于虛擬機(jī)進(jìn)行,可以在應(yīng)用層和虛擬機(jī)之間設(shè)計(jì)一個(gè)中間層,處理負(fù)載均衡的工作。
應(yīng)用服務(wù)器的負(fù)載均衡技術(shù)
如果將客戶端的負(fù)載均衡層移植到某一個(gè)中間平臺(tái),形成三層結(jié)構(gòu),則客戶端應(yīng)用可以不需要做特殊的修改,透明的通過中間層應(yīng)用服務(wù)器將請求均衡到相應(yīng)的服務(wù)結(jié)點(diǎn)。比較常見的實(shí)現(xiàn)手段就是反向代理技術(shù)。使用反向代理服務(wù)器,可以將請求均勻轉(zhuǎn)發(fā)給多臺(tái)服務(wù)器,或者直接將緩存的數(shù)據(jù)返回客戶端,這樣的加速模式在一定程度上可以提升靜態(tài)網(wǎng)頁的訪問速度,從而達(dá)到負(fù)載均衡的目的。
使用反向代理的好處是,可以將負(fù)載均衡和代理服務(wù)器的高速緩存技術(shù)結(jié)合在一起,提供有益的性能。然而它本身也存在一些問題,首先就是必須為每一種服務(wù)都專門開發(fā)一個(gè)反向代理服務(wù)器,這就不是一個(gè)輕松的任務(wù)。
反向代理服務(wù)器本身雖然可以達(dá)到很高效率,但是針對每一次代理,代理服務(wù)器就必須維護(hù)兩個(gè)連接,一個(gè)對外的連接,一個(gè)對內(nèi)的連接,因此對于特別高的連接請求,代理服務(wù)器的負(fù)載也就非常之大。反向代理能夠執(zhí)行針對應(yīng)用協(xié)議而優(yōu)化的負(fù)載均衡策略,每次僅訪問最空閑的內(nèi)部服務(wù)器來提供服務(wù)。但是隨著并發(fā)連接數(shù)量的增加,代理服務(wù)器本身的負(fù)載也變得非常大,最后反向代理服務(wù)器本身會(huì)成為服務(wù)的瓶頸。