官术网_书友最值得收藏!

4.5.4 均衡策略與實現

負載均衡的兩大職責是“選擇誰來處理用戶請求”和“將用戶請求轉發過去”。前面我們僅介紹了后者,即請求的轉發或代理過程。前者是指均衡器所采取的均衡策略,由于這一塊涉及的均衡算法太多,筆者無法逐一展開,所以本節僅從功能和應用的角度去介紹一些常見的均衡策略。

·輪詢均衡(Round Robin):每一次來自網絡的請求輪流分配給內部的服務器,從1至N然后重新開始。此種均衡算法適合于服務器集群中的所有服務器都有相同的軟硬件配置并且平均服務請求相對均衡的情況。

·權重輪詢均衡(Weighted Round Robin):根據服務器的不同處理能力,給每個服務器分配不同的權值,使其能夠接受相應權值數的服務請求。譬如:設置服務器A的權值為1,B的權值為3,C的權值為6,則服務器A、B、C將分別接收到10%、30%、60%的服務請求。此種均衡算法能確保高性能的服務器得到更多的使用率,避免低性能的服務器負載過重。

·隨機均衡(Random):把來自客戶端的請求隨機分配給內部的多個服務器,在數據量足夠大的場景下能達到相對均衡的分布。

·權重隨機均衡(Weighted Random):此種均衡算法類似于權重輪詢算法,不過在分配處理請求時是隨機選擇的過程。

·一致性哈希均衡(Consistency Hash):將請求中的某些數據(可以是MAC、IP地址,也可以是更上層協議中的某些參數信息)作為特征值來計算需要落在的節點,算法一般會保證同一個特征值每次都一定落在相同的服務器上。這里的一致性是指保證當服務集群某個真實服務器出現故障時,只影響該服務器的哈希值,而不會導致整個服務器集群的哈希鍵值重新分布。

·響應速度均衡(Response Time):負載均衡設備對內部各服務器發出一個探測請求(例如Ping),然后根據內部各服務器對探測請求的最快響應時間來決定哪一臺服務器響應客戶端的服務請求。此種均衡算法能較好地反映服務器的當前運行狀態,但最快響應時間僅僅指的是負載均衡設備與服務器之間的最快響應時間,而不是客戶端與服務器之間的最快響應時間。

·最少連接數均衡(Least Connection):客戶端的每一次請求服務在服務器停留的時間可能會有較大差異,隨著工作時間增加,如果采用簡單的輪詢或隨機均衡算法,每一臺服務器上的連接進程可能會產生極大的不平衡,并不能達到真正的負載均衡。最少連接數均衡算法會對內部需負載的每一臺服務器有一個數據記錄,記錄當前該服務器正在處理的連接數量,當有新的服務連接請求時,將把當前請求分配給連接數最少的服務器,使均衡更加符合實際情況,使負載更加均衡。此種均衡策略適合長時處理的請求服務,如FTP傳輸。

從實現角度來看,負載均衡器的實現分為“軟件均衡器”和“硬件均衡器”兩類。在軟件均衡器方面,又分為直接建設在操作系統內核的均衡器和應用程序形式的均衡器兩種。前者的代表是LVS(Linux Virtual Server),后者的代表有Nginx、HAProxy、KeepAlived等。前者性能會更好,因為無須在內核空間和應用空間中來回復制數據包;而后者的優勢是選擇廣泛,使用方便,功能不受限于內核版本。

在硬件均衡器方面,往往會直接采用應用專用集成電路(Application Specific Integrated Circuit,ASIC)來實現,有專用處理芯片的支持,避免操作系統層面的損耗,以達到最高的性能。這類均衡器的代表就是著名的F5和A10公司的負載均衡產品。

主站蜘蛛池模板: 永福县| 武强县| 兰溪市| 小金县| 汪清县| 汝南县| 库伦旗| 嘉禾县| 东平县| 温宿县| 高陵县| 舟山市| 教育| 中江县| 安庆市| 德保县| 芮城县| 墨竹工卡县| 阳信县| 拜泉县| 汝阳县| 芜湖县| 平塘县| 罗平县| 那曲县| 马公市| 玉田县| 兴隆县| 浦东新区| 洪洞县| 黄陵县| 精河县| 吴桥县| 普陀区| 鄱阳县| 宁国市| 比如县| 平阴县| 东乌珠穆沁旗| 西畴县| 麟游县|