zoukankan      html  css  js  c++  java
  • 说一说负载均衡算法

        负载均衡算法可以分为两类:静态负载均衡算法,基于服务器的容量,就是高配置的服务器比低配置的服务器分配更多的请求;动态负载均衡算法根据服务器的状况,比如通过监控可以得到平均响应时间,或者CPU占用率,内存占用率按照某种方式进行计算,作为权重值

    静态负载均衡算法

    随机(Random):利用随机数生成算法选取一个服务器,然后把连接发送给他。虽然许多负载产品都支持该算法,但是它的有效性一直受到质疑,除非把服务器的可运行时间看的很重。

    轮询(Round Robin):按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有服务器。轮询算法在大多数情况下都工作不错,但是如果负载均衡的设备在处理速度、连接速度和内存等方面不是完全均等,那么效果会打折扣

    加权轮询(Weighted Round Robin):在该算法中每台服务器的连接数量是按权重比例分配的。它是对普通轮询算法的改进

    优先权(Priority):给所有的服务器分组,每组都定义优先权,把请求优先分配给优先级最高的服务器组(同一组内,采用轮询或加权轮询来分配请求);当最高优先级组中的所有服务器都出现故障时,才把请求发送给次优先级的服务器组。

    动态负载均衡算法

    动态轮询(Dynamic Round Robin):类似于加权轮询,但是权重值是基于各个拂去其的持续监控,并且不断更新的。根据服务器的实时性能分析来分配请求。

    最少的连接(Least Connection):系统把新的请求分配给当前连接数目最少的服务器。该算法在各个服务器运算能力基本类似的环境中非常有效。

    最快算法(Fastest):最快算法基于所有服务器中响应时间最快的给分配连接。该算法在服务器跨不同网络的环境中特别有用。

    观察算法(Observed):该算法同时利用最小连接算法和最快连接算法来实施负载均衡。服务器根据当前的连接数和相应时间得到一个分数,分数越高代表性能越好,分配的连接也就越多。

    预判算法(Predictive):该算法使用观察算法来计算分数,但是它会分析分数的变化趋势来判断某台服务器的性能,是正在改善还是降低,具有改善趋势的服务器会得到更多的连接。该算法适用于大多数环境。

    说完上面的概念后,就要实践了,在这里实现一个加权轮询负载均衡算法

    image

    最后,代码下载

  • 相关阅读:
    Balanced Binary Tree
    Swap Nodes in Pairs
    Reverse Nodes in k-Group
    Reverse Linked List II
    Remove Nth Node From End of List
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Partition List
    Merge Two Sorted Lists
    【Yii2.0】1.2 Apache检查配置文件语法
  • 原文地址:https://www.cnblogs.com/Khadron/p/5734250.html
Copyright © 2011-2022 走看看