Spring Cloud Alibaba 服务调用负载均衡---Ribbon

什么是负载均衡?

通常来说就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务,组件)上进行执行。
根据负载均衡发生位置的不同,一般分为服务端负载均衡和客户端负载均衡。
服务端负载均衡指的是发生在服务提供者一方,比如常见的nginx负载均衡
而客户端负载均衡指的是发生在服务请求的一方,也就是在发送请求之前已经选好了由那个实例处理请求。

自己如何实现负载均衡?
之前在学Nacos的时候有提到,Nacos提供DiscoveryClient 客户对象通过该对象可以拿到对应的实例集合,然后可以对集合进行筛选,从而就能实现负载均衡以随机的方式进行,或者其他的负载均衡算法自己去实现自己也可以去实现,但是我们在开发中需要做的是业务而不是写负载均衡算法,Spring Cloud整合了Ribbon,它可以让我们使用一个注解就能轻松的搞定负载均衡。
轻松使用方式

  • 在RestTemplate的生成方法上添加@LoadBalanced注解

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
      return new RestTemplate();
    }
    **Ribbon支持的负载均衡策略**
    
    
  • Ribbon内置多种负载均衡策略,内部负载均衡的顶级接口为com.loadbalancer.IRule,具体的负载策略如下:

策略名策略描述实现说明
BestAvailableRule选择一个最小的并发请求的server逐个考查Server被tripped了,则忽略,在选择其中ActivityRequestsCount最小的server
AvailabilityFilteringRule过滤那些因为一直连接失败的被标记为circuit tripped的后端服务,并过滤掉那些高并发的后端服务server(active connections 超过配置的阀值)使用一个AvailabilityPredicate来包含一个过滤server的逻辑,其实就是检查status里记录的各个server的运行状态
WeightedResponseTimeRule根据相应时间分配一个weight,相应时间越长weight越小,被选中的可能性越低。一个后台线程定期的从status里读取评价响应时间,为每个server计算一个weight,Weight的计算也比较简单responsetime减去每个server自己平均的responsetime是server的权重,当刚开始运行,没有形成status时,使用roubune策略选择server
RetryRule对选定的负载均衡策略机制上重试机制在一个配置时间段内选择server不成功,则一直尝试使用subRule的方式选择一个可用的server
RandomRule轮询方式选择server轮询index,选择index对应的位置是server
RoundRobinRule随机选择一个服务在index上随机,选择index对应的server
ZoneAvoidanceRule复合判断server所在区域的性能和server的可用性选择server使用ZoneAvoildancePredicate和AvaulabilityPredicate来判断一个zone的运行性能是否可用,前一个判定zone的运行性能是否可用,剔除不可用的zone(的所有server),AvailbilityPredicate用于过滤掉连接数过多的server。
```
  • 可以通过修改配置文件来调整Ribbon的负载均衡策略:
server-product: # 调用的提供者服务名称
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

上一篇:Spring Cloud Alibaba 服务治理—Nacos Discovery
下一篇:Spring Cloud Alibaba 基于Feign实现服务调用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值