ribbon 的rule负载策略调用跟踪及介绍

接续之前的Ribbon调用远程服务笔记:

对项目发起请求调用,debug模式在API调用处打断点,或者在被调用实现处打断点再回退,找到feign的根调用类ReflectiveFeign,里面有一个invoke方法,由该方法开始跟踪断点即可(需要注意的是:要跟进方法最后面的return的地方,如下图)

跟进executeAndDecode方法,再跟进里面的execute方法

进入RibbonClient类的execute方法,如图

里面有一个executeWithLoadBalancer方法,此处就是调用负载均衡算法的地方,跟进去,前面有一个getRequestSpecificRetryHandler方法

该方法里面先获取了一个OkToRetryOnAllOperations配置属性,然后做了判断,如果该属性为true则将配置设置为true,否则继续判断请求类型,不是get请求就设置为false,是get请求则设置为true。

在之前的try语句里有一个submit方法,点进去可以看到里面用到了观察者模式,进入selectServer方法,先创建一个被观察者也就是服务提供方,然后回到上图调用submit的地方

submit方法后面有一个single方法跟进去有一个blockForSingle方法,里面有一个subscribe方法是用来订阅的;

再跟进,在try语句块里有一个onSubscribeStart和call方法,跟进进入到了lift方法(此处每看明白怎么调的,请原谅)

里面的call方法就是调用的前边selectServer里面的call方法,跟进getServerFromLoadBalancer方法里面的chooseServer方法就是调用负载均衡器的,接着跟进BaseLoadBalancer类的chooseServer方法里面有一个choose方法就是调用负载均衡策略的。

负载均衡器的顶级父类是ILoadBalancer,子类如下图

其中AbstractLoadBalancer是一个抽象类没有实现

所有负载策略的父类是IRule接口,具体介绍不写了,可以看下面这位的

https://blog.csdn.net/rickiyeat/article/details/64918756

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值