Spring Cloud Ribbon是基于Netflix Ribbo实现的一套客户端负载均衡的工具。
简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组建提供一系列完善的配置项,如连接超时,重试等。Ribbon会自动的帮助你基于负载均衡算法(如简单轮询,随机连接等)去连接这些机器。
2.2.1Ribbon的常见负载均衡策略
策略名称 | 策略对应的类名 | 实现原理 |
轮询策略(默认) | RoundRobinRule | 轮询策略表示每次都顺序取下一个provider,比如一共有5个provicer,第1次取第1个,第2取第2个,第3次取第3个,以此类推 |
权重轮询策略 | WeightedResponseTimeRule |
|
随机策略 | RandomRule | 从provider列表中随机选择一个provider |
最少并发数策略 | BestAvailiableRule | 选择正在请求中的并发数最小的provider,除非这个provider在熔断中。 |
轮询+重试机制 | RetryRule | 轮询+重试的策略,首先会尝试通过轮询方式获取服务实例,如果获取的服务实例不可用那么尝试重新获取,重试有一个时间限制,如果超过了deadline(默认500ms)还是没取到,则会返回一个null。 |
可用性敏感策略 | AvailabilityFilteringRule | 过滤性能差的provider,有2种: 第一种:过滤掉在eureka中处于连接失败的provider 第二种:过滤掉高并发的provider |
区域敏感性策略 | ZoneAvoidanceRule |
|
2.2.2 Ribbon与Eureka结合工作原理图: