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

    完美!

  • 相关阅读:
    统计nginx日志里访问次数最多的前十个IP
    while 格式化输出 运算符 字符编码
    Python 软件安装
    Python 基础
    Typora 基础的使用方法
    Django ORM (四) annotate,F,Q 查询
    Django 惰性机制
    Django ORM (三) 查询,删除,更新操作
    Django ORM (二) 增加操作
    Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
  • 原文地址:https://www.cnblogs.com/newAndHui/p/10622851.html
Copyright © 2011-2022 走看看