loadbalance 101
文章目录
前言
在现代互联网架构中,负载均衡(Load Balancing)几乎是每一个高可用、高并发系统的基础组件之一。它在系统稳定性、扩展性与性能方面扮演着至关重要的角色。
定义
Wiki定义如下:
Load balancing is the process of distributing network traffic or computing workload across multiple servers to ensure no single server bears too much demand.
工作原理
一句话:通过将用户请求分发到多个后端服务器,实现系统的性能提升与容错能力。
属性与指标
负载均衡关注的核心属性与关键指标包括:
- Throughput(吞吐量):单位时间内能处理的请求数。
- Latency(延迟):请求从发送到收到响应所花的时间。
- Availability(可用性):服务可用性和容错能力。
- Health Check(健康检查):定期检测后端服务器状态。
- Session Persistence(会话保持):保持用户会话在同一服务器。
- Scalability(可扩展性):支持横向扩展能力。
- Failover(故障转移):在节点异常时快速转移请求。
类型
根据部署层级划分
- L4 Load Balancer(传输层):基于TCP/UDP端口做转发,例如 LVS。
- L7 Load Balancer(应用层):基于HTTP请求内容进行转发,例如 Nginx、Envoy。
根据部署位置划分
- Client-side Load Balancing:客户端选择目标服务节点,例如 gRPC + 服务发现。
- Server-side Load Balancing:请求统一通过负载均衡器分发,例如 ELB。
- DNS-based Load Balancing:通过 DNS 响应不同 IP 地址进行分发。
根据实现方式划分
- 硬件负载均衡器:如 F5、A10,专用于高吞吐量场景。
- 软件负载均衡器:如 Nginx、HAProxy、Traefik,灵活可扩展。
- 云服务负载均衡器:如 AWS ELB、GCP Load Balancing、阿里云 SLB。
负载均衡算法
常见的调度算法包括:
- 轮询(Round Robin)
- 加权轮询(Weighted Round Robin)
- 最少连接数(Least Connections)
- 加权最少连接(Weighted Least Connections)
- 一致性哈希(Consistent Hashing)
- 基于资源利用率的调度(如CPU/内存)
常见应用场景
- Web服务器分流
- 微服务请求分发
- CDN边缘节点选择
- 数据库读写分离
- 消息队列消费者均衡
常用负载均衡产品
负载均衡领域的主流产品与服务包括:
- Nginx:广泛使用的开源软件负载均衡器,支持 L7。
- HAProxy:高性能 TCP/HTTP 负载均衡软件。
- Envoy:现代服务网格架构中的 L7 代理,支持动态配置。
- Traefik:专为微服务设计,原生支持 Docker/K8s。
- LVS:Linux 内核层实现的 L4 负载均衡解决方案。
- F5 BIG-IP:企业级硬件负载均衡器。
- 云负载均衡:AWS ELB、GCP Load Balancer、Azure Load Balancer、阿里云 SLB 等。
文章作者 沉风网事
上次更新 2019-01-09