首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

工具系列 | 负载均衡算法 - 平滑加权轮询

每个实例 i 除了存在一个配置权重 Wi 外,还存在一个当前有效权重 CWi,且 CWi 初始化为 Wi;指示变量 currentPos 表示当前选择的实例 ID,初始化为 -1;所有实例的配置权重和为 weightSum...; 那么,调度算法可以描述为: 1、初始每个实例 i 的 当前有效权重 CWi 为 配置权重 Wi,并求得配置权重和 weightSum; 2、选出 当前有效权重 最大 的实例,将 当前有效权重 CWi...减去所有实例的 权重和 weightSum,且变量 currentPos 指向此位置; 3、将每个实例 i 的 当前有效权重 CWi 都加上 配置权重 Wi; 4、此时变量 currentPos 指向的实例就是需调度的实例...; 5、每次调度重复上述步骤 2、3、4; 上述 3 个服务,配置权重和 weightSum 为 7,其调度过程如下: 请求 选中前的当前权重 currentPos 选中的实例 选中后当前权重 1 {5

1.9K31

【DUBBO】 负载均衡AbstractClusterInvoker权重随机权重轮询最少活跃数一致性Hash

,则用currentSequence对invokers的长度取模得到下标,然后返回该下标对应的invoker;如果不是所有的invoker权重都相同,用三个变量maxWeight、minWeight、weightSum...用currentSequence对weightSum取模得到一个mod,以maxWeight作为外层循环限制,以invoker个数作为内层循环限制,每次循环的时候mod--,对应的invoke权重值--...LinkedHashMap, IntegerWrapper> invokerToWeightMap = new LinkedHashMap(); // 权重总和 int weightSum...> 0) { invokerToWeightMap.put(invokers.get(i), new IntegerWrapper(weight)); weightSum...这时候的权重比才是 1:2:3:4 if (maxWeight > 0 && minWeight < maxWeight) { int mod = currentSequence % weightSum

54130

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券