如下内容来之https://time.geekbang.org/column/article/6463 学习笔记:
20 | 高性能负载均衡:分类及架构
负载均衡分类常见的负载均衡系统包括 3 种:DNS 负载均衡、硬件负载均衡和软件负载均衡。
DNS 负载均衡: DNS 是最简单也是最常见的负载均衡方式,一般用来实现地理级别的均衡。例如,北方的用户访问北京的机房,南方的用户访问深圳的机房。
优点有:简单、成本低 ; 就近访问,提升访问速度:
缺点有:更新不及时:DNS 缓存的时间比较长。扩展性差: 控制权在域名商那里。分配策略比较简单:不能区分服务器的差异(不能根据系统与服务的状态来判断负载)。
硬件负载均衡:目前业界典型的硬件负载均衡设备有两款:F5 和 A10。这类设备性能强劲、功能强大,但价格都不便宜,一般只有“土豪”公司才会考虑使用此类设备;
优点有:
功能强大:全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。
性能强大:对比一下,软件负载均衡支持到 10 万级并发已经很厉害了,硬件负载均衡可以支持 100 万以上的并发。
稳定性高:商用硬件负载均衡,经过了良好的严格测试,经过大规模使用,稳定性高。
安全防护:硬件均衡设备除具备负载均衡功能外,还具备防火墙、防 DDoS 攻击等安全功能。
缺点有:
价格昂贵:最普通的一台 F5 就是一台“马 6”,好一点的就是“Q7”了。
扩展力差:硬件设备,可以根据业务进行配置,但无法进行扩展和定制。
软件负载均衡:通过负载均衡软件来实现,常见的有 Nginx (7层)和 LVS(4层),Nginx 支持 HTTP、E-mail 协议;而 LVS 是 4 层负载均衡,和协议无关,几乎所有应用都可以做,例如,聊天、数据库等。
软件和硬件的最主要区别就在于性能,硬件负载均衡性能远远高于软件负载均衡性能。
Nginx 的性能是万级,一般的 Linux 服务器上装一个 Nginx 大概能到 5 万 / 秒;
LVS 的性能是十万级,据说可达到 80 万 / 秒;
而 F5 性能是百万级,从 200 万 / 秒到 800 万 / 秒都有(数据来源网络,仅供参考,如需采用请根据实际业务场景进行性能测试)。
当然,软件负载均衡的最大优势是便宜,一台普通的 Linux 服务器批发价大概就是 1 万元左右,相比 F5 的价格,那就是自行车和宝马的区别了。
缺点有:性能一般:一个 Nginx 大约能支撑 5 万并发。功能没有硬件负载均衡那么强大。一般不具备防火墙和防 DDoS 攻击等安全功能。
结论:组合使用。具体来说,组合的基本原则为:DNS 负载均衡用于实现地理级别的负载均衡;硬件负载均衡用于实现集群级别的负载均衡;软件负载均衡用于实现机器级别的负载均衡。
21 | 高性能负载均衡:算法
任务平分类:负载均衡系统将收到的任务平均分配给服务器进行处理,这里的“平均”可以是绝对数量的平均,也可以是比例或者权重上的平均。
轮询 是最简单的一个策略,无须关注服务器本身的状态(只要服务器在运行,运行状态是不关注的)
加权轮询 是一种特殊轮询,解决了不同服务器处理能力有差异的问题,但同样存在无法根据服务器的状态差异进行任务分配的问题。
负载均衡类(服务器的角度):根据服务器的负载来进行分配,并不一定是通常意义上的“CPU 负载”,而是系统当前的压力,CPU 负载,也可以用连接数、I/O 使用率、网卡吞吐量等来衡量系统压力。
负载最低优先的算法解决了轮询算法中无法感知服务器状态的问题,代价是复杂度大幅上升,
轮询可能5 行代码就能实现的算法,而负载最低优先算法可能要 1000 行才能实现,甚至需要负载均衡系统和服务器都要开发代码
性能最优类(客户端的角度):负载均衡系统根据服务器的响应时间来进行任务分配,优先将新任务分配给响应最快的服务器。
性能最优优先类算法本质上也是感知了服务器的状态,只是通过响应时间这个外部标准来衡量服务器状态而已。因此存在的问题和负载最低优先类算法类似,复杂度都很高
Hash 类:负载均衡系统根据任务中的某些关键信息进行 Hash 运算,将相同 Hash 值的请求分配到同一台服务器上。常见的有源地址 Hash、目标地址 Hash、session id hash、用户 ID Hash 等。
本文来自博客园,作者:董锡振,转载请注明原文链接:https://www.cnblogs.com/dongxizhen/p/16212149.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人