什么是Ribbon?
Ribbon是Netflix提供的一个基于HTTP和TCP的客户端负载均衡工具导入Eureka依赖后无需再导入Ribbon的依赖负载均衡算法在服务端
由负载均衡维护服务地址列表
负载均衡算法在客户端
客户端维护服务地址列表
步骤:
在声明restTemplate的Bean时候,需要添加一个注解:@LoadBalanced
@Configuration public class RestTemplateConfig { @LoadBalanced//远程调用 @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }在使用restTemplate发起请求时,需要定义url时,host:port可以替换为服务提供方的应用名称
String url = "http://localhost:8000/goods/findOne/"+id;RIbbon自带负载均衡,默认负载均衡策略为轮询
Ribbon负载均衡策略:
随机:RandomRule
轮询:RoundRobinRule
最小并发:BestAvailableRule
过滤:AvailabilityFilteringRule
响应时间:WeightedResponseTimeRule
轮询重试:RetryRule(默认10次)
性能可用性:ZoneAvoidanceRule
设置负载均衡策略:
编码
@Configuration public class MyRule { @Bean public IRule rule(){ //配置为随机 return new RandomRule(); } }在启动类加上RibbonClient注解
配置Ribbon的负载均衡策略:
name:设置提供方的应用名称
configuration:设置负载均衡的Bean
@RibbonClient(name = "EUREKA-PROVIDER",configuration = MyRule.class)配置
EUREKA-PROVIDER: #服务提供方的应用名称 ribbon: NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #策略类