負載均衡之子集選擇演算法

2021-10-07 21:57:25 字數 659 閱讀 7659

目錄背景

目前的場景下,任務管理集群apiserver有6個節點,agent集群的數量有36w+。之前的演算法是agent通過註冊中心獲取apiserver全量的節點數,並建立連線,所以每個apiserver上維護了36w+的連線池。

當集群負載高時,擴容apiserver節點並不能解決負載的問題,因為新節點並不能平攤其他節點的連線數,為此需要採用sharding的方式,讓每個agent連線到部分的apiserver節點,並且這個過程需要是冪等的,就是如果apiserver節點沒有變更,那麼agent節點獲取到的apiserver節點是不變的。

採用的方案是《用golang實現了這個演算法,在實際使用中,backends儲存了apiserver節點的ip,clientid是將原client的ip位址做了crc處理,轉成int,subsetsize就是子集的大小。

func subset(backends string, clientid int,subsetsize int) string)

subsetid:= clientid%subsetcount

start := subsetid * subsetsize

return backends[start:start+subsetsize]

}

負載均衡演算法

輪循演算法 roundrobin 說明 每一次來自網路的請求輪流分配給內部中的每台伺服器,從1至n然後重新開始 舉例 適合於伺服器組中的所有伺服器都有相同的軟硬體配置並且平均服務請求相對均衡的情況 最少連線演算法 leastconnection 說明 客戶端的每一次請求服務在伺服器停留的時間都可能會...

負載均衡演算法

網際網路分布式系統中,很多服務是資料儲存相關的,海量訪問量下,直接訪問儲存介質是抗不住的,需要使用cache,cache集群的負載均衡演算法就成為乙個重要的話題,這裡對現有的負載均衡演算法進行一些總結。btw 雖然是cache負載均衡演算法小結,其實可以說是負載均衡演算法小結,只是針對cache應用...

負載均衡演算法

負載均衡演算法的實現可以分成兩部分 1 根據負載均衡演算法和web伺服器列表計算得到集群中一台web伺服器的位址 2 將請求資料傳送到該位址對應的web伺服器上 負載均衡演算法通常有以下幾種 1 輪詢 round robin rr 所有請求被依次分發到每台應用伺服器上,即每台應用伺服器要處理的請求數...