在这里插入图片描述

常见的负载均衡架构

在实际的高并发架构中,常用的负载均衡组件如下
在这里插入图片描述
我们可以按需去掉图中的负载均衡组件

去掉DNS和F5。绝大多数中小企业。并发量在万级到十万级,不需要多机房容灾,单机房即可搞定。这是最典型的中小厂标准架构。我们直接把DNS和F5去掉

去掉服务网关集群。依然是微服务架构,但业务不需要复杂的鉴权、动态限流、复杂的路由逻辑,想减少内部网络调用的延迟

负载均衡组件的主要分类与区别

在实际应用中,负载均衡组件主要分为软件级硬件级,以及工作在 OSI 网络模型不同层级的四层七层,还有DNS负载均衡

DNS负载均衡

普通的 DNS 一个域名只对应一个 IP。而 DNS 负载均衡 的做法是:让一个域名同时对应多个不同的 IP 地址(通常是不同机房、不同地域的公网 IP)

当大批用户同时访问这个域名时,DNS 服务器会根据一定的策略,给不同的用户返回不同的 IP,从而在最外层把流量分流到不同的机房

一般用来实现地理级别的负载均衡。例如,对于某个域名,北方用户解析后获取的IP是北方机房的IP,南方用户解析后获取的IP是南方机房的IP

优点

  1. 简单,成本低:负载均衡工作交给DNS服务器处理,无须自己开发或者维护负载均衡设备
  2. 地理级别分流:就近访问,加快了访问速度

缺点

  1. 更新不及时:为了减轻网络压力,全球的运营商、路由器、甚至你的电脑浏览器,都会缓存 DNS 结果
  2. 分配策略比较简单:DNS 只能根据 IP 级别进行分流,它根本不知道后端服务器的 CPU 累不累、连接数高不高,更没办法根据用户的 URL、Cookie 去做精细化的业务路由

软件 VS 硬件 负载均衡

特性 软件负载均衡 硬件负载均衡
典型代表 Nginx, HAProxy, LVS F5
成本 极低(开源、免费,只需支付服务器计算成本) 极高(百万级,需要购买专有硬件设备和授权)
性能 百万级并发(LVS可更高) 千万级并发
适用场景 绝大多数互联网公司、中小企业 对稳定性和吞吐量要求极高的企业

四层 vs 七层 负载均衡

四层负载均衡(传输层)

工作原理: 只通过报文中的 IP 地址和端口号 决定转发。它不修改也不关心应用层的内容(如 HTTP 协议)。就像快递员只看包裹上的地址和收件人电话,就把快递转寄出去了

典型组件: LVS(Linux Virtual Server)、HAProxy(四层模式)

优点: 性能极高,因为不需要解析应用层数据,消耗 CPU 极少

缺点: 无法感知业务逻辑。不能根据具体的 URL、Cookie 或用户设备类型来做智能分发

七层负载均衡(应用层)

工作原理: 深入到 应用层,可以根据 URL、HTTP 头部、Cookie、POST 参数 等内容来决定转发。就像快递员把包裹拆开,看看里面是衣服还是生鲜,再决定送给不同的专业处理人员

典型组件: Nginx、HAProxy(七层模式)

优点: 极其智能化。可以实现动静分离(图片请求走图片服务器,API 请求走应用服务器)、根据 Cookie 保持用户登录状态、防 DDoS 攻击等

缺点: 性能比四层低,因为解析应用层协议(如 HTTPS 解密、HTTP 解析)需要消耗大量的 CPU 资源

常见的负载均衡算法

在实际应用中,常见的负载均衡算法主要可以分为两大类:静态负载均衡算法(不看后端服务器的实时状态)和动态负载均衡算法(根据后端服务器的实时负载调整)

静态负载均衡算法

轮询法

原理: 挨个分发。把请求按顺序轮流分配给后端的服务器。第一笔请求给 Server A,第二笔给 Server B,以此类推

适用场景: 后端所有服务器的硬件配置完全相同,且处理的业务请求耗时差不多。如果服务器性能有高有低,会导致“低配”服务器被压垮

加权轮询法

原理:在轮询的基础上加上了“权重”(Weight)。性能好的服务器(如 8核)权重设高点,性能差的(如 2核)权重设低点。比如:Server A (权重 3),Server B (权重 1)。分配序列就是:A, A, A, B

适用场景: 后端服务器硬件配置不同

源 IP 哈希法

原理: 对客户端的 IP 地址进行哈希(Hash)计算,得到一个数值,再用这个数值对服务器数量取模。 同一个客户端 IP 的请求,永远会被分发到同一台服务器上。

适用场景: 需要会话保持的传统 Web 应用。但现在微服务架构中,更倾向于使用分布式 Session(如 Redis 存 Session),而不是依赖 IP 哈希

普通的 IP 哈希法(IP % 服务器数量)有一个致命缺点:一旦后端某台服务器挂了,或者新加入了一台服务器,服务器数量一变,所有的哈希结果都会发生剧烈抖动。为了解决这个问题可以使用一致性哈希算法

动态负载均衡算法

最小连接数法(Least Connections)

原理: 谁现在手里的活最少,新请求就给谁。负载均衡器会记录每台服务器当前正在处理的 TCP 连接数,优先把请求发给连接数最少的服务器。

适用场景: 请求处理耗时差异很大的场景(比如有的请求 1 毫秒完事,有的请求需要传输大文件耗时 10 秒)。

加权延伸: 加权最小连接数(Weighted Least Connections),同时考虑服务器的硬件权重和当前的连接数。

最快响应时间法

原理: 谁反应快,就给谁。负载均衡器会扫描后端服务器的平均响应时间(RTT),优先把请求分发给当前响应速度最快的服务器。

适用场景: 对延迟极其敏感的业务

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐