Ribbon学习
Ribbon学习
Ribbon概念
Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具。
概念说:主要提供客户端的软件负载均衡算法和服务调用,Ribbon客户端组件提供一系列完善的配置项,如连接超时、重试等
代码说:Ribbon通过配置文件中列出Load Balancer(负载均衡)所有的机器,自动基于某种规则(简单轮询、随机连接等)去连接这些机器,让我们很容易的实现自定义负载均衡算法。
添加依赖
springcloud 2020.0.x版本后默认使用的spring-cloud-starter-loadbalancer,我们需要移除他,添加Ribbon依赖
<!--Eureka Client依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<!--移除默认使用的spring-cloud-starter-loadBalancer-->
<!--<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</exclusion>
</exclusions>-->
</dependency>
<!--添加Ribbon依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<!--在springcloud 2020.0.x版本已经剔除了ribbon,所以要显示的指定版本-->
<version>2.2.8.RELEASE</version>
</dependency>
Ribbon默认负载规则替换
Ribbon默认为轮询策略,以下代码修改为随机策略
注意:定义的配置类一定不能放在@ComponentScan能扫描的位置,官方提醒
配置类
@Configuration
public class MySelfRule {
@Bean
public IRule getRule(){
//指定随机轮询
return new RandomRule();
}
}
启动类
@SpringBootApplication
@EnableEurekaClient
//name:指定服务提供者,configuration:自定义的策略配置类
@LoadBalancerClient(name = "PAYMENT-SERVICE",configuration= MySelfRule.class)
public class ApplicationOrder {
public static void main(String[] args) {
SpringApplication.run(ApplicationOrder.class,args);
}
}
主要功能
通过RestTemplate+ @LoadBalanced 注解实现服务调用负载均衡,可参考以上进行代码进行默认策略修改
定义RestTemplate
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced //开启负载均衡
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
使用RestTemplate
//getForEntity方式:会返回整个响应的内容,包括状态码、响应头、响应体等
ResponseEntity<AjaxResult> forEntity =
restTemplate.getForEntity(PAYMENT_URL + "list", AjaxResult.class);
return forEntity.getBody();
//getForObject方式:只返回结果json串
AjaxResult forEntity =
restTemplate.getForObject(PAYMENT_URL + "paymentById/{id}", AjaxResult.class,id);
return forEntity;

浙公网安备 33010602011771号