知识卡片

三种负载均衡机制:DNS、硬件与软件的取舍

结构图卡

内容

承接[[高性能集群的本质是任务分配,”负载均衡”这个术语存在误导性]],实现层面常见有三类负载均衡机制,各自的定位和取舍完全不同。DNS负载均衡靠DNS解析同一域名返回不同IP来实现,一般用于地理级别的均衡(比如北方用户解析到北京机房IP、南方用户解析到深圳机房IP);优点是简单成本低(负载均衡工作完全交给DNS服务器,无须自己开发维护)、能就近解析提升访问速度,缺点是DNS缓存时间长导致更新不及时(改了配置后仍有用户在访问旧IP)、控制权在域名商手里扩展性差、支持的分配算法少且无法感知后端服务器真实状态(为此对时延和故障敏感的业务,有公司自研了基于HTTP协议的私有DNS即HTTP-DNS,优缺点正好和通用DNS相反)。硬件负载均衡靠专门的硬件设备实现(典型代表F5、A10),性能极强(可支撑100万以上并发,远超软件方案的10万级)、功能全面(支持各层级负载均衡和全面的算法,还自带防火墙、防DDoS等安全能力)、稳定性经过大规模商用验证,但价格昂贵(一台F5的价格堪比一辆中高端汽车)、扩展定制能力差,通常只有资金充裕的大公司才会采用。软件负载均衡靠负载均衡软件实现,代表是Nginx(7层负载均衡,支持HTTP、E-mail等具体协议)和LVS(Linux内核层的4层负载均衡,和协议无关,几乎任何应用都能用,如聊天、数据库);优点是简单(部署维护都容易)、便宜(一台普通Linux服务器批发价约1万元,相比硬件设备是天壤之别)、灵活(可选4层或7层、可通过插件做业务定制),缺点是性能不如硬件(Nginx大约5万/秒,LVS据称可达80万/秒,但都明显低于F5的百万级)、功能不如硬件强大、通常也不具备防火墙防DDoS这类安全能力。三者的本质取舍是”简单成本低但控制力弱→功能强大但价格高昂→性能功能适中但灵活便宜”这条光谱,选择时要看具体业务体量和预算,而不是哪种绝对更好。

结构图

flowchart TB
  A["三种负载均衡机制"]
  A --> B["DNS负载均衡<br/>靠DNS解析返回不同IP<br/>用于地理级均衡"]
  B --> B1["优点:简单成本低,就近访问更快"]
  B --> B2["缺点:缓存导致更新不及时<br/>控制权在域名商,算法少,无法感知后端状态"]
  A --> C["硬件负载均衡<br/>专用设备(F5/A10)"]
  C --> C1["优点:性能极强(100万+并发)<br/>功能全面+自带安全防护,稳定性高"]
  C --> C2["缺点:价格昂贵,扩展定制能力差"]
  A --> D["软件负载均衡<br/>Nginx(7层)/LVS(4层)"]
  D --> D1["优点:简单便宜(约1万元/台)<br/>灵活可定制"]
  D --> D2["缺点:性能不如硬件(5万~80万/秒)<br/>功能与安全能力较弱"]

参考来源

- 位置:《从零开始学架构》第20讲《高性能负载均衡:分类及架构》"负载均衡分类"(源文件:_epub-src/OEBPS/text00001.html) - 结论依据:原文分别列出DNS负载均衡"简单、成本低……更新不及时……扩展性差……分配策略比较简单"、硬件负载均衡"功能强大……性能强大……稳定性高……价格昂贵……扩展能力差"、软件负载均衡"简单……便宜……灵活……性能一般……功能没有硬件负载均衡那么强大"三方面优缺点及具体性能数字对比,直接支撑本卡片结论与结构图。 - 原始内容:DNS 负载均衡实现简单、成本低,但也存在粒度太粗、负载均衡算法少等缺点……硬件负载均衡……价格昂贵:最普通的一台 F5 就是一台"马 6"……软件和硬件的最主要区别就在于性能,硬件负载均衡性能远远高于软件负载均衡性能。