《分佈式技術原理與算法解析》學習筆記Day25

負載均衡

負載均衡是分佈式可靠性中非常關鍵的一個問題,它在一定程度上反映了分佈式系統對業務處理的能力。

什麼是負載均衡?

負載均衡可以分爲兩種:

  1. 請求負載均衡,即將用戶的請求均衡的分發到不同的服務器進行處理。
  2. 數據負載均衡,即將用戶更新的數據分發到不同的存儲服務器。

分佈式系統中,服務請求的負載均衡是指當處理大量用戶請求時,請求應該儘量均衡地分配到多臺服務器上進行處理,每臺服務器處理其中一部分而不是全部請求,這樣才能完成高併發的請求處理,避免因爲單機處理能力有限,導致系統崩潰而無法提供服務的問題。

服務請求負載均衡算法

我們主要討論三種負載均衡算法:

  1. 輪詢策略
  2. 隨機策略
  3. 哈希和一致性哈希策略

輪詢策略

輪詢策略是一種實現簡單、但卻很常用的負載均衡策略,核心思想是讓服務器輪流處理用戶請求,以儘可能使得每個服務器處理的請求數相同。

輪詢策略主要包括順序輪詢和加權輪詢兩種方式。

輪詢策略的優點是實現簡單,且對於請求所需開銷差不多時,負載均衡效果比較明顯,同時加權輪詢策略還考慮了服務器節點的異構性,可以像性能更好的服務器有更高的優先級,處理更多的請求,這樣請求分發更加合理。

輪詢策略的缺點是每次請求到的目的節點不確定,不適用於有狀態請求的場景,並且,輪詢策略主要強調請求數的均衡性,不適用於處理請求所需開銷不同的場景。

輪詢策略適用於用戶請求所需資源比較接近的場景。

隨機策略

隨機策略是指當用戶請求到來時,會隨機分發到某個服務節點進行處理,可以採用隨機函數來實現節點選取的操作,它的作用是讓請求儘可能的分散到不同節點,防止所有請求放到同一節點或者少量幾個節點上。

這種方式的優點是實現簡單,缺點是每次請求到達的目的節點不確定,不適合有狀態的場景,而且沒有考慮到處理請求所需要的開銷。另外,隨機策略沒有考慮到服務器節點的異構性。

隨機策略適用於集羣中服務器節點處理能力相差不大,用戶請求所需資源比較接近的場景。

哈希和一致性哈希策略

哈希和一致性哈希是數據負載均衡中常用的算法,數據分佈算法的均勻性,一方面指數據的存儲均勻,另一方面也指數據請求均勻。

哈希與一致性哈希的優點是哈希函數設置合理時,負載會比較均衡,而且相同key的請求會落在同一個服務節點上,適用於有狀態請求的場景,另外,帶虛擬接地啊的一致性哈希策略還可以解決服務器節點異構的問題。

哈希與一致性哈希的缺點在於當某個節點出現故障時,採用哈希策略會出現數據大規模遷移的情況,採用一致性哈希策略可能會造成一定的數據傾斜問題,同時,這種策略也沒有考慮請求開銷不同造成的不均衡問題。

下面是針對三種不同的負載均衡策略的詳細比較。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章