負載均衡演算法小結

2021-08-25 20:40:11 字數 1440 閱讀 8722

from:

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

btw:雖然是cache負載均衡演算法小結,其實可以說是負載均衡演算法小結,只是針對cache應用場景罷了。

負載均衡演算法主要有:

static演算法

random演算法

round robin演算法

hash演算法

carp演算法

consistent hash演算法

備份模式,其總是返回伺服器組的第乙個伺服器(只要第乙個伺服器可用),當第乙個伺服器沒有用的時候,才會返回後續可用的伺服器。

這種情況下,每台機器都包括全量的資料,查詢通常會落到第一台機器上,第一台機器上cache命中率高,但是當失敗的時候,落到第二胎機器上,那就杯具了,cache命中率那個低啊!!!

地球人都知道的演算法,對於無狀態服務比較適用,隨便選取一台機器就可以。

idx=rand()%m

在 實際使用中,跟static演算法一樣,都是模組維護全量資料,這個還好每台機器的cache命中率理論上應該差不多,但是都不高,為啥呢?因為同樣乙個請 求一會落到機器a,一會落到機器b上。敗家子啊,浪費記憶體啊,記憶體有限,cache會被淘汰,頻繁淘汰,當然使得命中率低下啊。

餘數計算的方法簡單,資料的分散性也相當優秀,但也有其缺點。那就是當新增或移除伺服器時,快取重組的代價相當巨大。新增伺服器後,餘數就會產生巨變,這樣就無法獲取與儲存時相同的伺服器,從而影響快取的命中率。

一 致性hash演算法是:首先求出伺服器(節點)的雜湊值,並將其配置到0~2^32的圓(continuum)上。然後用同樣的方法求出儲存資料的鍵的雜湊 值,並對映到圓上。然後從資料對映到的位置開始順時針查詢,將資料儲存到找到的第乙個伺服器上。如果超過2^32仍然找不到伺服器,就會儲存到第一台服務 器上。

idx=firstmaxserveridx(hash(query_key))

新增節點的時候:

consistent hash演算法背後最基礎的思想就是:對object和cache machine使用相同的hash函式【dht演算法的核心啊,p2p的理論基石啊,資源和位址節點在統一位址空間進行編址】。consistent hash適用於每個節點只儲存部分資料,而不是像前面幾種演算法,每個節點儲存全量資料。這樣做的好處是能夠把cache機器對映到一段interval 上,而這段interval就會包含一定數目的物件的hash值。如果某台cache機器被移除了,那麼它對映到的interval被和它相鄰的乙個 cache機器託管,其他所有的cache機器都不用變。

一致性雜湊演算法最大程度的避免了key在服務節點列表上的重新分布,其他附帶的改進就是有的一致性 雜湊演算法還增加了虛擬服務節點的方法,也就是乙個服務節點在環上有多個對映點,這樣就能抑制分布不均勻,最大限度地減小服務節點增減時的快取重新分布。

參考:

負載均衡演算法小結

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

負載均衡演算法小結

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

負載均衡演算法小結

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