上善若水

水善利万物而不争
随笔 - 175, 文章 - 0, 评论 - 10, 阅读 - 14万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

架构 | 笔记5

Posted on   董锡振  阅读(23)  评论(0编辑  收藏  举报

如下内容来之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 等。

  

 

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示