• 11选5走势图分析技巧 2019-09-30
  • 北京11选5胆拖计算器 2019-09-24
  • 11选5组选前三技巧 2019-09-23
  • 11选5摇奖模拟器 2019-09-16
  • 微信上广东11选5正规吗 2019-09-15
  • 11选5胆拖玩法对照表 2019-09-14
  • 体彩11选5前三组多少钱 2019-09-13
  • 11选5任选7软件 2019-09-12
  • 黑龙江新11选5开奖 2019-09-11
  • 广东11选5购彩网站 2019-09-10
  • 11选5拖计算器 2019-09-09
  • 北京体彩11选5开奖结果查询 2019-09-08
  • 11选5任6技巧集锦 2019-09-07
  • 福建11选5开奖结果112期 2019-09-06
  • 河北11选5遗漏数据 2019-09-05
  • 您好,欢迎来到景安网络!
    加盟景安
    主页 >服务器技术 >你真的了解负载均衡吗?

    你真的了解负载均衡吗?


    来源:景安网络发表日期:2018-06-05浏览次数:Tags:负载均衡
    景安网络专业的数据中心服务商,长期提供数据中心托管服务,私有云,互联网解决方案,互联网增值服务。针对工信委大力实施“万企业上云”计划,景安以我所能,为你而+,推出1元即可上云,核心云计算产品降幅达50%

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

    负载均衡

    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的性能是万级的,一般的Linux服务器上安装一个Nginx能达到每秒5万并发请求;而F5的性能能达到百万级,从200万每秒到800万每秒都有,不过价格很贵。

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


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

    0(好文)
    0(太水)
    版权声明:部分文章源于网络,如侵权请联系我们删除
    1元上云

    专题页