SpringCloud微服务组件-负载均衡ribbon
一.定义
ribbon [?r?b?n] 是服务间通信的负载均衡工具。他提供了完善的超时重试机制。我们可以在客户端配置文件中列出负载均衡的服务节点,ribbon会帮我们实现负载均衡算法去调用这些微服务。
Ribbon这个负载均衡是基于客户端的负载均衡,而不是服务端的负载均衡。比如nginx就是基于服务端的负载均衡。
负载均衡:负载均衡可以把请求按照一定的规定分摊到后面的服务器集群,从而达道集群高可用以及处理并发的目的
服务端的负载均衡:
客户端的负载均衡:会从本地调用eureka,获得对应的微服务节点,虽然再发起通信。 简单总结就是: ribbon = RestTemplate + LoadBalance ,这两者需要结合起来使用。
二.使用方式
2.1 使用步骤
1.引入ribbon依赖 在配置注册中心eureka客户端的时候,引入的依赖就包含了ribbon依赖 2.在restTemplate调用的方法上加入@LoadBalanced注解
2.2 实现多种负载均衡算法
2.1.1 第一种方式
双机shift,搜索IRULE,可以看到这是一个用于提供负载均衡的接口,可以自定义去设置不同的负载均衡算法。 其中最常用的是RoundRobinRule和WeightedResponseTimeRule,一个是轮询,一个是加权轮询。
自定义负载均衡规则,只需要实现IRule这个接口并重写方法即可:
@Configuration
public class MyRule {
@Bean
public IRule irule() {
return new RandomRule();
}
}
注意:自定义的规则要放在一个独立的包,要不然被目前的容器扫描到后,那么所有的ribbon负载均衡策略都会被这个自定义的影响。
所以需要开启@RibbonClient,让其指定自定义规则:
@RibbonClient(name = "SERVICE-USER", configuration = MyRule.class)
2.1.2 第二种方式
# 配置指定ribbon的规则
service-user:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
2.2 配置重试机制
1.pom中引入retry依赖
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
2.yml配置
ribbon:
ConnectTimeout: 5000
ReadTimeout: 5000
MaxAutoRetries: 1
MaxAutoRetriesNextServer: 2
3.设置日志级别
logging:
level:
root: debug
|