知识卡片

吞吐量足够大时,硬件负载均衡反而比软件更省钱

普通读书笔记卡

内容

单机处理能力是有限的——按公开测试数据,一台32核64GB的机器,通过优化处理Hello World的HTTP请求,性能可以达到10万级(约2万/秒),但如果业务逻辑较为复杂,单台机器每秒能处理的请求数可能只是几百;而互联网业务的请求量级经常超过单台机器的极限:普通业务不算大也有1万级并发访问,双十一、微信抢红包等极端业务场景更是达到10万级甚至更高。因此在同一地区、同一数据中心内部,通常需要用Nginx、LVS、F5等设备或系统进行机器级别的负载均衡,将请求分发给多台服务器处理。三者的量级差异很大:Nginx是软件负载均衡,一般部署在普通Linux服务器上,性能大概是万级,约5万/秒;LVS工作在Linux内核态,性能是十万级,据说可达80万/秒;F5是专门的硬件负载均衡设备,性能是百万级,从200万到800万/秒不等。这个量级差异带来一个反直觉的成本结论:F5虽然单价昂贵(最便宜的一台也要几十万),但正因为其吞吐量极高,在业务量足够大的场景下,反而比堆叠大量软件负载均衡机器更划算——例如以每秒处理100万请求来计算,用F5一台就够了,而如果用Nginx做,可能需要约20台服务器才能实现同样的吞吐量,硬件负载均衡设备虽然单价昂贵,但因为省去了大量服务器的成本,实际上可能会更加划算。此外Nginx与LVS/F5还有一个协议层面的差异:Nginx支持HTTP、E-mail等协议的负载均衡,功能上偏向应用层(7层);而LVS和F5工作在更底层(4层),不识别具体应用层协议,因此可以给各种应用做负载均衡,包括聊天、数据库等业务。目前也有云服务商(如阿里云的SLB、UCloud的ULB)提供了负载均衡产品,中小公司完全可以直接购买。

参考来源

- 位置:《从零开始学架构》第42讲《互联网架构模板:"网络层"技术》"负载均衡"之"2.Nginx、LVS、F5"(源文件:_epub-src/OEBPS/text00003.html) - 结论依据:原文列出"Nginx是软件……性能一般,大约能达到5万/秒……LVS工作在内核态……性能较高,可达到80万/秒……F5是硬件……性能非常强大,从200万/秒到800万/秒不等""以100万请求/秒来计算,用F5,1台就够了;用Nginx,可能需要20台,因此从成本上来看,硬件反而更加划算",直接支撑本卡片的成本反直觉结论。 - 原始内容:Nginx(软件):Nginx是七层负载均衡……LVS(Linux Virtual Server):LVS工作在内核态……F5:F5是一种负载均衡硬件……以100万请求/秒来计算,用一台F5就够了,而如果用Nginx来实现,可能需要20台服务器,因此虽然F5单价昂贵,但是分摊到每台服务器的成本上,实际上会更便宜