Ribbon负载均衡简介及使用

1. 关于负载均衡

负载均衡一般分为服务器端负载均衡和客户端负载均衡

  • 服务器端负载均衡:比如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据一定的算法 将请求路由到目标服务器处理。

  • 客户端负载均衡:比如我们要说的Ribbon,服务消费者客户端会有一个服务器地址列表,调用方在请求前通过一定的负载均衡算法选择一个服务器进行访问,负载均衡算法的执行是在请求客户端进行。

Ribbon是Netflix发布的负载均衡器。Eureka一般配合Ribbon进行使用,Ribbon利用从Eureka中读取到服务信息,在调用服务提供者提供的服务时,会根据一定的算法进行负载。

在这里插入图片描述

2. Ribbon使用及配置

使用Ribbon时不需要引入额外的Jar坐标,因为在服务消费者中我们引入过eureka-client,它会引入Ribbon相关Jar

在这里插入图片描述
代码中使用如下,在RestTemplate上添加对应注解即可

// 使用RestTemplate模板对象进行远程调用
@Bean
//Ribbon负载均衡
@LoadBalanced
public RestTemplate getRestTemplate() {
    return new RestTemplate();
}
3. Ribbon负载均衡策略
负载均衡策略描述
RoundRobinRule:轮询 策略默认超过10次获取到的server都不可用,会返回一个空的server
RandomRule:随机策略如果随机到的server为null或者不可用的话,会while不停的循环选 取
RetryRule:重试策略一定时限内循环重试。默认继承RoundRobinRule,也支持自定义 注入,RetryRule会在每次选取之后,对选举的server进行判断, 是否为null,是否alive,并且在500ms内会不停的选取判断。而 RoundRobinRule失效的策略是超过10次,RandomRule是没有失 效时间的概念,只要serverList没都挂。
BestAvailableRule:最小 连接数策略遍历serverList,选取出可用的且连接数最小的一个server。该算 法里面有一个LoadBalancerStats的成员变量,会存储所有server 的运行状况和连接数。如果选取到的server为null,那么会调用 RoundRobinRule重新选取。1(1) 2(1) 3(1)
AvailabilityFilteringRule: 可用过滤策略扩展了轮询策略,会先通过默认的轮询选取一个server,再去判断 该server是否超时可用,当前连接数是否超限,都成功再返回。
ZoneAvoidanceRule:区 域权衡策略**(默认策略)**扩展了轮询策略,继承了2个过滤器:ZoneAvoidancePredicate和 AvailabilityPredicate,除了过滤超时和链接数过多的server,还会 过滤掉不符合要求的zone区域里面的所有节点,AWS --ZONE 在一 个区域/机房内的服务实例中轮询
4. 修改负载均衡策略

在配置文件中添加如下内容,下面是一些常用配置,这里单独对一个服务提供者配置,可以针对全局配置

#针对的被调用方微服务名称,不加就是全局生效
xxx-service:
  ribbon:
    #请求连接超时时间
    ConnectTimeout: 2000
    #请求处理超时时间
    ReadTimeout: 3000
    #对所有操作都进行重试
    OkToRetryOnAllOperations: true
    ####根据如上配置,当访问到故障请求的时候,它会再尝试访问一次当前实例(次数由MaxAutoRetries配置),
    ####如果不行,就换一个实例进行访问,如果还不行,再换一次实例访问(更换次数由MaxAutoRetriesNextServer配置),
    ####如果依然不行,返回失败信息。
    MaxAutoRetries: 0 #对当前选中实例重试次数,不包括第一次调用
    MaxAutoRetriesNextServer: 0 #切换实例的重试次数
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #负载策略调整
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值