• 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

    完美!

  • 相关阅读:
    小希的迷宫
    不下降序列
    Stones on the Table
    glsl之纹理演示
    glsl之多重纹理演示
    6.12
    这狗日的生活
    小楼一夜听春雨,天下谁人不识君?
    lua 调用C/C++
    D3DFVF_XYZ和D3DFVF_XYZRHW的区别
  • 原文地址:https://www.cnblogs.com/newAndHui/p/10622851.html
Copyright © 2020-2023  润新知