Ribbon负载均衡

tech2024-01-01  72

Ribbon负载均衡

什么是Ribbon?

Ribbon是Netflix提供的一个基于HTTP和TCP的客户端负载均衡工具导入Eureka依赖后无需再导入Ribbon的依赖

Ribbon的主要两个功能

简化远程调用负载均衡

服务端负载均衡

负载均衡算法在服务端

由负载均衡维护服务地址列表

客户端负载均衡

负载均衡算法在客户端

客户端维护服务地址列表

简化RestTemplate远程调用

步骤:

在声明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自带负载均衡,默认负载均衡策略为轮询

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 #策略类
最新回复(0)