Ribbon客户端

Ribbon

  • Ribbon 是 Netflix 提供的一个基于Http和Tcp的客户段负载均衡工具
  • 服务端负载均衡
  • 负载均衡算法在服务端
  • 由负载均衡器维护服务地址列表
  • 客户端负载均衡
  • 负载均衡算法在客户端
  • 客户端维护服务地址列表
Ribbon简化远程调用
  • Ribbon可以简化RestTemplate的远程调用
  • 实现步骤
  • 1.在声明Restemplate的@Bean的时候添加注解 @LoadBalanced
package com.itheima.consumer.config; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration public class RestemplateConfig {//加上这个注解 @LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); } }

  • 2.在使用restTemplate发起请求时,需要定义url时,host:port可以替换为服务提供方的应用名称 例如:EUREKA-PROVIDER
Ribbon负载均衡
  • 随机:RandomRule
  • 轮询:RoundRobinRule
  • 最小并发:BestAvailableRule
  • 过滤:AvailabilityFilteringRule
  • 响应时间:WeightedResponseTimeRule
  • 轮询重试:RetryRule
  • 性能可用性:ZoneAvoidanceRule
Ribbon负载均衡配置(默认轮询策略) 1·编码方式设置Ribbon的负载均衡策略
  • 1.创建一个配置类MyRule
package com.itheima.consumer.config; import com.netflix.loadbalancer.IRule; import com.netflix.loadbalancer.RandomRule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyRule { @Bean public IRule rule(){ return new RandomRule(); }}

  • 2.在应用程序启动类中添加配置
package com.itheima.consumer; import com.itheima.consumer.config.MyRule; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.ribbon.RibbonClient; /** * 启动类 */@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient //激活DiscoveryClient /** * 配置Ribbon负载均衡策略 * name:设置 服务提供方的 应用名称 * configuration: 设置 负载均衡的Bean */ @RibbonClient(name = "EUREKA_PROVIDER", configuration = MyRule.class) public class ConsumerApp { public static void main(String[] args) { SpringApplication.run(ConsumerApp.class, args); } }

【Ribbon客户端】2·配置方式设置Ribbon的负载均衡策略
  • 在yml中配置
#配置方式设置Ribbon的负载均衡策略 EUREKA_PROVIDER: #设置服务提供方 的应用名称 ribbon: NFloadBalanceRuleClassName: com.netflix.loadbalancer.RandomRule #策略类

    推荐阅读