zoukankan      html  css  js  c++  java
  • 【Ribbon篇四】Ribbon核心组件IRule(3)

    Ribbon在工作时分为两步:

    • 先选择 EurekaServer,它优先选择在同一个区域内负载较少的Server;
    • 再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址;

    其中Ribbon提供了多种策略,比如轮询、随机、根据响应时间加权。

    一、Ribbon算法的介绍

    Ribbon的源码地址:https://github.com/Netflix/ribbon

    IRule:根据特定算法中从服务器列表中选取一个要访问的服务,Ribbon默认的算法为轮询算法。

    Ribbon中的7种负载均衡算法:

    • RoundRobinRule:轮询;
    • RandomRule:随机;
    • AvailabilityFilteringRule:会先过滤掉由于多次访问故障而处于断路器状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问;
    • WeightedResponseTimeRule:根据平均响应时间计算所有服务的权重,响应时间越快的服务权重越大被选中的概率越大。刚启动时如果统计信息不足,则使用RoundRobinRule(轮询)策略,等统计信息足够,会切换到WeightedResponseTimeRule;
    • RetryRule:先按照RoundRobinRule(轮询)策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用的服务;
    • BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务;
    • ZoneAvoidanceRule:复合判断Server所在区域的性能和Server的可用性选择服务器;

     二、配置指定的负载均衡算法

    1. 打开microservicecloud-consumer-dept-80消费者工程,修改配置类ConfigBean

    //配置负载均衡的策略为随机,默认算法为轮询算法
    @Bean
    public IRule lbRule() {
        //return new RoundRobinRule();
        return new RandomRule();
    }

    2. 重启消费者服务,访问:http://localhost/consumer/dept/get/1;查看到随机访问到3个生产者服务。

  • 相关阅读:
    Android px,dp,pt,sp的差别
    C 八皇后
    线性表
    android 推断手机是否支持前置摄像头
    C/C++易错难点笔记01
    Java日志记录的5条规则
    hdoj-1312-Red and Black
    oracle 11g sql developer安装后无法使用
    显示指定时间的秒数
    云端自动化测试方案
  • 原文地址:https://www.cnblogs.com/myitnews/p/11623420.html
Copyright © 2011-2022 走看看