負載均衡排程演算法簡介

2022-01-12 17:28:41 字數 1714 閱讀 8860

在分布式架構體系中,業務邏輯復用的需求十分強烈,上層業務想借助已有的底層服務,來快速搭建更多、更豐富的應用,降低新業務開展的人力和時間成本,快速滿足瞬息變化的市場需求。公共的服務被拆分出來,形成可用的服務,最大程度的保障了**和邏輯的復用,避免重複建設,這種設計也稱之為soa

在soa架構之中,服務消費者通過服務名稱,在眾多服務中找到呼叫的服務的位址表,稱為服務的路由(如 上圖所示)。當請求到來時,為了將請求均衡的分配到後端伺服器,負載均衡程式將從服務對應的位址列表中,通過相應的負載均衡演算法和規則,選取一台伺服器進行訪問,這個過程就叫做負載均衡。

為了保證系統的穩定性,減輕系統的壓力,負載均衡演算法就顯得很重要了,下面就重點介紹一些常見的負載均衡演算法。

輪詢就是將請求輪流的分配到後端伺服器上,他均衡對待每台伺服器,而不關心實際的連線數和系統的負載。

idx=(idx+1)%m  

通過系統隨機函式,根據伺服器列表的大小值來隨機選取其中一台進行訪問。由概率論統計理論可以得知,隨著呼叫量的增加,其實際效果越來越接近平均分配流量到每一台後端伺服器,也是輪詢的結果。

idx=rand()%m  

客戶端的每一次請求服務在伺服器停留的時間都可能會有較大的差異,隨著工作時間的加長,如果採用簡單的輪循或隨機均衡演算法,每一台伺服器上的連線程序可能會產生極大的不同,這樣的結果並不會達到真正的負載均衡。最少連線數均衡演算法對內部中有負載的每一台伺服器都有乙個資料記錄,記錄的內容是當前該伺服器正在處理的連線數量,當有新的服務連線請求時,將把當前請求分配給連線數最少的伺服器。

此種負載均衡演算法適合長時間處理的請求服務。

負載均衡裝置對內部各伺服器發出乙個探測請求(例如ping),然後根據內部中各伺服器對探測請求的最快響應時間來決定哪一台伺服器來響應客戶端的服務請求。

此種負載均衡演算法能較好地反映伺服器的當前執行狀態,但最快響應時間僅僅指的是負載均衡裝置與伺服器間的最快響應時間,而不是客戶端與伺服器間的最快響應時間。

從乙個特定的客戶端發出的請求都被分配到乙個實服務組中的同乙個實伺服器上進行處理。

5.1.基於ip的演算法

persistent ip(pi): 基於使用者ip位址來選擇伺服器。

hash ip(hi): 基於使用者ip位址的hash值,來選擇伺服器

consistent hash ip(chi): 基於列表ip來選擇伺服器

5.2.基於報頭/請求的演算法

hashheader(hh): 基於使用者請求報中http報頭來選擇伺服器;

persistenthostname(ph): 基於使用者請求報中http報頭的hostname的hash值,來選擇伺服器;

persistenturl(pu): 基於對uritag和值的靜態對應關係來選擇伺服器。

sslsessionid(sslsid): 基於ssl會話id來選擇伺服器。

5.3.基於cookie的負載均衡演算法

persistentcookie(pc):選擇伺服器基於使用者請求包用cookiename/value的靜態對應關係;

hashcookie(hc):選擇伺服器基於使用者請求包用cookiename/value的hash值對應關係;

insertcookie(ic):選擇伺服器基於負載均衡器向伺服器響應包中插入cookie;

re-writecookie(rc):選擇伺服器基於負載均衡器向伺服器響應包中重寫cookie值。(必須為重寫指定cookie值的偏移量)

負載均衡排程演算法簡介

在分布式架構體系中,業務邏輯復用的需求十分強烈,上層業務想借助已有的底層服務,來快速搭建更多 更豐富的應用,降低新業務開展的人力和時間成本,快速滿足瞬息變化的市場需求。公共的服務被拆分出來,形成可用的服務,最大程度的保障了 和邏輯的復用,避免重複建設,這種設計也稱之為soa。在soa架構之中,服務消...

負載均衡排程演算法

本文僅僅是總結lvs和nginx中常使用的負載均衡排程演算法 lvs 輪詢 rr 按一次迴圈的方式將請求排程到不同的伺服器上。輪詢演算法假設所有的伺服器處理請求的能力都一樣,排程器會將所有的請求平均分配給每個真實伺服器 加權輪詢 wrr lvs會考慮每台伺服器的效能,並給每台伺服器新增乙個權值,如果...

負載均衡排程演算法

最常用之一,輪詢排程,它之所以最常用就是因為它實現起來很簡單,因為它很公平,就是集群中的每乙個realserver都是平均分配,沒有能者多勞一說 也是最常用之一,加權輪詢排程,就是輪詢排程的公升級版,它在輪詢排程的基礎上多了乙個叫 權重 的概念,權重就是在我們新增集群服務的時候,有乙個 w這個引數,...