zoukankan      html  css  js  c++  java
  • Ribbon核心组件IRule及配置指定的负载均衡算法

    Ribbon在工作时分为两步:

    第一步:先选择 EurekaServer,它优先选择在同一个区域内负载较少的Server;

    第二步:再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址;

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

    一、Ribbon算法的介绍

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

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

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

    (1)RoundRobinRule:轮询;

    (2)RandomRule:随机;

    (3)AvailabilityFilteringRule:会先过滤掉由于多次访问故障而处于断路器状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问;

    (4)WeightedResponseTimeRule:根据平均响应时间计算所有服务的权重,响应时间越快的服务权重越大被选中的概率越大。刚启动时如果统计信息不足,则使用RoundRobinRule(轮询)策略,等统计信息足够,会切换到WeightedResponseTimeRule;

    (5)RetryRule:先按照RoundRobinRule(轮询)策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用的服务;

    (6)BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务;

    (7)ZoneAvoidanceRule:复合判断Server所在区域的性能和Server的可用性选择服务器;

    ribbion的负载均衡算法结构:

     

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

    1、打开消费者工程,增加如下的配置:

    @Configuration
    public class ConfigBean
    {
        @Bean
        @LoadBalanced //Ribbon 是客户端负载均衡的工具;
        public RestTemplate getRestTemplate()
        {
            return new RestTemplate();
        }
    
        //配置负载均衡的策略为随机,默认算法为轮询算法
        @Bean
        public IRule myRule()
        {
            //return new RoundRobinRule();
            return new RandomRule();  
        }      
    }

     2、启动类增加 @EnableEurekaClient 注解

    @SpringBootApplication
    @EnableEurekaClient     //本服务启动后自动注册到eureka中
    public class DeptProvider8001_App
    {
        public static void main(String[] args)
        {
            SpringApplication.run(DeptProvider8001_App.class, args);
        }
    }

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

     

  • 相关阅读:
    2017.04.05-2017.07.14封闭开发总结
    Android读取Manifest文件下Application等节点下的metadata自定义数据
    MyEclipse Hibernate Reverse Engineering 找不到项目错误
    web服务器决定支持多少人同时在线的因素
    配置servers时,错误:Setting property 'source' to 'org.eclipse.jst.jee.server:hczm' did not find a matching property
    查看端口被占用
    高德开发 android 出现 key 鉴权失败
    Android EventBus
    javascript 中的数据驱动页面模式
    读书笔记之
  • 原文地址:https://www.cnblogs.com/yufeng218/p/10952590.html
Copyright © 2011-2022 走看看