zoukankan      html  css  js  c++  java
  • SpringCloud-day06-Ribbon负载均衡

    6.3.Ribbon负载均衡

    为了模拟负载均衡,启动多个服务提供者,只是端口号不一样,实际生产中只需要部署在不同的服务器上即可,

    我们这里以修改端口号的方式来模拟,所以新建模块ticket-provider-6002,ticket-provider-6003 与 ticket-provider-6001一样,唯一不同的只是端口号不一样

    模块建立好后按照如下步骤配置:

    注意:本质上相当于复制两个ticket-provider-6001修改端口号即可

    第一步:pom.xml ,每个pom.xml的依赖都与ticket-provider-6001的一样,直接复制ticket-provider-6001的即可

    第二步:复制 6001 的application.yml到 6002 和 6003,修改端口和实例名称,直观样式如下

    第三步:6002,6003都复制6001的代码,启动类名称对应的改下;

      为了测试演示用,在服务提供中添加一行数据,用于标注服务来源

    配置完成!

    第四步:测试

    先启动:先启动三个eureka集群,在启动三个服务提供者,最后启动消费者。 

    先测试服务提供者:

    http://localhost:6001/ticket/list

    http://localhost:6002/ticket/list

    http://localhost:6003/ticket/list

    看看是否有结果;

    再测试下 eureka:

    http://eureka7001.wfd360.com:7001/

     出现如下效果说明服务集群正常:

     

     最后测试消费者:

    http://localhost/ticket/list 

    多刷新几次 看控制台或者页面显示的预设置的信息,我们看到 有默认的轮询策略,访问对应的服务提供者;

    但是这种默认的轮询策略肯定是不能满足实际需求的,比如有3个服务提供者,突然挂了一个,这样的话,默认轮询 ,总有1/3的概率访问失败;

    注意在测试的时候可以手动的停止一个服务提供者,然后在访问消费者,刚开始总有1/3的概率失败,而继续刷新则不会出现,因为ribbon不会再去访问那个停掉的服务

    所以我们看下ribbon默认给我们提供的策略有哪些;

     Ribbon框架按照不同需求,已经为我们实现了许多实现了IRule接口的实现类,适用于常用的负载均衡规则。以下规则能够实现大部分负载均衡需求的应用场景,如果有更复杂的需求,可以自己实现IRule。

    代码中实现负载均衡策略

    服务消费端 SpringCloudConfig配置类  

    指定IRule实现:

    /**
         * 自定义轮询算法
         * 忽略哪些短路的服务器,并选择并发数较低的服务器。
         *
         * @return
         */
        @Bean
        public IRule myRule() {
            return new BestAvailableRule();
        }

    这里我们演示用 BestAvailableRule,其它大家可以自行测试;

    用法非常简单;

    Ribbon就说到这里,

    springCloud课程与代码下载:https://www.cnblogs.com/newAndHui/p/13210228.html

    完美!

  • 相关阅读:
    另一种保证单次插入回文自动机复杂度的做法
    loj #6070. 「2017 山东一轮集训 Day4」基因
    求第一类斯特林数的一行
    NOIP2018游记
    HDU3377 Plan
    【BZOJ】1830: [AHOI2008]Y型项链
    【BZOJ】1832: [AHOI2008]聚会
    【BZOJ】1831: [AHOI2008]逆序对
    【BZOJ】1085: [SCOI2005]骑士精神
    【BZOJ】1798: [Ahoi2009]Seq 维护序列seq
  • 原文地址:https://www.cnblogs.com/newAndHui/p/10622851.html
Copyright © 2011-2022 走看看