毫無疑問,隨着互聯網、移動網絡接入成本的降低,互聯網正在日益深入地走入我們的生活,越來越成為人們獲取信息的高效平台,ICP行業也順勢呈現出強勁的成長趨勢,成為互聯網迅猛發展形勢下最大的受益者,也直接促成了從web1.0到web2.0以及社區、博客、視頻等一系列互聯網時代的更迭和運營模式的變動。
但是隨着各站點訪問量和信息交流量的迅猛增長,如何使用最小的資源成本,提高網絡的效率,最優化用戶體驗,已經成為網絡管理人員不得不面對的挑戰。
從技術上講,就是ICP行業面臨的網絡資源有效利用問題,也就是如何進行對網絡的訪問分流,以便能夠快速響應用戶反應,即:負載均衡。
從這篇文章起,我們將講述在負載均衡技術實現中的核心技術:負載均衡算法(算法)的原理及其實現,使大家對負載均衡底層技術有一個深刻的了解。這些算法是負載均衡設備中的核心實現基礎。
本篇文章先講述輪詢調度算法 (Round-Robin)及其在此基礎上改進型的權重輪詢算法 (Weighted Round-Robin)。
輪詢調度算法(Round-Robin Scheduling)
輪詢調度算法的原理是每一次把來自用戶的請求輪流分配給內部中的服務器,從1開始,直到N(內部服務器個數),然后重新開始循環。
算法的優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度。
輪詢調度算法流程
假設有一組服務器N台,S = {S1, S2, …, Sn},一個指示變量i表示上一次選擇的服務器ID。變量i被初始化為N-1。其算法如下:
j = i; do { j = (j + 1) mod n; i = j; return Si; } while (j != i); return NULL;
圖1 輪詢調度實現邏輯圖示
輪詢調度算法假設所有服務器的處理性能都相同,不關心每台服務器的當前連接數和響應速度。當請求服務間隔時間變化比較大時,輪詢調度算法容易導致服務器間的負載不平衡。
所以此種均衡算法適合於服務器組中的所有服務器都有相同的軟硬件配置並且平均服務請求相對均衡的情況。