最近想学习spring-cloud相关,因为想改造旧项目,想着不改变接口访问路径和参数的情况下,改造服务端,所以先学了网关,开始想学zuul,了解到zuul是阻塞的,gateway是非阻塞的,并且gateway多大流量访问支持更加,所以就入手学了gateway,直接来个极简的gateway
新建项目
idea创建boot项目
选择2.7.14,增加web和gateway的依赖
生成完成,即得到了最简的项目
修改配置文件
接下来就是更改application.properties为application.yaml,这样配置起来更直观
server:
port: 8010
spring:
cloud:
gateway:
routes:
- id: test_1
uri: http://localhost:8020
predicates:
- Path=/test/**
- Weight=group,2
- id: test_2
uri: http://localhost:8030
predicates:
- Path=/test/**
- Weight=group,8
id-必须唯一
uri为转发的地址
predicates为转发规则
path为拦截的路径
weight为转发权重,group为组名,2和8为转发权重,如果多个id拦截相同路径来分配的话,需要设置相同的组。
还有常用的order来设置匹配先后,这个有点像aop的order
其他的暂时没有用到,暂不提
测试
新建两个测试项目
都添加测试类
@RestController
@RequestMapping("/test")
public class Test {
@GetMapping("/t")
public String test(){
return "测试2";
}
}
@RestController
@RequestMapping("/test")
public class TestCtr {
@GetMapping("/t")
public String test(){
return "测试";
}
}
接下来访问 http://localhost:8010/test/t,结果就会在“测试”和“测试2”中切换,但是“测试”出现几率较大,至此,极简版网关已经完成