负载均衡加权轮询算法

随机数加权轮询算法

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;
    }
相关推荐
Hcoco_me11 小时前
大模型面试题18:t-SNE算法详解及入门实操
算法
Data_agent12 小时前
学术爬虫实战:构建知网论文关键词共现网络的技术指南
python·算法
Chennnng12 小时前
Ubuntu 安装过程的 6 大常见问题类型
linux·运维·ubuntu
立志成为大牛的小牛12 小时前
数据结构——五十五、散列查找的性能分析(线性探测法)(王道408)
数据结构·程序人生·考研·算法
Evan芙13 小时前
Linux 进程状态与进程管理命令
linux·运维·服务器
神也佑我橙橙13 小时前
Thrift 简单介绍
算法
simon_skywalker13 小时前
线性代数及其应用习题答案(中文版)第二章 矩阵代数 2.1 矩阵运算(2)
线性代数·算法·矩阵
doris61013 小时前
2025年设备管理系统:智能运维成新标杆
运维
断剑zou天涯13 小时前
【算法笔记】Manacher算法
java·笔记·算法
qsjming13 小时前
EXT4文件系统特性说明
运维