1. 程式人生 > 實用技巧 >軟體開發中的負載均衡

軟體開發中的負載均衡

目錄

叢集初探

  • nginx:keepalived,入口唯一
  • tomcat:負載均衡叢集,session共享,使用redis
  • mysql:mysql proxy中間層,master可讀寫,以寫為主,slave只讀
  • oracle:rac,外層看起來多個例項,底層是共享一個儲存系統

叢集與分散式

  1. 叢集是軟體的橫向擴充套件,找幫手
  2. 分散式是軟體的縱向擴充套件,分階段
  3. 實際場景是:分散式+叢集

叢集的分類

叢集可以實現高可用、負載均衡、提升單臺計算機的CPU計算能力

  1. 高可用叢集:叢集中節點失效,熱切換到可用節點
  2. 高CPU消耗叢集:叢集中節點並行消耗cpu資源,最終彙總各節點計算結果,同大資料處理思路
  3. 負載均衡叢集:叢集中按需分配各節點的訪問頻率

負載均衡器的功能

  1. 使用負載均衡演算法保證機器的負載合理
  2. 健康檢查:檢查下游服務是否可用以及服務健康情況(Ping三層,TCP/UDP四層,HTTP七層,FTP,DNS等),剔除不健康服務的祖籍
  3. 會話保持:保證會話的原子性,一般使用會話共享(基於檔案cookie、基於記憶體cookie、cookie禁用時隱藏域放置session-id)
  4. 快取靜態資源,減少後臺資源消耗

負載演算法

  • 輪詢、權重、優先權、最少連線數、最快響應、數學運算(餘數、模、hash等)、基於資料包內容
  • 優先權的方式是將服務分組,優先權是針對組的,組內仍使用負載演算法。當整個組達到訪問閾值時,切換到另一分組。多活

負載均衡實現

  1. 通過DNS域名解析進行負載均衡(非真正意義的負載),一個域名對應多個IP(尋找最近的IP),可以把域名解析到不同IP的機器,可使用dig檢視域名解析結果
  2. 通過鏈路層(二層)解析進行負載均衡,後臺服務設定相同的虛擬IP,通過指定MAC的方式訪問後臺服務
  3. 通過傳輸層(四層)TCP/UDP進行負載均衡,通過指定IP的方式訪問後臺服務,HAProxy、IPVS、F5等
  4. 通過應用層(七層)http/https/ws,三次握手後,通過解析應用層內容資料資訊進行負載, nginx、HAProxy等
    如果服務不是基於應用層,那麼只能用四層以下的負載均衡方法

    七層的方式使用起來最靈活、安全性也高、

nginx 待續


  1. https://www.cnblogs.com/xzwblog/p/7255364.html