Ribbon 负载均衡
Spring Cloud Ribbon 是基于NetFlix Ribbon实现的一套客户端负载均衡的工具。
LB(Load Banlancer)负载均衡分为两种:
- 集中式LB:偏硬件
在服务的消费方和提供方之间使用独立的LB设置(可以使硬件例如F5,或者软件例如nginx),由该设施通过某种策略把访问请求转发给服务的提供方。
- 进程式LB:偏软件
将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己在从这些地址中选择一个合适的服务器。 Ribbon就属于进程式LB,它是一个类库,集成于消费方进程,消费方通过Ribbon获取服务方的地址。
配置方式:
- 引入maven坐标(springboot2.0以上不需要,eureka-client客户端自带)
- 在启动类增加注解
(springboot2.0以上不需要)@EnableEurekaClient
- 在Resttemplate组件上增加注解
@LoadBalanced
- Ribbon默认的调用方式是轮询,也可以通过设置来改变负载均衡的调用方式或者实现自定义的算法。
再实现自定义配置类ConsumerRibbonConfig:@EnableDiscoveryClient @SpringBootApplication @RibbonClient(name = "tourism-consumer", configuration = ConsumerRibbonConfig.class) public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } /** * 配置RestTemplate */ @LoadBalanced @Bean public RestTemplate getRestTemplate() { return new RestTemplate(); } }
@Configuration public class ConsumerRibbonConfig { @Bean public IRule consumerRibbonRule(){ //此处改为随机调用,可自定义算法 return new RandomRule(); } }