天天看點

[分布式][負載均衡]負載均衡的分類和算法

一、負載均衡分類

1. DNS 負載均衡

思路是 DNS 解析同一個域名時可以傳回不同的IP位址。

用來實作地理級别的均衡,例如,北方使用者通路北京機房、南方使用者通路深圳機房。

優點:

  • 簡單,成本低,直接交給DNS伺服器處理即可,無需自己維護。
  • 就近通路,提升通路速度。

缺點:

  • DNS緩存時間較長,更新不及時。
  • DNS控制權在域名商那裡,無法根據業務特點定制擴充。

2. 硬體負載均衡

通過單獨的硬體裝置實作負載均衡,典型裝置例如 F5、A10。

優點:

  • 功能強大,支援各級負載均衡,支援各種負載均衡算法,支援全局負載均衡。
  • 性能強大,可以支援100萬以上的并發。
  • 穩定性高。
  • 支援安全防護,除了負載均衡的功能,還有防火牆、防DDoS攻擊等安全功能。

缺點:

  • 昂貴,價格幾萬甚至數十萬。
  • 擴充能力差。

3. 軟體負載均衡

通過軟體實作,例如我們熟悉的 Nginx(7層負載均衡) 和 LVS(4層負載均衡)。

和硬體負載均衡相比,性能差了很多,Nginx 能支援5萬/秒,而F5是百萬級,但價格也便宜了很多。

優點:

  • 簡單
  • 便宜
  • 靈活

缺點:

  • 性能一般
  • 沒有防火牆等安全功能

負載均衡的典型架構

DNS、硬體、軟體這3中方式可以組合使用,基本原則:

  • DNS方式用于實作地理級别的負載均衡。
  • 硬體方式用于實作叢集級别的負載均衡。
  • 軟體方式用于實作機器級别的負載均衡。
[分布式][負載均衡]負載均衡的分類和算法

二、負載均衡算法

1. 輪詢

負載均衡系統接收到請求後,按照順序輪流配置設定給伺服器。

這種方式非常簡單,隻管按順序配置設定,至于伺服器目前負載情況、硬體能力等都不關心,隻要伺服器還能工作,就可以配置設定,除非伺服器挂了。

2. 權重輪詢

是輪詢方式的一種改進,輪詢方式是無差别配置設定,但實際伺服器的處理能力是有差異的,是以需要差別對待。

為伺服器設定權值,權值高的就多配置設定點。

3. 負載最低優先

将任務配置設定給目前負載最低的伺服器。

例如 LVS 可以根據“連接配接數”判斷伺服器狀态,NGINX 可以根據“HTTP請求數”來判斷。

這種方式比輪詢進階很多,可以感覺伺服器的狀态了,但其複雜度也大大提高了,要收集統計伺服器的負載資訊。

4. 性能最優

優先将任務配置設定給處理速度最快的伺服器,來達到最快響應用戶端的目的。

此方式也是感覺伺服器的狀态,标準是響應時間。

需要收集分析伺服器的響應時間,這個工作本身消耗也不小,是以采用采樣的方式,不統計所有任務的響應時間,統計一個周期(例如 10秒/1分鐘/5分鐘)内的狀态。

優缺點與 負載最低優先 相同。

5. Hash

對請求中的關鍵資訊(如IP)進行hash計算,hash值相同的請求配置設定到同一台伺服器,例如業務中希望同一使用者的請求都由同一台伺服器來處理。

小結

[分布式][負載均衡]負載均衡的分類和算法

繼續閱讀