Ribbon使用

117 阅读2分钟

1. 什么是Ribbon

是 Netflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在 SpringCloud 中,Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的 列表信息,并基于内置的负载均衡算法,请求服务

2. Ribbon的主要作用

  1. 服务调用

基于Ribbon实现服务调用, 是通过拉取到的所有服务列表组成(服务名-请求路径的)映射关系。借助 RestTemplate 最终进行调用

  1. 负载均衡

当有多个服务提供者时,Ribbon可以根据负载均衡的算法自动的选择需要调用的服务地址

3. Ribbon使用

  1. 引入依赖 eureka中自动依赖ribbon,所以不需要单独引入

  2. 使用@LoadBalanced 开启

 @LoadBalanced  //使用ribbon的@LoadBalanced
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

//配合RestTemplate直接写服务名称即可
 String url = StrUtil.format("http://service-product/product/list?ids={}",
                StrUtil.join(",", idList));
  1. 更改ribbon负载均衡策略 ribbon默认使用轮询的策略
# ribbon的负载均衡策略修改  服务名 - ribbon - NFLoadBalancerRuleClassName : 策略的全类名
service-product:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #随机策略
  1. ribbon的重试机制

在这里插入图片描述 添加重试的依赖

<dependency>
    <groupId>org.springframework.retry</groupId>
    <artifactId>spring-retry</artifactId>
</dependency>

更新配置文件

ribbon:
  MaxAutoRetriesNextServer: 2  //向后更换几台服务器进行重试
  MaxAutoRetries: 1  //对单台服务器的重试次数
  OkToRetryOnAllOperations: true //是否对所用类型请求都进行重试,默认支队get重试
  ConnectionTimeout: 时间 //简历连接的超时时间
  ReadTimeout:时间 //接受相应的超时时间