Ribbon负载均衡之轮询算法

轮询算法

  • 上次请求下标值(第一次默认为0)加1%服务器集群总数量=实际调用服务下标,每次重启服务从1开始计时

源码分析

  • Ribbon实现负载均衡实在RoundRobinRule类中完成的
    在这里插入图片描述

  • choose方法为轮询算法,在这个方法里面,我们得到了集群里服务数量serverCount
    在这里插入图片描述

  • 将serverCount传入incrementAndGetModulo方法里面
    在这里插入图片描述

  • incrementAndGetModulo方法里,我们得到之前下标,然后加1,然后与当前服务数量取模,就得到了需要调用服务的下标,然后利用cas自旋操作将nextServerCyclicCounter更新为当前下标值,然后返回next,这样就完成轮询操作了
    在这里插入图片描述

这几个数据整理了一个表格,假设集群数量(serverCount)为2,结果集为

nextServerCyclicCountercurrentnext更新后的nextServerCyclicCounter
00+1=11%2=11
11+1= 22%2=00
00+1=11%2=11

这样就完成了一个轮询操作

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值