Ribbon:
ribbon是springcloud个服务之间调用的一种实现方式:主要提供了客户端的负载均衡。feign集成了Ribbon(下节介绍)
源码分析:
1> 源码入口 @LoadBalanced
2> @LoadBalanced 注解接口实现:
3> loadBanlanced 都是在spring-cloud-commons包中
最终实现类是 RibbonLoadBalancerClient。集成关系如下:
4> RibbonLoadBalancerClient 类详解: 在spring-cloud-netflitx-ribbon包中:
根据上面介绍,最终调的服务由choose方法决定,那我们来进一步看看choose方法: 下面是方法调用流程
5> 负载均衡的实现 IRule 和iPing实现:
IPing:判断服务器是否启动:isAlive方法
IRule: 路由实现(在服务器启动的实现。选择哪个服务进行响应)
剩下源码有兴趣的可以继续追,我就介绍到这了