微服务 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 模块下