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

一、什么是ribbon

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

2、负载均衡解决方案的分类
目前业界主流的负载均衡方案可分为两类:
第一类:集中式负载均衡,即在服务的消费方和提供方之间使用独立的负载均衡设施(可以是硬件,如F5,也可以是软件,如nginx),由该设施把访问请求通过某种策略转发至服务的提供方;
第二类:进程内负载均衡,将负载均衡逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一台合适的服务器。
ribbon就属于后者,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值