负载均衡加权轮询算法

随机数加权轮询算法

java 复制代码
public int select() {
        int[] weights = {10, 20, 50};
        int totalWeight = weights[0] + weights[1] + weights[2];
        // 取随机数
        int offset = ThreadLocalRandom.current().nextInt(totalWeight);
        for (int i = 0; i < weights.length; i++) {
            offset -= weights[i];
            if (offset < 0) {
                return i;
            }
        }
        return -1;
    }

平滑加权轮询算法

java 复制代码
int[] weights = {10, 20, 50};   // 节点权重
    int totalWeight = weights[0] + weights[1] + weights[2]; // 总权重
    int[] current = new int[]{10, 20, 50};  // 初始化当前权重

    public int select() {
        int maxCurrent = -1, selected = -1;
        // 遍历所有节点,找到当前权重最大的节点
        for (int i = 0; i < weights.length; i++) {
            // 重新计算当前权重
            current[i] += weights[i];
            int cur = current[i];
            if (cur > maxCurrent) {
                maxCurrent = cur;
                selected = i;
            }
        }
        // 被选中的节点减去总权重
        current[selected] -= totalWeight;
        return selected;
    }
相关推荐
Trouvaille ~几秒前
【Linux】文件描述符与重定向原理:揭开Linux文件操作的神秘面纱
linux·运维·服务器·开发语言·内核·进程·重定向
元气满满-樱几秒前
Nginx负载均衡
运维·nginx·负载均衡
努力学算法的蒟蒻3 分钟前
day37(12.18)——leetcode面试经典150
算法·leetcode·面试
熊出没3 分钟前
Linux 实操命令大全
linux·运维·chrome
JY.yuyu5 分钟前
NET地址转换
运维·服务器·网络
Hy行者勇哥7 分钟前
MobaXterm 高效运维实战:从入门到进阶的 Linux 运维 “瑞士军刀” 用法
linux·运维·github
守城小轩7 分钟前
基于Chrome140的Quora账号自动化(关键词浏览)——需求分析&环境搭建(一)
运维·自动化·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
乾元10 分钟前
把 SLA / SLO 放到网络可观测的核心:从指标到证据链的工程化路径
运维·开发语言·网络·人工智能·网络协议·架构
超级种码11 分钟前
All In AI——DSPy框架,让智能体开发像模型训练一样
大数据·人工智能·算法