负载均衡加权轮询算法

随机数加权轮询算法

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;
    }
相关推荐
啊阿狸不会拉杆2 分钟前
《机器学习导论》第 2 章-监督学习
数据结构·人工智能·python·学习·算法·机器学习·监督学习
Yana.nice3 分钟前
chrony中“prefer”指定首选服务器
运维·服务器
乌萨奇也要立志学C++3 分钟前
【洛谷】记忆化搜索 原理剖析与经典例题详解
算法·深度优先
Code920073 分钟前
洛谷P3514 [POI 2011] LIZ-Lollipop(思维题)
算法
GAOJ_K3 分钟前
弧形导轨与直线导轨:曲线运动与直线运动
运维·人工智能·科技·机器人·自动化·制造
m0_706653235 分钟前
C++中的解释器模式
开发语言·c++·算法
小猪写代码7 分钟前
Linux核心梳理
linux·运维·服务器
Cx330❀7 分钟前
深入理解 Linux 基础 IO:从 C 库到系统调用的完整剖析
linux·运维·服务器·c语言·数据库·人工智能·科技
We་ct8 分钟前
LeetCode 202. 快乐数:题解+思路拆解
前端·算法·leetcode·typescript
小草cys8 分钟前
【未解决】华为鲲鹏920B服务器Ubuntu25下安装mindspore(搭载昇腾Ascend 910B AI 芯片
运维·服务器