Ribbon简介和入门
Ribbon介绍
Ribbon是Netflix发布的负载均衡器,有助于控制HTTP客户端行为。为Ribbon配置服务提供地址列表
后,Ribbon就可基于负载均衡算法,自动帮助服务消费者请求。
Ribbon默认提供的负载均衡算法:轮询,随机,重试法,加权。当然,我们可用自己定义负载均衡算法。
Ribbon实践
如上图,当用户下单调用 hailtaxi-order 服务的时候,该服务会调用 hailtaxi-driver ,此时如果是抢单过程,查询压力也会很大,我们可以为 hailtaxi-driver 做集群,做集群只需要把工程复制多份即可,多个工程如下图:
在idea中将项目的启动配置复制一份出来,修改启动端口号
调用测试,访问:http://localhost:18082/order调用,可以发现已经实现负载均衡了, 18081 和 18085 , 18086 服务默认是轮询访问。
Ribbon算法
我们上面没做任何相关操作,只是把服务换成了多个就实现了负载均衡,这是因为OpenFeign默认使用了Ribbon的轮询算法,如下图依赖包,引入OpenFeign的时候会传递依赖Ribbon包:
Ribbon支持多种负载均衡算法,我们可以按照自己的需求使用相关算法,在 hailtaxi-order 配置类中
配置如下规则:
1 |
|
RoundRobinRule
轮询
RandomRule
随机算法
RetryRule
重试算法。该算法先按照轮询的策略获取服务,如果获取服务失败则在指定的时间内会进行重试,获取可用的服务。
ZoneAvoidanceRule
加权算法。会根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越大。刚启动时如果同统计信息不足,则使用轮询的策略,等统计信息足够会切换到自身规则。
(完)
Ribbon简介和入门
https://maojun.xyz/blog/2020/04/Ribbon简介和入门.html