Ribbon负载均衡策略
  cCuitpmOqlQw 2023年11月02日 52 0


Ribbon负载均衡策略

Ribbon的负载均衡策略是由 IRule 接口定义, 该接口由如下实现:
在jar包:​​​com.netflix.ribbon#ribbon-loadbalancer​​中;

Ribbon负载均衡策略_spring

要使用ribbon实现负载均衡,在Spring 的配置类里面把对应的负载均衡接口实现类作为一个Bean配置一下就行了,即像下面这样:

/**
* 更改负载均衡策略,默认是ZoneAvoidanceRule策略
*
* @return
*/
@Bean
public IRule iRule(){
return new NacosRule();
}

负载均衡的入口:​​ILoadBalancer​​接口;

@Bean
public IRule iRule(){
return new RoundRobinRule();
}

负载均衡实现

策略

RandomRule

随机

RoundRobinRule

轮询

AvailabilityFilteringRule

先过滤掉由于多次访问故障的服务,以及并发连接数超过阈值的服务,然后对剩下的服务按照轮询策略进行访问

WeightedResponseTimeRule

根据平均响应时间计算所有服务的权重,响 应时间越快服务权重就越大被选中的概率即 越高,如果服务刚启动时统计信息不足,则 使用RoundRobinRule策略,待统计信息足够会切换到该WeightedResponseTimeRule策略

RetryRule

先按照RoundRobinRule策略分发,如果分发到的服务不能访问,则在指定时间内进行重试,然后分发其他可用的服务

BestAvailableRule

先过滤掉由于多次访问故障的服务,然后选择一个并发量最小的服务

ZoneAvoidanceRule (默认)

综合判断服务节点所在区域的性能和服务节点的可用性,来决定选择哪个服务

如果我们没有指定负载均衡策略,ribbon默认的负载均衡是ZoneAvoidanceRule,自定义负载均衡策略:

public class MyNacosRule extends AbstractLoadBalancerRule {
@Override
public void initWithNiwsConfig(IClientConfig clientConfig)
{//基本上不需要实现}

@Override
public Server choose(Object key) {//实现该方法}
}

配置文件配置负载均衡策略:(可以直接配置配置文件实现负载均衡)

远程服务名称.ribbon.NFLoadBalancerRuleClassName=com.bjpowernode.ribbon.MyNacosRule


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  ehrZuhofWJiC   2024年04月26日   38   0   0 日志Java
  Fo7woytj0C0D   2023年12月23日   31   0   0 pythonsedidepythonidesed
cCuitpmOqlQw