我们建立一个项目,依赖如下:
我们引入了actuator监控组件,eureka组件, 可以看到我们没有引入spring-boot-starter-web这个依赖,是因为gateway这个项目较为特殊。
图中我们引入了gateway组件,第二个组件是redis的组件,这个用于限流使用。
因为这个实例是建立在有eureka服务的基础上,所以yml文件中需要有eureka的相关配置,因为本次的实例是连接eureka自动创建路由,所以我们配置为enabled:true
我们启动eureka服务,然后启动几个feigh,然后启动gateway服务,然后访问gateway的actuator查看下:
可以看到gateway的访问地址 但是这个地址访问是看不到页面的,应该是
地址/routes
我们将路由规则json给格式化可以看得更清晰一点,可以看到有这样的匹配规则,我们试着访问gateway的这个接口可以看到是可以访问到的:
可以看到我们点击两次请求,发现请求到了同一个服务的不同实例,就证明gateway给我们的服务做了负载均衡了。但是为什么服务是大写的呢?按照我们的书写习惯一般是用小写的,我们去看下eureka注册中心可以看到:
可以看到在注册中心就是大写的名字。
那么如果想要小写的,可以这么配置:
注意:配置完之后,就是小写了,大写的就无法访问!!
添加路由
下面是所有的路由规则,注意,如果在上面配置了路径是小写,那么在下面动态添加路由规则的时候 uri中的路径也必须是小写的,否则无法访问!!!
下面是我们要添加的路由信息的post接口,其中dynamic是我们要添加的路由id名称
添加的json数据中,order是排序号,uri后面的lb意思是我们采用负载均衡策略,然后后面的链接是我们需要访问到的Eureka实例地址 predicateds中的args中的值 /dynamic 是我们要访问的地址路径。 filter是在访问路径中做一些过滤。
删除路由
接口采用的restful规则,所以删除的话就直接改为DELETE调用即可