天天看點

round-robin java_Round-Robin負載均衡算法及其實作原理

毫無疑問,随着網際網路、移動網絡接入成本的降低,網際網路正在日益深入地走入我們的生活,越來越成為人們擷取資訊的高效平台,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;returnSi;

}while (j !=i);return NULL;

round-robin java_Round-Robin負載均衡算法及其實作原理

圖1 輪詢排程實作邏輯圖示

輪詢排程算法假設所有伺服器的處理性能都相同,不關心每台伺服器的目前連接配接數和響應速度。當請求服務間隔時間變化比較大時,輪詢排程算法容易導緻伺服器間的負載不平衡。

是以此種均衡算法适合于伺服器組中的所有伺服器都有相同的軟硬體配置并且平均服務請求相對均衡的情況。