什么是Ribbon
负载均衡器通常有两种:服务端负载均衡和客户端负载均衡
ribbon是客户端负载均衡器,即从客户端发出的时候就已经选择好了去哪个服务
像nginx就是服务端负载均衡,客户端请求的时候并不知道要去哪个服务
Ribbon是spring cloud中非常重要的基础框架,Fegin、OpenFegin已经nacos的负载均衡也都是用Ribbon框架实现的
客户端负载均衡的前提是拥有一个注册中心,比如nacos、eureka
客户端负载均衡器通过注册中心获得服务端的服务名称、ip端口号等等,再发送http请求
怎么配置Ribbon
springcloud-nacos-provider: # nacos中的服务id
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #设置负载均衡策略
因为Nacos中已经内置了Ribbon 在实际项目开发中无需再添加Ribbon依赖
Ribbon默认的负载均衡策略是轮询模式
那么Ribbon有哪些负载均衡策略呢?
1、轮询策略
RoundRobinRule 依次调用服务
2、权重策略
WeightedResponseTimeRule 根据响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性也就越低
3、随机策略
RandomRule 完全随机
4、最小连接数策略
BestAvailableRule 也叫最小并发数策略 遍历服务提供者列表 选取连接数最小的一个服务实例
5、重试策略
RetryRule 按照轮询策略来获取服务
6、可用性敏感策略
AvailabilityFilteringRule 先过滤非健康的服务实例,然后选择连接数较小的服务实例
7、区域敏感策略
ZoneAvoidanceRule 根据服务所在zone的性能和服务的可用性来选择服务实例,在没有区域的环境下该策略和轮询策略没有区别