spring微服务之Ribbon的介绍与使用

目录

1. 负载均衡策略

1.随机策略

2.随机策略

3.最少连接数策略

4.权重策略

5.重试策略

6.可用性敏感策略

7.区域敏感策略

2.IPing机制

3. 自定义IRule


1. 负载均衡策略
1.随机策略

        轮询是 Ribbon 默认的负载均衡策略,即按照服务列表的顺序依次进行轮询。每个服务实例被轮流使用,直到服务实例出现故障或者返回错误响应。下次请求时将自动排除故障实例,继续轮询其他实例。

配置:

        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule 

2.随机策略

        随机是另一种比较常见的负载均衡策略,即从服务列表中随机选择一个服务实例进行处理。随机算法可以防止某个服务实例出现负载过高的情况。

配置:

        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

3.最少连接数策略

        最少连接数是一种根据服务实例当前的连接数来选择最空闲实例的负载均衡策略。在服务实例的连接数相对均衡的情况下,可以保证选择最快速的服务实例。

配置: 

        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule

4.权重策略

        权重策略根据每个服务提供者的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性也就越低。它的实现原理是,刚开始使用轮询策略并开启一个计时器,每一段时间收集一次所有服务提供者的平均响应时间,然后再给每个服务提供者附上一个权重,权重越高被选中的概率也越大。

配置:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule

5.重试策略

        RetryRule,按照轮询策略来获取服务,如果获取的服务实例为 null 或已经失效,则在指定的时间之内不断地进行重试来获取服务,如果超过指定时间依然没获取到服务实例则返回 null。

配置:

ribbon:
  ConnectTimeout: 2000 # 请求连接的超时时间
  ReadTimeout: 5000 # 请求处理的超时时间
springcloud-nacos-provider: # nacos 中的服务 id
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #设置负载均衡

6.可用性敏感策略

        可用敏感性策略:AvailabilityFilteringRule,先过滤掉非健康的服务实例,然后再选择连接数较小的服务实例。

配置:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.AvailabilityFilteringRule

7.区域敏感策略

        区域敏感策略:ZoneAvoidanceRule,根据服务所在区域(zone)的性能和服务的可用性来选择服务实例,在没有区域的环境下,该策略和轮询策略类似。

配置:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.ZoneAvoidanceRule

2.IPing机制

        IPing是一个主动探测服务节点存活的机制,通过判断服务节点的当前状态,设置节点的可用状态。只有当节点为可用时候才会作为负载均衡器的选取节点。

IPing有以下几种模式:

        DummyPing:默认返回true,即认为所有节点都可用,这也是单独使用Ribbon时的默认模式
        NIWSDiscoveryPing:借助Eureka服务发现机制获取节点状态。节点状态是UP,则认为是可用状态
        PingUrl:主动向服务节点发起一次http调用,对方有响应则认为节点是可用状态
        NoOpPing:返回true
        PingConstant:返回设置的常量值

3. 自定义IRule
public class MyRule extends AbstractLoadBalancerRule implements IRule 

重写 

@Override
public Server choose(Object key) 

参考:

        1.Ribbon 的负载均衡策略有哪些 - 阅读清单 - 腾讯云开发者社区-腾讯云

        2.SpringCloud Ribbon(三)之IPing机制_dummyping_茅坤宝骏氹的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值