- 参考官方资源
- Home · Netflix/ribbon Wiki (github.com)
- 6. 客户端负载均衡器:功能区 (spring.io)
- 负载均衡策略
-
内置负载均衡规则类 规则描述 RoundRobinRule 简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。 AvailabilityFilteringRule 对以下两种服务器进行忽略:(1)在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。(2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数的上限,可以由客户端的<clientName>.<clientConfigNameSpace>.ActiveConnectionsLimit属性进行配置。 WeightedResponseTimeRule 为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。 ZoneAvoidanceRule 以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。 BestAvailableRule 忽略那些短路的服务器,并选择并发数较低的服务器。 RandomRule 随机选择一个可用的服务器。 RetryRule 重试机制的选择逻辑
-
- 可以通过java代码定义IRule实现可以修改负载均衡规则,将负载均衡规则修改为随机选择算法
-
/** * 根据java代码修改负载均衡规则,注入Bean * * @return 返回负载均衡规则 */ @Bean public IRule randomRule() { // 使用随机选择算法 return new RandomRule(); }
-
- 可以通过配置文件application.yml的方式定义IRule实现可以修改负载均衡规则,将负载均衡规则修改为随机选择算法
-
# 给某个微服务配置ribbon负载均衡规则,这里配置的服务是user-service服务 user-service: ribbon: # 配置随机选择的负载均衡规则 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
-
- 启动服务时开启饥饿加载方式
- Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间相对较长。而饥饿加载则会在项目启动时就创建,这样可以降低第一次访问的耗时,通过下面配置可以开启饥饿加载
-
ribbon: eager-load: enabled: true # 配置服务的列表,这个是填写提供接口的服务名称 clients: user-service
-
- Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间相对较长。而饥饿加载则会在项目启动时就创建,这样可以降低第一次访问的耗时,通过下面配置可以开启饥饿加载