Ribbon负载均衡的使用

举报
酸菜鱼. 发表于 2022/07/12 08:59:23 2022/07/12
【摘要】 本文介绍了Ribbon的使用及分析,希望大佬在看完之后可以做自己定义的负载均衡,如果对此感兴趣的话,快来看看吧

🚕Ribbon负载均衡策略

跟进上面的rule,rule,规则,即负载均衡的规则,有以下几种

public class BaseLoadBalancer extends AbstractLoadBalancer implements PrimeConnectionListener, IClientConfigAware {
    private static Logger logger = LoggerFactory.getLogger(BaseLoadBalancer.class);
    private static final IRule DEFAULT_RULE = new RoundRobinRule();//这里的rule默认值是一个`RoundRobinRule`的类型
    private static final BaseLoadBalancer.SerialPingStrategy DEFAULT_PING_STRATEGY = new BaseLoadBalancer.SerialPingStrategy((SyntheticClass_1)null);
    private static final String DEFAULT_NAME = "default";
    private static final String PREFIX = "LoadBalancer_";
    protected IRule rule;
    protected IPingStrategy pingStrategy;
    protected IPing ping;

在这里插入图片描述

在这里插入图片描述

RoundRobinRule(轮询策略):按照一定的顺序依次调用服务实例。多个服务轮流访问。它是Ribbon默认的负载均衡规则。
RandomRule(随机策略):从服务提供者的列表中随机选择一个服务实例
WeightedResponseTimeRule(权重策略):根据每个服务提供者的响应时间分配⼀个权重,响应时间越长,权重越小,被选中的可能性也就越低。
RetryRule(重试策略):按照轮询策略来获取服务,如果获取的服务实例为 null 或已经失效,则在指定的时间之内不断地进行重试来获取服务,如果超过指定时间依然没获取到服务实例则返回 null
AvailabilityFilteringRule(可⽤敏感性策略):先过滤掉⾮健康的服务实例,然后再选择连接数较⼩的服务实例。
ZoneAvoidanceRule(区域敏感策略):根据服务所在区域(zone)的性能和服务的可⽤性来选择服务实例,在没有区域的环境下,该策略和轮询策略类似。
BestAvailableRule(最小连接数策略):也叫最小并发数策略,它是遍历服务提供者列表,选取连接数最小的⼀个服务实例。如果有相同的最⼩连接数,那么会调⽤轮询策略进行选取。即忽略那些短路的服务器,并选择并发数较低的服务器。
在这里插入图片描述

🚙自定义负载均衡策略

我们需要在order-service中的OrderApplication类中,定义一个新的IRule:

@Bean
public IRule randomRule(){
    return new RandomRule();
}

配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则:

userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 

🚎Ribbon设置饥饿加载

Ribbon默认是采用懒加载,就是第一次访问的时候才会去创建LoadBalanceClient,这样的情况下会导致请求时间很长,影响我们的使用效率。

而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,以下是开启饥饿加载的配置

ribbon:
  eager-load:
    enabled: true
    clients: userservice

本文到此结束,希望能帮到各位小伙伴儿👏👏
如果文章有什么需要改进的地方还请大佬多多指教🤞🤞
以下是我的V信,欢迎加入我们的圈子🎉🎉
再次感谢各位大佬😘😘
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。