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

2021-04-15  本文已影响0人  _River_
文章知识来源主要来源于:赵俊夫先生的博客  以下为原文链接
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 模块下
上一篇下一篇

猜你喜欢

热点阅读