快捷搜索: 长连接 前端 源码 pan

Java基础之《微服务(4)—负载均衡ribbon》

一、什么是ribbon

1、ribbon介绍 (1)ribbon是一个基于http和tcp的客户端负载均衡工具,它是基于Netflix Ribbon实现的。 (2)它不像springcloud服务注册中心、配置中心、API网关那样独立部署,但是它几乎存在于每个springcloud微服务中。包括feign提供的声明式服务调用也是基于该ribbon实现的。 (3)ribbon默认提供很多种负载均衡算法,例如轮询、随机等等。甚至包括自定义的负载均衡算法。 (4)他解决并提供了微服务的负载均衡的问题。

3、ribbon的架构图 集中式负载均衡:

进程内负载均衡:

二、负载均衡策略

1、轮询策略(默认)(RoundRobinRule)RoundRobinRule 轮询策略表示每次都顺序取下一个provider,比如一共有5个provider,第1次取第1个,第2次取第2个,以此类推。

2、权重轮询策略—WeightedResponseTimeRule (1)根据每个provider的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性越低。 (2)原理:一开始为轮询策略,并开启一个计时器,每30秒收集一次每个provider的平均响应时间,当信息足够时,给每个provider附上一个权重,并按权重随机选择provider权重越高的provider会被高概率选中。

3、随机策略(RandomRule) 从provider列表中随机选择一个provider。

4、最少并发数策略(BestAvailableRule) 选择正在请求中的并发数最小的provider,除非这个provider在熔断中。

5、在“选定的负载均衡策略”基础上进行重试机制(RetryRule) (1)“选定的负载均衡策略”这个策略是轮询策略RoundRobinRule。 (2)该重试策略先设定一个阈值时间段,如果在这个阈值时间段内当选择provider不成功,则一直尝试采用“选定的负载均衡策略:轮询策略”最后选择一个可用的provider。A失败了会去重试B。

6、可用性敏感策略(AvailabilityFilteringRule) 过滤性能差的provider,有两种: 第一种,过滤掉在erueka中一直处于连接失败的provider 第二种,过滤掉高并发的provider

7、区域敏感性策略(ZoneAvoidanceRule) (1)以一个区域为单位考察可用性,对于不可用的区域整个丢弃,从剩下区域中选可用的provider。 (2)如果这个ip区域内有一个或多个实例不可达或响应变慢,都会降低该ip区域内其他ip被选中的权重。

8、代码设置负载均衡策略 在springboot启动类中添加:

@Bean
	public IRule ribbonRule() {
		return new RandomRule();
	}

9、配置文件设置负载均衡策略

#设置负载均衡策略
provider-NAME.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

三、点对点直连,开发调试ribbon

1、剔除eureka 2、加入ribbon依赖包 3、修改配置文件

#禁用eureka
ribbon.eureka.enabled=false
#指定具体的服务实例清单
provider-NAME.ribbon.listOfServers=192.168.10.61:8081
经验分享 程序员 微信小程序 职场和发展