Ribbon中RandomRule和RoundRobinRule的使用方法


本篇内容介绍了“Ribbon中RandomRule和RoundRobinRule的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! Ribbon的版本是2.3.0.release. 图1 图1所示,RandomRule继承AbstractLoadBalancerRule,调用choose(Object)时,调用内部方法choose(ILoadBalancer lb, Object key),如下List-1 List-1通过ILoadBalancer获取所有的服务,如果服务个数是0则直返回null调用chooseRandomInt方法,参数是服务个数,这样返回的随机值是在0与服务数之间,有趣的是出于多线程安全的考虑,使用了java.util.concurrent.ThreadLocalRandom#current来获取随机值如果服务是alive,则返回改服务 图2RoundRobinRule是轮循算法实现,choose(Object)方法会调用choose(ILoadBalancer lb, Object key),如下List-2所示 List-2很重要的一个类属性是AtomicInteger nextServerCyclicCounter,通过它来实现轮循。ILoadBalancer获取所有的服务列表之后调用incrementAndGetModulo方法,参数是服务个数,incrementAndGetModulo方法中用CAS来实现线程安全,获得服务的下标得到服务Server后,判断是否是alive和ReadyToServe,则返回;如果循坏了10次还没有找到,则log打印warn日志提示 这个实现是简单的轮循,没有实现有权重的RoundRibbon。“ 香港云主机Ribbon中RandomRule和RoundRobinRule的使用方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!

相关推荐: python中的MRO原则如何使用

这篇文章主要介绍“python中的MRO原则如何使用”的相关知识,小编通过实际案例向大家展 香港云主机示操作过程,操作方法简单快捷,实用性强,希望这篇“python中的MRO原则如何使用”文章能帮助大家解决问题。1、MRO原则可以通过.__mro__属性输出相…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/30 12:45
下一篇 07/30 12:46

相关推荐