美文网首页
负载均衡

负载均衡

作者: 左手代码__右手诗 | 来源:发表于2019-04-15 11:30 被阅读0次

    Nginx代理中的负载均衡

    提到Nginx的反向代理,不得不提的就是Nginx的负载均衡,Nginx支持丰富的负载均衡算法,以提高使用Nginx部署的服务的综合性能。
    在介绍负载均衡之前,我们先来看为什么需要负载均衡。

    为什么需要负载均衡

    需要负载均衡的一个最简单的诉求就是由Proxy代理的多个Server节点的性能并不完全相等的,也即是不同Server节点,他们处理请求的速度和容量都不相同,这就要求Proxy在转发的时候,能够因Server而异,给不同Server转发适合其处理性能的请求量,以防Server节点低负载浪费资源,或者过高负载引起宕机。
    其次就是如果没有负载均衡算法,我们就无法避免很多请求被调度到一个Server节点从而把这个Server节点压垮的情况发生,因为我们没有一种机制保证不同Server节点所处理的请求量数均匀的或者是合理的。

    负载均衡的算法

    对服务器性能的考究有很多变量需要去关注:包括CPU的核数和频率、内存的容量速度、网络的质量、内核最大文件描述符、服务器的其他服务影响等等,因此在负载均衡算法上,也是非常丰富的,以下是几种常见的负载均衡算法。

    随机算法

    随机,顾名思义,就是随机概率的调度,每一个请求通过随机算法调度到不同的服务器,若调用量越大,不同服务器处理的请求数就越平均。
    这种算法看是公平的,但是没有考虑到不同节点性能的差异,同时对随机算法也有一定的要求,要求随机算法在大量的随机事件后能够得到一个均匀的随机结果。

    轮询算法

    轮询算法也非常容易理解,请求到来的时候,按顺序把每个请求转发到多个Server节点当中,保证每个服务节点所处理的请求量都是均匀的。
    虽然这种算法很公平,但是没有考虑到不同节点性能的差异。

    最少连接算法

    在多个服务器当中,优先将请求调度到处理连接数少的服务器上,即使每台服务器的处理能力各不相同,也能够在一定程度上降低服务器的负载。
    这种算法能够考虑不同节点性能之间的差异,处理连接数在一定程度上能够反映其性能的差异,不过并非绝对,在一些条件下,其他原因也可限制处理连接数,比如网络性能、带宽压力等等。

    权重轮询算法

    这种算法要求在转发节点配置Server的时候,添加Server节点的权重信息,以表示不同Server节点的处理性能,在转发节点转发请求的时候,将按照权重的大小来分配转发的流量。
    这种算法可以合理的转发请求,开发人员可以按照Server节点的性能参数、部署的服务来修改Server节点的权重,使得每一个Server节点都能够得到最合理的使用。
    当然,除了开发人员手动配置权重以外,更为智能的一种方式是由代理的Server节点主动上报自己的能力,转发节点在接收到相关信息的时候再权衡不同Server节点的能力,按照权重进行转发。这样就不用人工介入,提高效率。不过这种方式对转发节点和Server节点都有一定的要求,需要开发者去开发相关的逻辑。
    这篇文章讲的通俗易懂,希望自己多多回顾。

    相关文章

      网友评论

          本文标题:负载均衡

          本文链接:https://www.haomeiwen.com/subject/xlxuwqtx.html