Ribbon服务调用(客户端-使用)
注:
- 它是客户端用来做负载均衡的工具;
- 也就是我们在最开始使用restTemplate这个bean创建的时候,上面使用的@LoadBalancer
- 目前ribbon也进入了维护模式
Ribbon工作步骤
pom.xml依赖引入
为什么引入了Eureka-client,就能够使用ribbon了呢?因为在eureka-client依赖里面自动引入了netflix-ribbon的依赖;如果初学者搞不明白,单独引入也是一样的效果;反正maven遵循的是就近原则;
如何使用
官方代码地址
以后spring想用这个替代ribbon
Ribbon负载均衡支持哪些?
通过上图看到都是基于IRule接口的实现,那么以后我们想自定义负载均衡策略是不是就可以自己定义了。
意思解释
替换默认的负载均衡策略
也就是说,自己搞一个包,这个包不能被默认的组件扫描工具给扫到。
给容器中放一个组件
然后在主启动类加上@RibbonClient
然后把配置类给配置进去就好了。这样就相当于自定义了一个名字叫name的ribbon负载均衡策略。
Ribbon负载均衡算法
IRule接口
通过discoveryClient获取注册中心的服务信息
自定义轮询算法,需要注释这个@LoadBalanced
实现接口
在controller中使用自己定义的负载均衡策略器
配置修改轮询策略:Ribbon默认的负载均衡策略是轮询
# 修改服务地址轮询策略,默认是轮询,配置之后变随机
user-service:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
SpringBoot可以修改负载均衡规则,配置为ribbon.NFLoadBalancerRuleClassName
格式{服务提供者名称}.ribbon.NFLoadBalancerRuleClassName