图解 负载均衡算法及分类

1 篇文章 1 订阅
订阅专栏

什么是负载均衡?

    百度词条里的解释是:负载均衡,英文叫Load Balance,意思就是将请求或者数据分摊到多个操作单元上进行执行,共同完成工作任务。

它的目的就通过调度集群,达到最佳化资源使用,最大化吞吐率,最小化响应时间,避免单点过载的问题。

负载均衡分类

    负载均衡可以根据网络协议的层数进行分类,我们这里以ISO模型为准,从下到上分为:

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

当客户端发起请求,会经过层层的封装,发给服务器,服务器收到请求后经过层层的解析,获取到对应的内容。

 

                       

 

二层负载均衡

    二层负债均衡是基于数据链路层的负债均衡,即让负债均衡服务器和业务服务器绑定同一个虚拟IP(即VIP),客户端直接通过这个VIP进行请求,那么如何区分相同IP下的不同机器呢?没错,通过MAC物理地址,每台机器的MAC物理地址都不一样,当负载均衡服务器接收到请求之后,通过改写HTTP报文中以太网首部的MAC地址,按照某种算法将请求转发到目标机器上,实现负载均衡。

    这种方式负载方式虽然控制粒度比较粗,但是优点是负载均衡服务器的压力会比较小,负载均衡服务器只负责请求的进入,不负责请求的响应(响应是有后端业务服务器直接响应给客户端),吞吐量会比较高。

 

三层负载均衡

    三层负载均衡是基于网络层的负载均衡,通俗的说就是按照不同机器不同IP地址进行转发请求到不同的机器上。

这种方式虽然比二层负载多了一层,但从控制的颗粒度上看,并没有比二层负载均衡更有优势,并且,由于请求的进出都要经过负载均衡服务器,会对其造成比较大的压力,性能也比二层负载均衡要差。

 

四层负载均衡

    四层负载均衡是基于传输层的负载均衡,传输层的代表协议就是TCP/UDP协议,除了包含IP之外,还有区分了端口号,通俗的说就是基于IP+端口号进行请求的转发。相对于上面两种,控制力度缩小到了端口,可以针对同一机器上的不用服务进行负载。

这一层以LVS为代表。

 

七层负载均衡

七层负载均衡是基于应用层的负载均衡,应用层的代表协议有HTTP,DNS等,可以根据请求的url进行转发负载,比起四层负载,会更加的灵活,所控制到的粒度也是最细的,使得整个网络更"智能化"。例如访问一个网站的用户流量,可以通过七层的方式,将对图片类的请求转发到特定的图片服务器并可以使用缓存技术;将对文字类的请求可以转发到特定的文字服务器并可以使用压缩技术。可以说功能是非常强大的负载。

 

这一层以Nginx为代表。

在普通的应用架构中,使用Nginx完全可以满足需求,对于一些大型应用,一般会采用DNS+LVS+Nginx的方式进行多层次负债均衡,以上这些说明都是基于软件层面的负载均衡,在一些超大型的应用中,还会在前面多加一层物理负载均衡,比如知名的F5。


负载均衡算法

负载均衡算法分为两类:

一种是静态负载均衡,一种是动态负载均衡。

 

静态均衡算法:

1、轮询法

将请求按顺序轮流地分配到每个节点上,不关心每个节点实际的连接数和当前的系统负载。

优点:简单高效,易于水平扩展,每个节点满足字面意义上的均衡;

缺点:没有考虑机器的性能问题,根据木桶最短木板理论,集群性能瓶颈更多的会受性能差的服务器影响。

 

                                      

 

2、随机法

将请求随机分配到各个节点。由概率统计理论得知,随着客户端调用服务端的次数增多,其实际效果越来越接近于平均分配,也就是轮询的结果。

优缺点和轮询相似。

                                    

 

3、源地址哈希法

    源地址哈希的思想是根据客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器节点数进行取模,得到的结果便是要访问节点序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会落到到同一台服务器进行访问。

优点:相同的IP每次落在同一个节点,可以人为干预客户端请求方向,例如灰度发布;

缺点:如果某个节点出现故障,会导致这个节点上的客户端无法使用,无法保证高可用。当某一用户成为热点用户,那么会有巨大的流量涌向这个节点,导致冷热分布不均衡,无法有效利用起集群的性能。所以当热点事件出现时,一般会将源地址哈希法切换成轮询法。

                                

4、加权轮询法

    不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。

加权轮询算法要生成一个服务器序列,该序列中包含n个服务器。n是所有服务器的权重之和。在该序列中,每个服务器的出现的次数,等于其权重值。并且,生成的序列中,服务器的分布应该尽可能的均匀。比如序列{a, a, a, a, a, b, c}中,前五个请求都会分配给服务器a,这就是一种不均匀的分配方法,更好的序列应该是:{a, a, b, a, c, a, a}。

优点:可以将不同机器的性能问题纳入到考量范围,集群性能最优最大化;

缺点:生产环境复杂多变,服务器抗压能力也无法精确估算,静态算法导致无法实时动态调整节点权重,只能粗糙优化。

 

5、加权随机法

与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。

 

6、键值范围法

根据键的范围进行负债,比如0到10万的用户请求走第一个节点服务器,10万到20万的用户请求走第二个节点服务器……以此类推。

优点:容易水平扩展,随着用户量增加,可以增加节点而不影响旧数据;

缺点:容易负债不均衡,比如新注册的用户活跃度高,旧用户活跃度低,那么压力就全在新增的服务节点上,旧服务节点性能浪费。而且也容易单点故障,无法满足高可用。

                                    

 

动态均衡算法:

1、最小连接数法

根据每个节点当前的连接情况,动态地选取其中当前积压连接数最少的一个节点处理当前请求,尽可能地提高后端服务的利用效率,将请求合理地分流到每一台服务器。俗称闲的人不能闲着,大家一起动起来。

优点:动态,根据节点状况实时变化;

缺点:提高了复杂度,每次连接断开需要进行计数;

实现:将连接数的倒数当权重值。

 

2、最快响应速度法

根据请求的响应时间,来动态调整每个节点的权重,将响应速度快的服务节点分配更多的请求,响应速度慢的服务节点分配更少的请求,俗称能者多劳,扶贫救弱。

优点:动态,实时变化,控制的粒度更细,跟灵敏;

缺点:复杂度更高,每次需要计算请求的响应速度;

实现:可以根据响应时间进行打分,计算权重。

 

3、观察模式法

观察者模式是综合了最小连接数和最快响应度,同时考量这两个指标数,进行一个权重的分配。

 

负载均衡:最详尽的负载均衡原理及算法图解
专注于全栈开发领域
04-09 3639
负载均衡(Load Balancing)是一种计算机网络技术,用于在多个计算资源(如服务器、计算机、网络链接、中央处理器或磁盘驱动器)之间分配负载,以便实现最优的资源利用率、最大化吞吐量、最小化响应时间并避免任何单一资源的过载。 这些负载均衡算法各有优缺点,适用于不同的应用场景和需求。在实际应用中,需要根据系统的特点和需求来选择合适的负载均衡算法。参考内容。
负载均衡算法居然有这么多种!!!负载均衡算法总结
xzh_blog
04-27 6773
负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法,另外还可以自定义负载均衡算法。 静态负载均衡算法 轮询(Round Robin):服务器按照顺序循环接受请求。 随机(Random):随机选择一台服务器接受请求。 比率(Ratio):给每个服务器分配一个权重值,根据权重分配请求。 Hash(Hash):根据客户端IP的hash值取模访问对应服务器。 一致性Hash(Consistent Hash ):相同IP的客户端请求总是发送到同一服务器。 动态负载均衡算法 最少连接数(Leas
机器学习之数据均衡算法种类大全+Python代码一文详解_多指标均衡算法
最新发布
2401_84538278的博客
05-08 951
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
四层负载均衡 负载均衡算法_负载均衡及其类型
cumtv80668的专栏
07-27 363
四层负载均衡 负载均衡算法 负载均衡 (Load balancing) Let us first know what load balancing is? 首先让我们知道负载平衡是什么? So, Load balancing is a methodology in computer to distribute the workloads among multiple processors, ...
6种负载均衡算法
小技术君
03-04 2185
当今的分布式系统越来越普遍,由于它们能够提供更高的灵活性和可扩展性。但是,这些系统需要处理大量的客户端请求。为了处理这些请求并提供对每个客户端的稳定和高效的服务,需要使用负载均衡算法。以下是分布式系统中常用的负载均衡算法:????静态算法1.轮询(Round Robin):将客户端请求按顺序发送到不同的服务实例。服务通常需要是无状态的。2.粘性轮询(Sticky Round Robin):是轮询算法的改...
常见的负载均衡算法
HHH的博客
08-20 210
负载均衡算法也是分布式系统中的重要组成部分,用于将来自客户端的请求分配到不同的后端服务器上,以达到提高系统吞吐量、减轻服务器负担、提高系统可用性等目的。
负载均衡算法
carson0408的博客
11-10 439
        在服务器集群中,需要用负载均衡器在集群中选择合适的服务器进行响应请求,其中负载均衡器通过负载均衡算法来选择服务器的。因此,负载均衡算法的选择会影响服务整体的性能问题。一般,常见的负载均衡算法有轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接数算法等。 1.轮询法         轮询法即逐个请求,对于每一个请求,则在地址列表中依次选择一个地址,因此在请求数目上的分...
六种负载均衡算法
mrb1289798400的博客
07-26 591
1、轮询法  将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。2、随机法 通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多, 其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果。3、源地址哈希法 源地址哈希的思想是根据获取客
F5负载均衡运维配置图解.doc
01-05
- **策略调整**:根据业务需求,动态调整负载均衡策略,如改变负载均衡算法或更新服务器权重。 - **日志管理**:收集和分析设备日志,用于故障排查和安全审计。 - **备份与恢复**:定期备份配置,以便在出现问题时...
算法图解读书笔记.pdf
11-02
适合想了解基础算法的前端开发人员
算法图解笔记以及代码文件.zip
08-09
算法图解笔记以及代码文件.zip》是一个包含算法学习资源的压缩包,主要针对初学者或希望巩固算法基础的人群。这个压缩包里的内容涵盖了算法的基础理论和实践应用,通过笔记的形式帮助读者理解和掌握各种常见算法。...
任务分配负载均衡算法
08-06
该文章能够提供一个任务分配的框架,基于该框架实现任务负载均衡,里面的算法思想较为适用。
算法的动画图解
11-11
算法的动画图解》是针对安卓手机系统设计的一款学习应用,主要目的是通过生动的动画形式,帮助用户直观地理解各种算法的工作原理。这个1.2.7版本为简体中文解锁版,确保了国内用户可以无障碍地进行学习,无需担心...
java平均分配算法_深度讲解微服务架构中的负载均衡算法实现
weixin_31807383的博客
12-26 564
负载均衡介绍负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集群...
简单的负载均衡算法
坚持住啊
12-06 556
https://www.cnblogs.com/xrq730/p/5154340.html 什么是负载均衡 负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集群技术可以用最
均匀分配算法(Python2)
纯洁的小魔鬼
01-15 5709
1.给出一个数字和一个数字的集合,把这个数字依次分成集合中的数字 def pureSeparate(number, numberList): resultLists = [] for i in numberList: resultList = [] b = number / i for j in range(0, i): ...
四层、七层负载均衡的区别
架构师小秘圈
03-15 2102
一,什么是负载均衡(Load balancing)在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.taobao.com。那么当用户在浏览器输入www.taobao.com
LVS 负载均衡的八种调度算法
Treasured ——的博客
01-28 561
LVS 的负载调度算法 在内核中的连接调度算法上,IPVS 已实现了以下八种调度算法 一、轮叫调度(Round­Robin Scheduling ) (1)轮叫的方式依次将请求调度不同的服务器 (2)算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。 二、加权轮叫调度(Weighted Round­Robin Scheduling ) (1)解决服务器间性能不一的情况,...
几种常见负载均衡比较
热门推荐
点星之人
04-15 1万+
现在网络中常见的的负载均衡主要分为两种: 一种是通过硬件来进行进行, 常见的硬件有比较昂贵的NetScaler、F5、Radware和Array等商用的负载均衡器, 也有类似于LVS、Nginx、HAproxy的基于Linux的开源的负载均衡策略, 商用负载均衡里面NetScaler从效果上比F5的效率上更高。对于负载均衡器来说,
机器学习入门:十大算法简易图解
文章通过简化的解释和示例帮助读者理解这些算法的基本概念和应用场景,特别强调了分类问题的处理。" 1. 决策树 决策树是一种基于特征的分类方法,通过一系列问题(节点)来逐步划分数据,最终将数据分配到预设的...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • 大模型 9篇
  • 卷积神经网络 5篇
  • 机器学习基础 10篇
  • 并发编程 18篇
  • 编程语言 33篇
  • 机器学习 21篇
  • 神经网络 9篇
  • Spring 7篇
  • 物联网 3篇
  • Arduino 4篇
  • PCB设计 4篇
  • 操作系统 2篇
  • 计算机网络 11篇
  • 高并发 20篇

最新评论

  • Arduino串口通信(Serial)

    私欲_: 感谢博主,学到很多

  • 计算机网络面试总结 -- TCP

    你奥利奥化了: 保姆级讲解 没人看嘛

  • Centos升级gcc版本 实测可用

    hello姣姣: $ yum groupinstall "Development Tools" $ yum install glibc-static libstdc++-static 您好,我在安装上面的开发工具时显示 You need to be root to perform this command. 我是在服务器上装的,本身不是root用户,这种情况该怎么办?

  • WIFI 2.4G及5G信道一览表

    筑基大能: 博主会更新802.11ax部分的内容吗

  • Arduino串口通信(Serial)

    m0_54040622: 讲的太好啦,底层逻辑讲的哼清楚,之前学Arduino都没接触到这些,只是会用就可以了,不愧是阿里的大佬表情包

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Google DeepMind: Many-Shot vs. Few-Shot
  • 腾讯AI Lab:“自我对抗”提升大模型的推理能力
  • Intel论文: CoTAR - 多层次的 CoT 归因推理
2024年10篇
2021年5篇
2020年10篇
2019年59篇
2018年110篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码布吉外贸网站建设广州百度竞价包年推广布吉关键词排名南山关键词按天扣费吉祥网站关键词优化民治网络推广福田网页设计坪山网站制作同乐模板推广龙岗建网站布吉关键词按天计费坑梓网站搭建荷坳网站优化推广西乡网站开发坪山seo网站推广盐田营销型网站建设荷坳百姓网标王推广坑梓百度标王爱联企业网站改版丹竹头seo坂田网站建设设计沙井阿里店铺运营坂田模板推广广州网站搜索优化南联网站建设南联如何制作网站荷坳网络推广福田关键词排名包年推广深圳网站制作大运关键词按天扣费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化