SpringCloud负载均衡之Ribbon

spring cloud 负载均衡

Ⅰ、负载均衡之Ribbon

1、Ribbon入门
  1. Ribbon 是进程内的本地负载均衡,在调用微服务的时候,会在注册中心上获取注册信息服务列表缓存至本地jvm,从而在本地实现RPC远程服务调用技术。主要实现是负载均衡+RestTemplate服务调用

  2. 客户端负载均衡的组件,可以和其他客户端结合使用

    例如:Eureka+Ribbon

  3. Ribbon 负载原理(负载策略:轮询、随机和响应时间加权)

    1. 第一步选择EurekaServer,优先选择在同一区域负载较少的server
    2. 第二部根据用户指定的策略,从server列表中获取一个地址
  4. Eureka client中集成了Ribbon 或者自己引入pom

        <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
  5. Ribbon重要组件IRule(七种负载策略)

    1. 新建Ribbon的IRuleConfig(在启动类@ComponentScan扫描不到的地方,新建包目录创建新的策略规则,默认是轮询)
    2. MyRule重新定义策略
      在这里插入图片描述
    /**
     * Ribbon 策略
     * 
     * RandomRule随机策略
     * RoundRobinRule轮询策略
     * RetryRule重试策略
     * BestAvailableRule最低并发策略
     * AvailabilityFilteringRule可用过滤策略
     * ResponseTimeWeightedRule响应时间加权重策略
     * ZoneAvoidanceRule区域权重策略
     * */
    @Configuration
    public class MyIRule {
        @Bean
        public IRule myRule(){
            IRule iRule ;//选择一种
            iRule = new RandomRule();
            iRule = new RoundRobinRule();
            iRule = new RetryRule();
            iRule = new BestAvailableRule();
            iRule = new AvailabilityFilteringRule();
            iRule = new ResponseTimeWeightedRule();
            iRule = new ZoneAvoidanceRule();
            return iRule ;
        }
    }
    1. 主启动类增加
    @SpringBootApplication
    @EnableEurekaClient
    @EnableDiscoveryClient
    @RibbonClient(name = "EUREKA-CLIENT-PROVIDER",configuration = MyIRule.class)
    public class EurekaorderApplication {
        public static void main(String[] args) {
    SpringApplication.run(EurekaorderApplication.class, args);
        }
    }
策略类描述
RandomRule随机策略随机选择server
RoundRobinRule轮询策略按照顺序选择server(ribbon默认策略)
RetryRule重试策略在一个配置时间段内,当选择server不成功,则一直尝试选择一个可用的server
BestAvailableRule最低并发策略逐个考察server,如果server断路器打开,则忽略,再选择其中并发链接最低的server
AvailabilityFilteringRule可用过滤策略过滤掉一直失败并被标记为circuit tripped的server,过滤掉那些高并发链接的server(active connections超过配置的阈值)
ResponseTimeWeightedRule响应时间加权重策略根据server的响应时间分配权重,响应时间越长,权重越低,被选择到的概率也就越低。响应时间越短,权重越高,被选中的概率越高,这个策略很贴切,综合了各种因素,比如:网络,磁盘,io等,都直接影响响应时间
ZoneAvoidanceRule区域权重策略综合判断server所在区域的性能,和server的可用性,轮询选择server并且判断一个AWS Zone的运行性能是否可用,剔除不可用的Zone中的所有server

2、Ribbon解析

  1. 负载均衡算法轮询:N(次)%M(台)=I -> rest接口第几次请求数%服务器总数量=实际服务器位置下标
  2. 可自己重写算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值