Ribbon
- Ribbon 是 Netflix 提供的一个基于Http和Tcp的客户段负载均衡工具
- 服务端负载均衡
- 负载均衡算法在服务端
- 由负载均衡器维护服务地址列表
- 客户端负载均衡
- 负载均衡算法在客户端
- 客户端维护服务地址列表
Ribbon简化远程调用
- Ribbon可以简化RestTemplate的远程调用
- 实现步骤
- 1.在声明Restemplate的@Bean的时候添加注解 @LoadBalanced
package com.itheima.consumer.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestemplateConfig {
//加上这个注解
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
- 2.在使用restTemplate发起请求时,需要定义url时,host:port可以替换为服务提供方的应用名称 例如:EUREKA-PROVIDER
Ribbon负载均衡
- 随机:RandomRule
- 轮询:RoundRobinRule
- 最小并发:BestAvailableRule
- 过滤:AvailabilityFilteringRule
- 响应时间:WeightedResponseTimeRule
- 轮询重试:RetryRule
- 性能可用性:ZoneAvoidanceRule
Ribbon负载均衡配置(默认轮询策略)
1·编码方式设置Ribbon的负载均衡策略
- 1.创建一个配置类MyRule
package com.itheima.consumer.config;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyRule {
@Bean
public IRule rule(){
return new RandomRule();
}
}
- 2.在应用程序启动类中添加配置
package com.itheima.consumer;
import com.itheima.consumer.config.MyRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
/**
* 启动类
*/
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient //激活DiscoveryClient
/**
* 配置Ribbon负载均衡策略
* name:设置 服务提供方的 应用名称
* configuration: 设置 负载均衡的Bean
*/
@RibbonClient(name = "EUREKA_PROVIDER", configuration = MyRule.class)
public class ConsumerApp {
public static void main(String[] args) {
SpringApplication.run(ConsumerApp.class, args);
}
}
2·配置方式设置Ribbon的负载均衡策略
- 在yml中配置
#配置方式设置Ribbon的负载均衡策略
EUREKA_PROVIDER: #设置服务提供方 的应用名称
ribbon:
NFloadBalanceRuleClassName: com.netflix.loadbalancer.RandomRule #策略类
网友评论