首页 > 编程语言 >负载均衡常见的算法有哪些?

负载均衡常见的算法有哪些?

时间:2024-10-18 19:48:18浏览次数:7  
标签:负载 均衡 应用程序 算法 哈希 服务器 请求

随机法

随机法 是最简单粗暴的负载均衡算法。

如果没有配置权重的话,所有的服务器被访问到的概率都是相同的。如果配置权重的话,权重越高的服务器被访问的概率就越大。

未加权重的随机算法适合于服务器性能相近的集群,其中每个服务器承载相同的负载。加权随机算法适合于服务器性能不等的集群,权重的存在可以使请求分配更加合理化。

不过,随机算法有一个比较明显的缺陷:部分机器在一段时间之内无法被随机到,毕竟是概率算法,就算是大家权重一样, 也可能会出现这种情况。

于是,轮询法 来了!

轮询法

轮询法是挨个轮询服务器处理,也可以设置权重。

如果没有配置权重的话,每个请求按时间顺序逐一分配到不同的服务器处理。如果配置权重的话,权重越高的服务器被访问的次数就越多。

未加权重的轮询算法适合于服务器性能相近的集群,其中每个服务器承载相同的负载。加权轮询算法适合于服务器性能不等的集群,权重的存在可以使请求分配更加合理化。

在加权轮询的基础上,还有进一步改进得到的负载均衡算法,比如平滑的加权轮训算法。

平滑的加权轮训算法最早是在 Nginx 中被实现,可以参考这个 commit:https://github.com/phusion/nginx/commit/27e94984486058d73157038f7950a0a36ecc6e35。如果你认真学习过 Dubbo 负载均衡策略的话,就会发现 Dubbo 的加权轮询就借鉴了该算法实现并进一步做了优化。

 

Dubbo 加权轮询负载均衡算法

两次随机法

两次随机法在随机法的基础上多增加了一次随机,多选出一个服务器。随后再根据两台服务器的负载等情况,从其中选择出一个最合适的服务器。

两次随机法的好处是可以动态地调节后端节点的负载,使其更加均衡。如果只使用一次随机法,可能会导致某些服务器过载,而某些服务器空闲。

哈希法

将请求的参数信息通过哈希函数转换成一个哈希值,然后根据哈希值来决定请求被哪一台服务器处理。

在服务器数量不变的情况下,相同参数的请求总是发到同一台服务器处理,比如同个 IP 的请求、同一个用户的请求。

一致性 Hash 法

和哈希法类似,一致性 Hash 法也可以让相同参数的请求总是发到同一台服务器处理。不过,它解决了哈希法存在的一些问题。

常规哈希法在服务器数量变化时,哈希值会重新落在不同的服务器上,这明显违背了使用哈希法的本意。而一致性哈希法的核心思想是将数据和节点都映射到一个哈希环上,然后根据哈希值的顺序来确定数据属于哪个节点。当服务器增加或删除时,只影响该服务器的哈希,而不会导致整个服务集群的哈希键值重新分布。

最小连接法

当有新的请求出现时,遍历服务器节点列表并选取其中连接数最小的一台服务器来响应当前请求。相同连接的情况下,可以进行加权随机。

最少连接数基于一个服务器连接数越多,负载就越高这一理想假设。然而, 实际情况是连接数并不能代表服务器的实际负载,有些连接耗费系统资源更多,有些连接不怎么耗费系统资源。

最少活跃法

最少活跃法和最小连接法类似,但要更科学一些。最少活跃法以活动连接数为标准,活动连接数可以理解为当前正在处理的请求数。活跃数越低,说明处理能力越强,这样就可以使处理能力强的服务器处理更多请求。相同活跃数的情况下,可以进行加权随机。

最快响应时间法

不同于最小连接法和最少活跃法,最快响应时间法以响应时间为标准来选择具体是哪一台服务器处理。客户端会维持每个服务器的响应时间,每次请求挑选响应时间最短的。相同响应时间的情况下,可以进行加权随机。

这种算法可以使得请求被更快处理,但可能会造成流量过于集中于高性能服务器的问题。

 

负载均衡有哪些优势?

负载均衡可以定向和控制应用程序服务器与其访客或客户端之间的互联网流量。因此,它可提高应用程序的可用性、可扩展性、安全性和性能。

应用程序可用性

服务器故障或维护可能会增加应用程序停机时间,使访客无法访问您的应用程序。负载均衡器可以通过以下方式提高您的系统的容错能力:自动检测服务器问题并将客户端流量重定向到可用服务器。您可以使用负载均衡来简化以下任务:

  • 运行应用程序服务器维护或升级而无需使应用程序停机
  • 为备份站点提供自动灾难恢复
  • 执行运行状况检查并防止出现可能导致停机的问题

应用程序可扩展性

您可以使用负载均衡器在多个服务器之间智能地定向网络流量。您的应用程序可以处理数千个客户端请求,因为负载均衡会执行以下操作:

  • 防止任何一台服务器出现流量瓶颈
  • 预测应用程序流量,以便您可以在需要时添加或移除不同服务器
  • 为您的系统增加冗余度,使您可以放心扩展

应用程序安全

负载均衡器具有多项内置的安全功能,可为您的互联网应用程序的安全保驾护航。它们是应对分布式拒绝服务攻击的有用工具,在这种攻击中,攻击者会用数百万个并发请求淹没应用程序服务器,从而导致服务器故障。负载均衡器还可以执行以下操作:

  • 监控流量并阻止恶意内容
  • 将攻击流量自动重定向到多个后端服务器,以最大限度减少影响
  • 通过一组网络防火墙路由流量,以提高安全性

应用程序性能

负载均衡器通过增加响应时间和减少网络延迟来提高应用程序性能。它们可以执行诸如以下几项关键任务:

  • 在服务器之间平均分配负载以提高应用程序性能
  • 将客户端请求重定向到地理位置较近的服务器以减少延迟
  • 确保物理和虚拟计算资源的可靠性和性能

 

标签:负载,均衡,应用程序,算法,哈希,服务器,请求
From: https://www.cnblogs.com/orangebook/p/18474942

相关文章

  • 数据结构与算法 课程随记
    因为有时候需要在不同设备编辑同一份文档,本地不太方便了,先在放着博客园比较省事吧。但是博客园是不是快要四了啊,没事再整一个个人博客吧。内容非常杂,因为不想去上课所以还是有点东西不会,就记录一下查不会东西的时候学会的东西。没什么参考价值。Classhttps://www.runoob.com/c......
  • [学习笔记] Minimax 算法和 Alpha-Beta 剪枝
    题目引入在博弈论中,有这样一类题目:两个玩家A、B轮流行动,A先手,B后手。有一个结果,A想要使它最大,B想要使它最小。Minimax算法把每个状态作为一个点,每个转移作为一条边建出一棵树。这棵树好像叫博弈树。两种实现(都没有真正地建树):直接搜索(可能有结点被重复经过)记忆化......
  • RRT*路径搜索算法matlab代码
    一、算法简介      RRT*路径搜索算法相比于RRT路径搜索算法多了重选父节点和重布线的过程:二、实现效果对比(比RRT算法更光滑) RRT路径搜索算法实现效果RRT*路径搜索算法实现效果三、代码完整代码私聊!......
  • 【智能算法应用】鸭群算法求解二维路径规划问题
    摘要本文研究了鸭群算法在二维路径规划问题中的应用,旨在解决复杂障碍环境下的最优路径搜索问题。通过模拟鸭群觅食行为,鸭群算法能够有效避开障碍物,找到最短路径。实验结果表明,鸭群算法在路径规划中表现出较快的收敛速度和较优的路径规划效果,适用于多种复杂环境下的路径优化......
  • 粒子群算法应用——聚类优化
    粒子群算法详见:https://blog.csdn.net/liutianbao2018/article/details/142743205目录1K均值聚类原理1.1什么是聚类1.2K均值聚类原理2PSO改进K均值聚类3结果对比1K均值聚类原理1.1什么是聚类聚类是一种无监督学习方法,通过相似性度量将数据点划分为多个簇,使得同......
  • 【智能算法应用】引力搜索算法求解二维路径规划问题
    摘要引力搜索算法(GSA)是一种基于引力学说的启发式算法,用于解决复杂的优化问题。本文应用GSA于二维路径规划问题,通过优化路径来避开障碍物并达到目标点。实验结果表明,GSA在路径规划中具有良好的表现,尤其在多障碍场景中,其优化路径平滑且避障效果显著。理论引力搜索算法是......
  • 粒子群算法应用——二维栅格路径规划
    粒子群算法详见:粒子群优化算法及应用-CSDN博客目录1栅格地图1.1 什么是栅格地图1.2栅格地图绘制2基本原理3结果展示1栅格地图1.1 什么是栅格地图栅格地图是一种将环境或地图区域均匀划分为一系列大小一致的网格单元,并为每个单元分配特定属性信息的地图表示方法......
  • 安全帽AI检测算法在工业安全领域的全面解析及开源代码及相关项目
    在各类施工现场,安全帽的佩戴是保障工人生命安全的重要措施。为了确保工人正确佩戴安全帽,安全帽检测算法发挥着关键作用。而在实际应用中,结合AI智能分析网关V4与EasyCVR视频汇聚智能分析平台,更是能将安全帽检测的效果发挥到极致。例如,在某大型建筑工地,通过在施工现场安装多个摄......
  • 数据驱动的未来:AI智能分析网关V4车辆违停算法与智慧城市交通管理
    在现代交通管理中,车辆违停问题一直是影响城市交通秩序和安全的重要因素。AI智能分析网关V4车辆违停算法则可以更高效地管理车辆违停现象。AI车辆违停算法通常基于计算机视觉技术。首先,通过摄像头采集道路上的图像或视频信息。这些摄像头可以安装在路口、路段等关键位置,以实现对不......
  • 必学排序算法——插入排序
    目录前言、一、什么是插入排序算法二、插入排序的特点三、算法基本步骤四、算法图解五、c代码模板六、经典例题1.去掉最低工资和最高工资后的工资平均值代码题解2.删除某些元素后的数组均值3.学生分数的最小差值七、结语前言、插入排序算法是必须掌握的一种基础算......