SpringCloud之Bibbon源码分析
Ribbon 源码解析
Ribbon 运行的时候是创建一个RestTemplate 然后在加一个@LoadBalancer的注解 接口即可完成ribbon的整合
那@LoadBalancer 做了那些工作呢 ?看下源码
会发现在这个包下有一个LoadBalancerAutoConfiguration的加载类 看下这个类做什么
加入loadBalancerClient.class 同时还有一些初始化的bean
看源码会发在有@loadBalancer注解修饰的restTmplate 会被加上一个拦截器
这样思路就清晰了 ribbon的负载是通过拦截器处理的
下面就看下拦截器是怎么处理的
看源码会发现这个主战场在ribbonLoadBalancerClinet.class
负载方法是choose()跟源码最终会找到 ILoadBalancer.class
DynamicServerListLoadBalancer.class 父类的加载策略
发现默认的负载策略是 RoundRobinRule()
这些是负载策略不同的实现类
WeightedResponseTimeRule:根据server响应平均时长来确定使用哪个server 响应时间越长,权重越小。
RandomRule: 随机选择一个可用的服务器。
RetryRule: 重试机制的选择逻辑
AvailabilityFilteringRule:并发下的
到此负载策略就分析完了,今天就到这里了 还有好多事情要做。