負載均衡(Load Balancing)詳解

本文主要總結個人學習負載均衡(Load Balancing)的知識,主要包括以下內容:

  • 為什么要有負載均衡?
  • 負載均衡的具體方法
  • 參考鏈接

1. 為什么要有負載均衡?

1.1 負載均衡定義:

負載平衡是在多個服務器間分發(fā)網絡流量的過程,它確保單個服務器不會承受太多的負載。。

負載均衡示意圖

負載均衡是高可用網絡基礎架構的關鍵組件,通常將網絡流量均衡分配到多個服務器來提高應用或其他服務的性能和可靠性。

1.2 為什么要有負載均衡?傳統的無負載均衡的架構:
無負載均衡的單點架構

在這個例子中,用戶直接訪問 web 服務器:

  • 如果服務器不小心掛了(宕機),則用戶自然也就沒辦法訪問了。
  • 如果同時有超級多用戶試圖訪問服務器,超過了服務器的物理性能的極限,也會出現加載速度緩慢或無法訪問的情況。
1.3 如何進行負載均衡?負載均衡架構:

通過在后端引入負載均衡器和額外的 web 服務器(如下圖所示),可以緩解上面提到的故障。

負載均衡架構
  • 從圖里可以看出,用戶首先訪問負載均衡器,然后再由負載均衡器決定哪個服務器進行響應,達到均衡網絡流量的目的。
  • 通常情況下,后端服務器應提供相同的服務,以便用戶無論訪問哪個服務器,都能收到一致的內容。
    在上面的情況下,如果負載均衡器掛了(單點故障),用戶也還是不能訪問web服務器了,此時可以通過引入第二個負載均衡器來緩解,如下圖所示:
    Redundant Load Balancers

    將兩個負載均衡器連接在一起形成集群,當主負載均衡器發(fā)生了故障,就可以將用戶訪問請求轉到第二個負載均衡器。
1.4 總結

負載均衡的意義在于,讓所有節(jié)點以最小的代價、最好的狀態(tài)對外提供服務,這樣系統吞吐量最大,性能更高,對于用戶而言請求的時間也更小。而且,負載均衡增強了系統的可靠性,最大化降低了單個節(jié)點過載、甚至crash的概率。

2. 負載均衡的具體方法

2.1 負載均衡的實現方式:

負載平衡開始于20世紀90年代,當時硬件設備通過網絡分發(fā)流量,管理者希望提高在服務器上運行的應用程序的可訪問性。當前的負載均衡有以下實現方式:

  1. DNS輪詢:DNS輪詢是最簡單的負載均衡方式。以域名作為訪問入口,通過配置多條DNS 記錄使得請求可以分配到不同的服務器。
  2. CDN:通過發(fā)布機制將內容同步到大量的緩存節(jié)點,并在DNS服務器上進行擴展,找到里用戶最近的緩存節(jié)點作為服務提供節(jié)點。
  3. IP負載均衡:具有硬件實現和軟件實現方式。
2.1 IP負載均衡的實現方式:
2.1.1 硬件實現方式:
  • F5,全稱是F5-BIG-IP-GTM(是最流行的硬件負載均衡設備,其并發(fā)能力達到百萬級)
2.1.2 軟件實現方式:
  • Nginx 工作在7層
  • LVS(Linux Virtual Server, Linux虛擬服務器)工作在4-7層
  • HAProxy 工作在4-7層
    以上三種方法的對比,可以參考這里
2.2 負載均衡算法:
  • 輪詢算法(round-robin)
  • 加權輪詢算法(weight round-robin)
  • 隨機算法(random)
  • 加權隨機(weight Random)
  • IP哈希法(IP hash)
  • 最少連接算法(least connection)
    關于負載均衡算法的詳細介紹,請看這里

參考鏈接

  1. 什么是負載均衡?
  2. What Is Load Balancing?
  3. 關于負載均衡的一切:總結與思考
  4. 系統架構之負載均衡【F5\nginx\LVS\DNS輪詢】
  5. Nginx/LVS/HAProxy負載均衡軟件的優(yōu)缺點詳解
  6. 負載均衡算法的幾種常用方案
  7. 億級PV請求的三種負載均衡技術
  8. Web負載均衡的幾種實現方式
  9. 幾種簡單的負載均衡算法及其Java代碼實現

**版權聲明:原創(chuàng)作品,歡迎轉載:http://www.itdecent.cn/p/939624f0a2f2
**

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容