Ribbon负载均衡原理解析

该文章基于是本人自己总结和分析的内容,技术有限,如有错误请各位大佬及时指出

话不多说,上货!

 

1.消费者发起请求 

例如:http://userservice/user/1

 

2.该请求会被客户端请求拦截器ClientHttpRequestInterceptor的实现类负载均衡拦截器LoadBalancerInterceptor中的intercept方法拦截

 

3.该方法会传入一个HttpRequest对象,通过Request对象的getURl方法获取到请求路径,再通过getHost方法获取到该请求路径的主机名

例如:userservice

 

4.将获取到的主机名交给Ribbon的负载均衡客户端RibbonLoadBalancerClient的excute方法去执行

 

5.该方法传入获取到的主机名给getLoadBalancer方法,返回得到一个DynamicServerListLoadBalancer对象,该对象的allServerList属性封装了该主机名对应的真实请求主机名

 

6.调用getServer方法,该方法中又调用了             ZoneAwareLoadBalancer中的chooseServer方法,该方法又调用了父类BaseLoadBalancer中的chooseServer方法

 

7.该方法返回的是一个IRule对象,而IRule是一个接口,它实现了

     (1)ClientConfigEnabledRoundRibbonRule

     (2)轮询规则RoundRibbonRule

     (3)随机规则RandomRule

     (4)RetryRule

 

8.而默认的负载均衡规则是ZoneAvoidanceRule

 

9.进过IRule负载均衡过后,会返回负载均衡后调用的真实主机名给RibbonLoadBalancerClient,最后将主机名替换到原本的请求地址上发出请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值