负载均衡加权轮询算法

随机数加权轮询算法

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;
    }
相关推荐
luj_176811 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
mCell12 小时前
你以为短链接只是 Hash + 301/302?
后端·算法·架构
KaMeidebaby13 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
luj_176813 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
RisunJan14 小时前
Linux命令-rlogin(远程登录)
linux·运维
tmlx3I08114 小时前
高光谱拼接算法(六)RANSAC 误匹配剔除
人工智能·算法·机器学习
深圳恒讯14 小时前
菲律宾云服务器与传统VPS的架构差异
运维·服务器·架构
不相心 -w-14 小时前
基础-滑动窗口-(定长 | 不定长)
算法
蓝天下的守望者14 小时前
svt_apb_if里的宏定义问题
运维·服务器·数据库
小林ixn14 小时前
从“玩具工具”到“跨语言利器”:MCP 协议实战解析
运维·服务器·网络