使用Ribbon实现负载均衡

1.1、什么是Ribbon

Ribbon是Netflix发布的负载均衡器,Ribbon是基于某种负载均衡算法,自动地帮助服务消费者去请求,它默认为我们提供了很多地负载均衡算法如:轮询、随机等等。我们也可以为Ribbon实现自定义地负载均衡算法。

当Ribbon和Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务者实例。

  1. 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
经验分享 程序员 微信小程序 职场和发展