美文网首页
微服务 7: 集成服务网关 SpringCloud Robin

微服务 7: 集成服务网关 SpringCloud Robin

作者: _River_ | 来源:发表于2021-04-15 15:34 被阅读0次
    文章知识来源主要来源于:赵俊夫先生的博客  以下为原文链接
    https://blog.csdn.net/u011177064/category_9572944.html
    
    1:什么是负载均衡
    在服务网关中同一个服务下多个节点  可以提供一样的服务职能
    那么对于多个节点 是怎么实现请求压力的分摊。
    
    使用Nacos里默认集成了 Ribon 负载均衡组件
    
    2:准备多个相同的服务
    建立服务service-provice-demo-other
    
    把service-provice-demo的所有配置pom与yml 完全copy一份
    
    在两个服务分别新增以下接口
    
     //service-provice-demo新增接口
    @RestController
    @Slf4j
    public class NacosRobin {
    
        @GetMapping(value = "/loadBanlance/print")
        public String print() {
            log.info(new Date()+"调用:我是服务 service-provider-demo");
            return "我是服务 service-provider-demo";
        }
       
    }
    
     //service-provice-demo-other新增接口
    @RestController
    @Slf4j
    public class NacosRobin {
    
        @GetMapping(value = "/loadBanlance/print")
        public String print() {
            log.info(new Date()+"调用:我是服务 service-provider-demo-other");
            return "我是服务 service-provider-demo-other";
        }     
    }
    
    3:测试
    启动服务gateway
    启动服务service-provice-demo
    启动服务service-provice-demo-other
    
    多次请求以下接口 
    http://127.0.0.1:9000/nacos-provider/loadBanlance/print
    
    发现调用接口的返回信息  是一个平权轮询的规则
    
    4:Nacos 自定义负载均衡策略
     轮训策略:
     发现每次请求都不一样
    

    权重策略:
    下面为该服务节点的默认权重 都为1
    
    1:先把其中一个服务 service-provice-demo 的权重改为2 
    2::在gateway启动类添加以下代码  重启服务:
    3:重新进行重复请求
     
     发现权重越高 获取请求的次数越多
    

    @SpringBootApplication
    //@EnableDiscoveryClient
    public class GatewayApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(GatewayApplication.class, args);
        }
    
        /**
         * 轮训策略
         * @return
         */
        @Bean
        @Scope(value="prototype")
        public IRule loadRoundBalanceRule(){
            return new RoundRobinRule();
        }
    
        /**
         * 权重策略
         * @return
         */
        @Bean
        @Scope(value="prototype")
        public IRule loadNacosBalanceRule(){
            return new NacosRule();
        }
    
    }
    
    轮训策略
    权重策略
    只能选择其中一个策略

    项目连接

    请配合项目代码食用效果更佳:
    项目地址:
    https://github.com/hesuijin/spring-cloud-alibaba-project
    Git下载地址:
    https://github.com.cnpmjs.org/hesuijin/spring-cloud-alibaba-project.git
    
    在gateway  模块下
    在service-provice-demo  模块下
    在service-provice-demo-other 模块下
    

    相关文章

      网友评论

          本文标题:微服务 7: 集成服务网关 SpringCloud Robin

          本文链接:https://www.haomeiwen.com/subject/vrndlltx.html