你真的了解负载均衡吗?

发布时间:2022-07-24 01:00:04 作者:bingyuehan 阅读量:8281

负载均衡是什么鬼?从字面意思来看,它应该有两层意思分别是负载和均衡。而对于系统负载均衡它同样具有两层意思,其中系统负载指的系统能够承载的最大访问流量,系统均衡指的是前端请求要均匀地分配给后端机器,同时,同一用户要尽可能分配给同一机器。系统通过负载均衡以后具有如下好处:
 

1、避免资源浪费。如果我们均衡算法选的不好,就会导致后端资源浪费。比如:如果选择一致Hash算法,可以很好利用cache的容量。而如果用随机,有可能会让cache效果大打折扣。

2、避免服务不可用。当我们不考虑系统的承载能力,有可能直接把某台机器压垮,比如当机器的CPU利用率达到80%,如果再有大量的请求,那么该机器直接宕机,甚至于导致雪崩情况(一台机器宕机,对应的请求会分给其他机器上,那么其他机器也会出现宕机,以至于全部机器都宕机)。

理论基础

系统要实现负载均衡,背后肯定需要一些算法支撑,下面就来看下对应的算法。

1、负载算法

既然要解决后端系统的承载能力,那我们就有很多方式,常用的有以下几种:

静态配置

这种方式对于中小系统来讲是最有效最稳定的。因为后端机器的性能配置、上面部署哪些服务,还能有多大的承载能力等等,我们是最清楚的。比如,我们经常看到nginx的配置:

 

 

动态调整

当碰到机器故障,以及由于性能问题无法处理请求时,如果此时还将新来的请求分配到该节点,那么可能导致该节点宕机。因此,根据节点的实际负载动态调整节点的权重是非常重要的。当然,要得到节点的真正负载,以及如何定义负载,无论负载是否及时收集,都是需要考虑的问题。

动态调整首先计算所有节点的请求响应时间,对于响应较快的节点,我们可以多分配请求给它,然后增加它的请求数,当它的响应变慢时再慢慢减少它的请求数,慢慢地我们找到这个节点最佳平衡点,即分配多少请求给它。通过相同方法我们找到所有节点的平衡点。

这种方法的好处在于可以动态平衡后面服务器的处理能力。不过,任何事物都有两面性。这种方案如果遇到极端情况,可能会造成雪崩。当某台机器出现短暂网络抖动的时候,它的响应就可能变慢,这个时候,前端服务就会将它的请求分配给其他机器。如果分配的很多,就有可能造成某些机器响应也变慢。然后又将这些机器的请求分配给另外机器。如此这般,就会造成雪崩。

2、均衡算法

均衡算法主要解决将请求如何发送给后端服务。经常会用到以下三种算法:随机(random)、轮询(round-robin)和 哈希算法。

随机算法

随机算法就是通过一个随机函数将所有请求分散到各个节点上, 该方法比较简单,且能做到将请求均匀地分散到各个节点上,因此经常使用随机算法。

轮询算法

轮询算法就是将所有节点以同样的概率向外提供服务,但是它没有考虑各个节点之间的性能差别,对于同样数目的请求,性能好的节点能够轻松完成,而性能差的节点完成的比较费力。因此,我们提出了加权轮询算法,为不同性能的节点赋予不同权重。

哈希算法

通常将用户 id 或 ip 作为key,计算出对应的hash值,然后再对节点数量取模,即hash(key) mode n,其中n为节点数,得到该用户请求落到哪个节点上。该方法可以做到让同一个请求落到同一个节点中,但是当节点数量发生动态变化时,该方法就不太适应了。此时,就应该使用一致性hash算法。一致性hash算法就是把每台server分成v个虚拟节点,再把所有虚拟节点(n*v)随机分配到一致性哈希的圆环上,这样所有的用户从自己圆环上的位置顺时针往下取到第一个vnode就是自己所属的节点。当此节点存在故障时,再顺时针取下一个作为替代节点。

具体实现

目前负载均衡系统有Nginx、LVS、F5,其总会难过Nginx是软件的7层负载均衡,LVS是内核的4层负载均衡,F5是硬件的4层负载均衡。

软件和硬件的区别在于性能,硬件远远高于软件,Nginx的性能是万级的,一般的Lin服务器上安装一个Nginx能达到每秒5万并发请求;而F5的性能能达到百万级,从200万每秒到800万每秒都有,不过价格很贵。

4层和7层的区别在于协议和灵活性,Nginx是7层的,它支持HTTP等协议,而LVS和F5是4层协议,它们和协议无关,几乎所有应用都可以做。


作者:木可大大
链接:https://juejin.im/post/5b161550e51d45069928e084
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

***本网站图片,文字之类版权申明,因为网站可以由注册用户自行上传图片或文字,本网站无法鉴别所上传图片或文字的知识版权,如果侵犯,请及时通知我们,本网站将在第一时间及时删除。

我要评论

网友评论


评论时间:2024-05-10 06:25:02

20.节阿里虚拟主机 能服务器机柜牌子 0.节能环保


评论时间:2024-01-16 00:25:02

主机型服务器(简称主机)一般由一台或多租用云服务器多少钱 台计算机组成电信云主机可以做什么 计算机组成


评论时间:2023-04-01 15:25:02

25购买国外虚拟主机 .快速部署独享虚拟主机是干啥的 署


评论时间:2023-01-05 00:25:02

3、在“选项-高级/服务器租用多少钱一年学生 安全”选项卡上单击“创建虚拟网卡(XP)”命令虚拟主机或者云主机

最新文章

 2023-12-25 22:44:35   admin

活动发布区版规

 2023-05-27 22:03:52   御风而行

容器、无服务器、虚拟机:安全性差...

 2023-05-27 19:08:41   小绵羊0123

科技巨头布局云端 服务器 网络硬...

 2023-05-27 18:17:46   姐姐的跟屁虫

钉钉因系统访问流量激增,宕机1小...

热门阅读

 2022-07-23 00:34:02   freeatom

常见ftp命令 FTP命令使用详...

 2022-07-21 02:17:02   ares

双硬盘组建Raid0磁盘阵列图文...

 2022-07-20 06:17:02   mankeung123

用友软件客户端连接不上服务器的解...

 2022-07-23 00:51:02   antonfxb

WebService实例

 2022-07-13 05:38:02   苯小孩

开发、运维不可不看的Linux调...

 2022-07-20 18:51:02   nightstone

如何使用Charles抓取Web...

随机文章

 2022-01-26 05:38:02   zhg1

web服务器配置

 2022-07-19 20:17:02   dengyu0429

linux vi使用及详细介绍

 2022-07-19 22:00:04   madmadcat

Linux视频教程:用户管理相关...

 2022-07-20 02:17:02   yuxuezeng

linux ACL权限介绍(1)

 2022-07-20 03:34:02   流浪的风

常用的财务软件有哪些?

热评文章

 2022-07-19 20:17:02   dengyu0429

linux vi使用及详细介绍

 2022-07-20 01:00:05   激动的舌头

Linux视频教程:用户管理命令...

 2022-07-21 20:51:02   jessica-an

创建本地FTP站点

 2022-02-07 05:38:03   jasonkidd

WEB服务器配置详解

 2022-07-20 04:51:02   wolfssss

ACL权限-默认与递归(4)

 2022-07-22 15:00:05   淡水珊瑚

Linux下 Samba Ser...
全球云服务器
Catfish(鲶鱼) Blog V 4.7.3