長期不定期更新補充。
定義
負載均衡(Load Balancing)是指將來自客戶端的請求合理分發到多個服務器或服務節點,以提高系統性能、可用性與可靠性。
分工
前端不做負載均衡,前端只發請求,不知道請求去哪臺服務器。
負載均衡拆成很多層,有分工。
層級 | 名稱 | 示例 / 工具 | 說明 |
---|---|---|---|
DNS層 | DNS負載均衡 | DNS輪詢(Round-Robin) | 多個 IP 輪流返回給客戶端 |
網絡層 | 四層負載均衡(L4) | LVS(Linux Virtual Server) | 基于 TCP/UDP,速度快但不看應用內容 |
應用層 | 七層負載均衡(L7) | Nginx、HAProxy、Traefik | 基于 HTTP,能根據路徑、Header 分發 |
服務層 | 服務注冊/發現 + 負載均衡 | Spring Cloud、Kubernetes、Consul | 微服務架構常見,結合服務治理 |
層級 | 是否后端負責 | 說明 |
---|---|---|
DNS 層 | ? 網絡或運維層負責 | 把不同的請求分發到多個 IP 上,域名解析控制 |
四層負載均衡(LVS) | 后端/運維配合 | 基于 TCP/UDP,只看 IP+端口 |
七層負載均衡(Nginx) | 后端常負責 | 基于 HTTP 頭、URL、Cookie 分發 |
微服務層(K8s / Spring Cloud) | 后端做 | 自動服務發現、調用路由控制 |
CDN(內容分發網絡) | ? 第三方網絡服務商做 | 靠近用戶的邊緣節點分發 |
實現
算法名稱 | 原理簡介 |
---|---|
輪詢 | 按順序一個一個分發 |
加權輪詢 | 節點權重大,分發次數多 |
最少連接數 | 分發給當前連接最少的服務器 |
IP hash | 同一個 IP 總是打到同一個服務器(用于會話粘性) |
隨機 | 隨機分發(適合高并發短連接) |
- 靜態網站/接口服務:使用 Nginx + upstream 做七層負載均衡
upstream backend {server 192.168.0.101;server 192.168.0.102;
}
server {location / {proxy_pass http://backend;}
}
- 微服務架構:使用 Ribbon、Feign 或 Gateway 內置的負載均衡器,(如 Spring Cloud)
- 容器化部署:使用 Service + kube-proxy + Ingress 自動實現服務發現和負載均衡(如 Kubernetes)