zoukankan      html  css  js  c++  java
  • 负载均衡算法实现方式

    轮询(Round Robin)法

    1.获取ip列表

    2.根据ip在list的中pos顺序获取,server = keyList.get(pos);(使得同一时刻只能有一个线程可以修改pos的值)

    随机(Random)法

    1.获取ip列表

    2.Random的nextInt方法取0~keyList.size()区间的一个随机值 int randomPos = random.nextInt(keyList.size());

    源地址哈希(Hash)法

    获取客户端访问的IP地址值,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是要访问的服务器的序号,结果便是选用的服务器在服务器列表中的索引值。

    1.获取远程ip,计算hash值

    2.取模计算该hash值得pos 序列号(保证了相同客户端IP地址将会被哈希到同一台后端服务器)

    加权轮询(Weight Round Robin)法

    在获取服务器地址之前增加了一段权重计算的代码,根据权重的大小,将地址重复地增加到服务器地址列表中,权重越大,该服务器每轮所获得的请求数量越多。

    1.根据权重比例重复添加到ip列表中

    for (int i = 0; i < weight; i++)

    serverList.add(server);

    2.按照pos轮询列表。server = serverList.get(pos);

    加权随机(Weight Random)法

    原理同加权和随机一样

    1.1.根据权重比例重复添加到ip列表中

    for (int i = 0; i < weight; i++)

    serverList.add(server);

    2.int randomPos = random.nextInt(serverList.size());

    最小连接数(Least Connections)法

    以后端服务器的视角来观察系统的负载,而非请求发起方来观察。

    根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前请求,尽可能地提高后端服务器的利用效率,将负载合理地分流到每一台机器。

    1.需要后端服务器定时上报连接情况

    2.根据连接情况选择最小连接

  • 相关阅读:
    【HIDS】关于HIDS的一些看法
    图片在容器内水平垂直居中显示
    C++ 实现Cholesky分解
    Minikube 安装和简单使用
    关于.net的一些记录
    C#将窗体Form嵌入主窗体Panel中的一些问题
    Pod持久化
    Maven打包包含jar包
    Adam
    [漏洞]DNS Server Spoofed Request Amplification DDoS
  • 原文地址:https://www.cnblogs.com/twinhead/p/9900703.html
Copyright © 2011-2022 走看看