什么是Ribbon?
1.Ribbon是一个负载均衡的客户端。支持负载均衡,失败重试,ping等功能。
2.因为Ribbon是在httpclient基础上进行封装,所以Ribbon也可以看做http客户端。
整合Ribbon:
1.pom文件中添加:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>RELEASE</version>
</dependency>
2.配置文件:
server:
port: 8004
spring:
application:
name: spring-cloud-ribbon
cloud:
config:
discovery:
enabled: true
service-id: spring-cloud-config-server
profiles:
active: dev
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
3.RestTemplate调用方式:
1).启动类中添加:
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
2).使用RestTemplate发送请求。
**(Ribbon默认使用轮询策略)**
4.配置类:
//设置负载均衡策略
@Configuration
public class MySelfRule {
@Bean
public IRule getRule(){
//指定随机轮询
return new RandomRule();
}
}
5.启动类添加注解,指定配置类:
1).@LoadBalancerClient(name = "PAYMENT-SERVICE",configuration= MySelfRule.class)
2).开启Eureka客户端注解:@EnableEurekaClient
Ribbon的策略:
IRule有很多默认的实现类,这些实现类根据不同的算法和逻辑来处理负载均衡:
BestAvailableRule 选择最小请求数
ClientConfigEnabledRoundRobinRule 轮询
RandomRule 随机选择一个server
RoundRobinRule 轮询选择server
RetryRule 根据轮询的方式重试
WeightedResponseTimeRule 根据响应时间去分配一个weight ,weight越低,被选择的可能性就越低
ZoneAvoidanceRule 根据server的zone区域和可用性来轮询选择
如何修改Ribbon的策略:
1.配置文件中添加:
#应用名称
PRODUCT:
#ribbon
ribbon:
#指定Ribbon的策略选择 必须写全路径
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
总结:
1.Ribbon是在httpclient基础上进行了封装,支持负载均衡、失败重试、ping等功能。
2.Ribbon同样是一个项目,需要引入相关依赖和配置。
3.Ribbon默认策略为 轮询。
4.负载均衡的作用就是对计算机资源进行分配,减少单台计算机的资源占用。解决单点故障,高性能等问题。