首页 > 编程语言 >负载均衡算法

负载均衡算法

时间:2023-11-15 11:47:02浏览次数:36  
标签:负载 Hash 轮询 算法 均衡 服务器

转载:负载均衡算法居然有这么多种!!!负载均衡算法总结_负载均衡算法有哪些_抓手的博客-CSDN博客

负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法,另外还可以自定义负载均衡算法。

静态负载均衡算法
1、轮询(Round Robin):服务器按照顺序循环接受请求。
2、随机(Random):随机选择一台服务器接受请求。
3、权重(Weight):给每个服务器分配一个权重值,根据权重来分发请求到不同的机器中。
4、IP哈希(IP Hash):根据客户端IP计算Hash值取模访问对应服务器。
5、URL哈希(URL Hash):根据请求的URL地址计算Hash值取模访问对应服务器。
6、一致性哈希(Consistent Hash ):采用一致性Hash算法,相同IP或URL请求总是发送到同一服务器。
动态负载均衡算法
1、最少连接数(Least Connection):将请求分配给最少连接处理的服务器。
2、最快响应(Fastest Response):将请求分配给响应时间最快的服务器。
3、观察(Observed):以连接数和响应时间的平衡为依据请求服务器。
4、预测(Predictive):收集分析当前服务器性能指标,预测下个时间段内性能最佳服务器。
5、动态性能分配(Dynamic Ratio-APM):收集服务器各项性能参数,动态调整流量分配。
6、服务质量(QoS):根据服务质量选择服务器。
7、服务类型(ToS): 根据服务类型选择服务器。
自定义负载均衡算法
1、灰度发布:平滑过渡的发布方式,可以降低发布失败风险,减少影响范围,发布出现故障时可以快速回滚,不影响用户。
2、版本隔离:为了兼容或者过度,某些应用会有多个版本,保证1.0版本不会调到1.1版本服务。
3、故障隔离:生产出故障后将出问题的实例隔离,不影响其他用户,同时也保留故障信息便于分析。
5、定制策略:根据业务情况定制跟业务场景最匹配的策略。
PS:上面的算法还能组合成新算法,如:

轮询+权重=加权轮询。
最快响应+权重,可以根据响应时间动态调整服务器的权重,达到负载均衡。
中间件使用的负载均衡算法
Nginx
1、RoundRobin:轮询。
2、WeightedRoundRobin:加权轮询。
3、IPHash:按访问IP的Hash选择服务器。
4、URLHash:按请求URL的Hash选择服务器。
5、Fair:根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行分流。
Dubbo
1、RandomLoadBalance:加权随机。
2、RoundRobinLoadBalance:加权轮询。
3、LeastActionLoadBalance:最少链接数。
4、ShortestResponseLoadBalance:最短响应时间。
5、ConsistentHashLoadBalance:一致性Hash。
Ribbon
1、RoundRobinRule:轮询。
2、RandomRule:随机。
3、WeightedResponseTimeRule:根据响应时间来分配权重的方式,响应的越快,分配的值越大。
4、BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务。
5、RetryRule:先按照轮询策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用的服务。
6、ZoneAvoidanceRule:根据性能和可用性选择服务。
7、AvailabilityFilteringRule:会先过滤掉由于多次访问故障而处于断路器状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问。

标签:负载,Hash,轮询,算法,均衡,服务器
From: https://www.cnblogs.com/INSTANTMOC/p/17833458.html

相关文章

  • 基于深度学习网络的人员吸烟行为检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述        基于FasterR-CNN深度学习网络的人员吸烟行为检测算法是一种利用深度学习技术进行人员吸烟行为检测的方法。该算法主要基于FasterR-CNN网络结构,通过对视频或图像序列中的人员......
  • 基于深度学习网络的火灾检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述       火灾检测在许多领域都是一项重要的任务,包括建筑、森林、甚至是太空。近年来,深度学习网络在图像识别和分类上的应用取得了显著的进步,这使得基于深度学习的火灾检测算法变得越来......
  • dfs回溯算法,拨号
    题目电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。示例1:输入:digits="23"输出:["ad","ae","af","bd","be","bf","cd","ce",......
  • 数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
    全文链接:https://tecdat.cn/?p=34254原文出处:拓端数据部落公众号关联规则挖掘作为数据挖掘的一个重要分支,对于发现数据之间的潜在关联和规律具有重要意义。在教育领域,学生就业数据是一类重要的数据资源,通过关联规则挖掘可以揭示学生就业相关的规律和影响因素。本文旨在探讨WEKA......
  • kmp算法
    2023-11-14作用:从一个字符串中找到另一个字符串的位置思路:    暴力匹配-》主串的指针一直往前走,不后退-》匹配串的指针回退的位置变小-》根据前缀表 求前缀表(匹配串的所有前缀的最长公共前后缀长度表):/求前缀表int[]next=newint[needle.length()];......
  • 树 算法题(一)
    1、计算二叉树中所有结点个数intCntNode(BiTreeT){intk=0;if(T){k++;k+=CntNode(T->lchild);k+=CntNode(T->rchild);}returnk;}2、计算二叉树中所有叶子节点的个数intLeafNode(BiTreeT){intk=0;if(T){......
  • 【算法基础】贪心算法 LeetCode 135. 分发糖果
    分发糖果题目介绍n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。测试用......
  • 文心一言 VS 讯飞星火 VS chatgpt (135)-- 算法导论11.3 1题
    一、用go语言,假设我们希望查找一个长度为n的链表,其中每一个元素都包含一个关键字k并具有散列值h(k)。每一个关键字都是长字符串。那么在表中查找具有给定关键字的元素时,如何利用各元素的散列值呢?文心一言:在Go语言中,你可以通过使用一个哈希表来存储关键字的散列值,并在查找具有给......
  • 不平衡数据集神经网络回归SMOTE、SMOGN算法:R语言代码
      本文介绍基于R语言中的UBL包,读取.csv格式的Excel表格文件,实现SMOTE算法与SMOGN算法,对机器学习、深度学习回归中,训练数据集不平衡的情况加以解决的具体方法。  在之前的文章SMOGN算法的Python实现:不平衡数据的深度学习回归中,我们介绍了基于Python语言中的smogn包,实现SMOGN算......
  • 文心一言 VS 讯飞星火 VS chatgpt (135)-- 算法导论11.3 1题
    一、用go语言,假设我们希望查找一个长度为n的链表,其中每一个元素都包含一个关键字k并具有散列值h(k)。每一个关键字都是长字符串。那么在表中查找具有给定关键字的元素时,如何利用各元素的散列值呢?文心一言:在Go语言中,你可以通过使用一个哈希表来存储关键字的散列值,并在查找具有......