共计 1138 个字符,预计需要花费 3 分钟才能阅读完成。
内置规则
- RoundRobinRule:系统默认规则,也是用的较多的一种规则。通过简单的轮询服务列表来选择服务器,其他的规则在很多情况下仍然使用 RoundRobinRule。
- AvailabilityFilteringRule:顾名思义,有效性过滤规则。该规则会忽略一下服务器:无法连接的服务器:在默认情况下,如果 3 次连接失败,该服务器将会被置为“短路”的状态,该状态将持续 30 秒,如果再次连接失败,“短路”状态的持 续 时 间 将 会 以 几 何 级 增 加。可 以 通 过 修 改 niws.loadbalancer<clientName>.connectionFailureCountThreshold 属性,来 配置连接失败的次数。
高并发数过高的服务器:如果连接到该服务器的并发数过高,也会被这个规则忽略,可以通过修改 <clientName>.ribbon.ActiveConnectionsLimit 属性来设定最高并发数。 - WeightedResponseTimeRule:为每个服务器赋予一个权重值,服务器的响应时间 越长,该权重值就是越少,这个规则会随机 选择服务器,这个权重值有可能会决定 服务器的选择。
- ZoneAvoidanceRule:该规则以区域、可用服务器为基础,进行服务器选择。使用 Zone 对服务器进行分类,可以理解为机架或者机房。
- BestAvailableRule:忽略“短路”的服务器,并选择并发数较低的服务器。
- RandomRule:顾名思义,随机选择可用的服务器。
- RetryRule:含有重试的选择逻辑,如果使用 RoundRobinRule 选择服务器无法连 接,那么将会重新选择服务器。
代码配置
/**
* 该类为 Ribbon 的配置类
* 注意:该类不能放在主应用程序上下文 @ComponentScan 所扫描的包中,否则配置将会被所有 Ribbon Client 共享。*/
@Configuration
public class RibbonConfiguration {
@Bean
public IRule ribbonRule() {
// 负载均衡规则,改为随机
return new RandomRule();}
}
属性配置(推荐)
属性配置的优先级高于代码配置。
shop-provider-user:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
饥饿加载
默认情况下 Ribbon 是懒加载的——首次请求 Ribbon 相关类才会初始化,这会导致首次请求过慢的问题,你可以配置饥饿加载,让 Ribbon 在应用启动时就初始化。
ribbon:
eager-load:
enabled: true
# 多个用, 分隔
clients: shop-provider-user
正文完
发表至:无分类
2019-09-19