Ribbon——负载均衡

一、什么是Ribbon

Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。

二、负载均衡策略

Ribbon的负载均衡规则是一个叫做IRuIe的接口来定义的,每一个子接口都是一种规则:

Ribbon——负载均衡_第1张图片

RandomRule:随机策略

RoundRobinRule:轮询

ZoneAvoidanceRule:默认策略

三、如何修改负载均衡的策略——IRule

上面看到了所有的负载均衡策略都是通过IRule接口实现的所以,第一种方式可以在启动类中重新定义一个IRule注入到Bean中--然后在新的类中的指定我们的新策略(这种方式是全局的一旦配置,全局将使用这种方式)

//例如:默认的负载均衡策略为轮询  我们想要改为随机
//在启动类中重新注入一个新规则
@Bean
public IRule randomRule(){
	return new RandomRule();
}

第二种方式:通过配置文件去配置负载均衡的规则(可以指定某个服务)

#指定某一个服务进行某一种策略     #NFLoadBalancerRuleClassName  类名
#服务名
service1:
	ribbon:
		NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #随机策略

四、Ribbon 饥饿加载

基于懒汉饿汉的思维

当我们使用Ribbon进行负载均衡的时候 发现 第一次的请求往往很费时间 是第二次或者后面请求时间的十几二十倍 这是为什么呢?

这是因为 Ribbon默认采用懒加载方式:即第一次访问的时候才去创建LoadBalanceClient,请求时间很长,之后的请求时间就很短

饥饿加载:饥饿加载会在项目启动时创建,降低第一次访问的耗时 配置饥饿加载——在配置文件中配置

ribbon:
	eager-load:
		enable: true #开启饥饿加载
		clients: service #指定对某一个服务使用饥饿加载   #service  服务名称

========================================================================
ribbon:
	eager-load:
		enable: true #开启饥饿加载
		clients: 
			- service1 #指定对某些服务使用饥饿加载   #service  服务名称
			- service2
			- service3

你可能感兴趣的:(Nacos,负载均衡,ribbon,运维)