目录
Ribbon 是什么?
如何使用Ribbon?
1. 引入依赖
2. 加注解(RestTemplate整合Ribbon)
3. 编码
Ribbon 是由哪些组件构成?
Ribbon 内置的负载规则有哪些?
Ribbon 如何细力度配置负载规则?
代码配置
配置属性方式
两种方式对比
Ribbon 如何开启全局配置?
Ribbon 如何开启饥饿加载?
Ribbon 如何基于Nacos 的权重实现负载规则?
Ribbon 如何有些调用同一机房的集群服务?
总结:
Ribbon 是什么?
Ribbon 是Netflix 提供的开源客户端负载均衡器,他提供了多种负载均衡规则;
如何使用Ribbon?
1. 引入依赖
2. 加注解(RestTemplate整合Ribbon)
3. 编码
将RestTemplate 调用接口中的ip端口,替换成注册在nacos服务上的服务名称
eg:
http://alibaba-nacos/config/get -- alibaba-nacos 是被调用方注册在nacos 上的服务名
Ribbon 是由哪些组件构成?
Ribbon 内置的负载规则有哪些?
Ribbon 如何细力度配置负载规则?
Ribbon 规则配置支持代码配置和配置属性方式配置,两种方式各有利弊。详情如下
代码配置
注意: RibbonRuleConfig 放置的位置需要是spring boot 启动类外的包内,否则会导致父子上下文重叠,从而引发问题;如果Ribbon 配置过程中发生了父子上下文重叠,会产生什么问题呢?
答案是如果RibbonRuleConfig配置在Spring boot 启动类同一个包内,那么这个Ribbon 负载规则 不在是针对服务的,而是一个全局的配置项了。到时候访问其他服务的接口也会调用RibbonRuleConfig 定义的负载规则,无法达到自定义细粒度Ribbon 负载规则配置了
配置属性方式
其中 alibaba-nacos 是待调用服务nacos 服务名
NFLoadBalancerRuleClassName 指定的是负责规则类
两种方式对比
代码配置:
优点:基于代码配置,更加灵活
缺点:编写时需要注意父子上下文重叠问题,并且每次更改发布需要重新打包部署
配置文件:
优点:配置直观,修改无需重新部署
缺点:极端条件下,没有代码配置灵活。但是99% 的情况其实是可以通过配置属性方式来实现的
Ribbon 如何开启全局配置?
Ribbon 如何开启饥饿加载?
Ribbion 默认是懒加载的方式,及服务第一调用的时候,才去加载。会导致第一次访问服务的时候速度缓慢.开启饥饿加载只需要在配置文件配置
开启饥饿加载配置方式:
alibaba-nacos 是注册在nacos上的服务名称,多个之间用逗号分隔
Ribbon 如何基于Nacos 的权重实现负载规则?
Nacos 权重配置的优点是可以基于服务器性能进行对服务器资源的在分配。且可以辅助我们达到服务器灰度下线的能力;实现如下
配置文件添加对自定义负载规则的引用:
Ribbon 如何有些调用同一机房的集群服务?
更多情况下,为了容灾,我们会对集群进行异地部署。在使用的时候,为了性能,我们常常需要调用同一机房的服务
配置文件添加对自定义规则的引用
Ribbon 如何基于元数据的方式实现不同版本调用不同服务的能力?
参考: http://www.imooc.com/article/288674
总结:
通过Ribbon 的基础学习,对于负载规则,我们又多了一个思路去实现。本章博文是基于对大目老师Spring cloud alibaba Ribbon 课程的一个记录和总结。
------------END-----------
领取专属 10元无门槛券
私享最新 技术干货