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



















