1.1、什么是Ribbon
Ribbon是Netflix发布的负载均衡器,Ribbon是基于某种负载均衡算法,自动地帮助服务消费者去请求,它默认为我们提供了很多地负载均衡算法如:轮询、随机等等。我们也可以为Ribbon实现自定义地负载均衡算法。
当Ribbon和Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务者实例。

- Ribbon的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
1、为RestTemplate添加@LoadBalanced注解:使其具备负载均衡的能力;

2、controller层代码

3、Ribbon支持的负载均衡策略:
| 策略类 | 命名 | 描述 |
| RandomRule | 随机策略 | 随机选择server |
| RoundRobinRule | 轮询策略 | 按照顺序选择server(ribbon默认策略) |
| RetryRule | 重试策略 | 在一个配置时间段内,当选择server不成功,则一直尝试选择一个可用的server |
| BestAvailableRule | 最低并发策略 | 逐个考察server,如果server断路器打开,则忽略,再选择其中并发链接最低的server |
| AvailabilityFilteringRule | 可用过滤策略 | 过滤掉一直失败并被标记为circuit tripped的server,过滤掉那些高并发链接的server(active connections超过配置的阈值) |
| ResponseTimeWeightedRule | 响应时间加权重策略 | 根据server的响应时间分配权重,响应时间越长,权重越低,被选择到的概率也就越低。响应时间越短,权重越高,被选中的概率越高,这个策略很贴切,综合了各种因素,比如:网络,磁盘,io等,都直接影响响应时间 |
| ZoneAvoidanceRule | 区域权重策略 | 综合判断server所在区域的性能,和server的可用性,轮询选择server并且判断一个AWS Zone的运行性能是否可用,剔除不可用的Zone中的所有server |
本文详细介绍了Ribbon负载均衡器的工作原理及与Eureka的配合使用方式。Ribbon由Netflix发布,可为服务消费者自动选择服务提供者。文章列举了Ribbon支持的各种负载均衡策略,包括随机、轮询、重试等策略。
2182





