天天看點

架構: 負載均衡

引言

  • 本文介紹幾種負載均衡架構及算法。

總體政策

  • DNS負載均衡用于實作地理級别的負載均衡;
  • 硬體負載均衡用于實作叢集級别的負載均衡;
  • 軟體負載均衡用于實作機器級别的負載均衡;
架構: 負載均衡

硬體負載均衡

  • 類似路由器、交換機;
  • 優點:
    • 支援各種負載均衡算法;
    • 支援100萬并發(一般軟體負載均衡也就支援10萬并發);
    • 很多裝置同時支援負載均衡、防火牆、防DDOS攻擊功能;
  • 缺點:
    • 價格高昂;

軟體負載均衡

  • 優點:
    • 便宜;
    • 維護和部署簡單(安裝Ngnix軟體即可);
  • 缺點:
    • 并發量遠小于硬體負載均衡,Linux伺服器上裝一個Nginx大概能到5萬每秒;
    • 一般不具備防火牆、防DDOS攻擊等功能;
架構: 負載均衡

DNS負載均衡

  • 實作地理級别的負載均衡;
  • DNS伺服器将域名解析為最靠近使用者的主機的IP位址,提升通路速度;
  • 缺點:
    • DNS緩存不能及時更新,有可能定位到一個已經移走的主機;
    • 除了映射IP位址,沒有提供其他的負載均衡算法和政策;
架構: 負載均衡

均衡算法

  • 輪詢:
    • 負載均衡系統收到請求後,按照順序輪流配置設定到伺服器上;
    • 算法簡單,沒有考慮機器的狀态;
  • 權重輪詢:
    • 分給32核機器的機率是分給16核機器的機率的兩倍;
    • 考慮了機器性能,但無法根據機器狀态動态調整;
  • 負載最低優先:
    • 根據及其具體狀态決定負載均衡政策;
    • 考慮:機器連接配接數、機器的HTTP連接配接數、CPU占用率、IO占用率;
  • 性能最佳優先:
    • 根據及其具體狀态決定負載均衡政策;
    • 考慮:伺服器響應時間;
  • Hash:
    • 對源IP位址hash決定任務配置設定到哪台伺服器;
    • 對session ID進行hash決定任務配置設定到哪台伺服器,可以保證同一個會話的包都發送到同一台伺服器處理;
source: //changsiyuan.github.io/2018/07/15/2018-7-15-Architecture-4           

複制