◇長江大學計算機科學學院 李輝
隨著計算機和網絡技術的快速發展,計算機的運行和處理數據能力也進一步增強,僅靠單臺設備來處理數據已無法滿足日益復雜的數據處理需求。負載均衡技術能夠對任務進行合理分配,多臺設備并行處理任務,系統的處理能力大大提高,同時縮減了響應等待的時間。本文詳細介紹了負載均衡技術的分類及不同技術的特點和應用范圍,對制定合理的負載均衡策略需考慮的因素進行了分析,為處理更為復雜的任務提供了理論依據。
隨著計算機和網絡技術的快速發展,計算機的運行和處理數據能力也進一步增強,傳統簡單的處理設備無法承擔處理龐大數據流量和訪問量的任務。如果僅采用簡單的傳統硬件升級辦法來提高計算機的運行速度和能力,不僅將造成大量的資源浪費,更重要的是面對發展如此迅速的網絡技術和日益復雜的數據處理需求,僅采用硬件升級的辦法只能解決一時的問題,不能作為長久之計[1]。由單一模塊處理轉換成多模塊共同處理,并且使多模塊處理任務盡可能平均分配處理任務的需求日益凸顯,既能解決資源浪費的問題,又能提升計算機處理能力,還能降低因設備頻繁升級產生的時間成本,負載均衡技術也應運而生[2]。
負載均衡技術的提出是1996年Foundry公司提出的,Foundry公司的主營產品是交換機,在面對當時互聯網行業的迅猛發展,業務規模暴增,使得該公司不得不研發新的方案來處理處理能力與需求量嚴重不匹配的矛盾,基于此背景,Foundry公司研發出負載均衡產品,并將其運用到自己的交換機上。負載均衡技術有兩個方面的功能:一方面,該技術因對任務進行了合理分配,多臺設備并行處理任務,后由專門的設備處理匯總進行反饋,使系統的處理能力大大提高;另一方面,由單臺設備優化為多臺設備處理,縮減了響應等待的時間[3]。負載均衡原理示意圖如圖1所示。

圖1 負載均衡原理示意圖
負載均衡并非字面理解的絕對均衡,通常是把因處理量特別大可能導致某臺設備“堵塞”的負載分配給其他設備進行處理,對任務進行分擔[4]。負載均衡的作用類似于輪流值日制度,并將接收到的處理任務分給大家共同完成。
負載均衡技術因在傳統技術手段上提供了一種效率更高、可靠性更強的方法,同時擴展了服務器、網絡設備、鏈路的帶寬,使得處理數據的能力大大加強,提高了網絡的靈活性和可用性,因而被廣泛使用[5]。
負載均衡技術主要有七個方面的功能:解決網絡擁堵問題、就近提供服務、提升用戶的使用滿意度、提高服務器的處理能力和響應速度、降低資源的浪費、實現地理位置無慣性、降低單點失效的概率。
負載均衡均衡技術主要可分為以下四類:軟件負載均衡和硬件負載均衡,本地負載均衡和全局負載均衡,更高網絡層負載均衡,鏈路聚合技術。負載均衡技術的應用應從網絡的不同層次著手進行實際分析。本文以客戶端應用為起點進行縱向分析,結合開放式系統互聯通信參考模型(簡稱OSI模型),將負載均衡技術的應用分為基于客戶端負載均衡技術、應用服務器的負載均衡技術、基于域名系統的負載均衡技術、鏈路聚合技術等幾種方式[6]。
(1)基于客戶端負載均衡技術。簡單來將,該技術就是在客戶端編寫一個特殊的程序,該程序對任務進行處理后再向服務器發起請求。在進行處理任務時,首先由該特殊程序對任務進行判斷,依此來制定最合理的處理策略,確定最佳服務器來進行任務處理,在此服務器無法正常處理任務時,會向其他能處理該任務的服務器發起請求,這是一種動態的附在均衡技術。其運行原理如圖2所示。

圖2 基于客戶端負載均衡技術運行原理圖
基于客戶端負載均衡技術的特點有:①均衡技術是在客戶端實現的,不需要使用其他外部負載均衡設備;②特定程序處理后的任務有可能導致所有服務器均無法使用的問題,其透明度低;③特定程序處理后的任務有可能導致單臺服務器過載的問題。鑒于該技術存在以上特點,在實際處理任務時,需對特殊程序進行優化,即針對不同的任務,對該特殊程序進行一定的修改,使之能夠制定出更合理的處理策略,如果想高效合理的應用該技術,特殊程序的開發頻率較高,其工作量較大。通常該技術比較適合客戶端有較龐大的程序庫,以及對服務器入流量較大的任務(比如,Memcache大流量寫入),該技術也可以與其他負載均衡技術相結合來制定更加合理的策略。
(2)應用服務器的負載均衡技術。在基于客戶端負載均衡技術的基礎上,如果能用中間平臺來替代那些特殊程序,構成一種三層數據處理結構,那么在客戶端就可以不用經常對特殊程序進行修改,而是在中間利用某一專業的技術手段對任務進行處理后再提交到服務器,應用最廣泛的技術就是反向代理技術,該技術可將任務比較均勻的發送到各個服務器,以達到負載均衡的目的。其技術原理如圖3所示。

圖3 應用服務器的負載均衡技術運行原理圖
應用服務器的負載均衡技術的特點是可以將負載均衡和代理服務器的高速緩存技術結合在一起,提供更加優化的策略。其缺點是在處理不同類型的任務時,都需要用到不同的負載均衡器,開發成本較高。該技術主要用在windows NLB、nginx反向代理和F5設備上。
(3)基于域名系統的負載均衡技術。美國國家超級計算應用中心是最先使用基于域名系統的負載均衡技術的,目前,大部分負載均衡技術都是通過域名系統來訪問目的主機的,在客戶端發出任務處理請求時,首先必須通過DNS請求獲得服務器的IP地址,基于DNS的全局負載均衡正是在返回DNS解析結果的過程中,制定出最優化的任務處理策略,最終會反饋一個最佳服務IP到客戶端。其技術原理如圖4所示。

圖4 基于域名系統的負載均衡技術運行原理圖
因該技術應用難度不高,且不需要復雜的軟硬件設備,易于管理,因此被廣泛使用。
(4)鏈路聚合技術。鏈路聚合技術又稱 Trunk,是指利用多個物理端口相互捆綁,從而形成一個邏輯端口,從而分擔各成員端口出/入流量的負荷量的新興技術[7]。交換機會在分析了用戶配備的端口負擔的流量決定報文發送到什么交換機和何種類型的端口上。
在處理復雜的任務時,如果能夠制定最佳的負載均衡策略,既能對任務進行合理分配,提高系統的處理能力,又能縮減響應等待的時間[8]。在各類負載均衡技術中,根據客戶端的不同需求,在開放式系統互聯通信參考模型的第二、三、四、七層的負載均衡都有不同的負載均衡策略。影響負載均衡策略效率和難易程度的關鍵因素主要有負載均衡算法和其檢測方法和能力。常用的負載均衡算法有輪循均衡、權重輪循均衡、隨機均衡、權重隨機均衡、響應速度均衡、最少連接數均衡、處理能力均衡。應根據客戶端的實際需求來選擇恰當的算法,從而制定出最優化的負載均衡策略。
應用最佳的負載均衡策略能讓多臺服務器或多條鏈路共同承擔一些繁重的計算或I/O任務,從而降低運行成本,提高網絡的靈活性和可靠性。