网关的主要功能有
SpringGateway网关是一个依赖,不是一个软件
所以我们要使用它的话,必须先创建一个SpringBoot项目
这个项目也要注册到Nacos注册中心,因为网关项目也是微服务项目的一个组成部分
POM依赖
org.springframework.cloud spring-cloud-starter-gateway
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud spring-cloud-starter-loadbalancer
yaml配置文件
server:port: 9000
spring:application:name: gatewaycloud:nacos:discovery:# 网关也是微服务项目的一部分,所以也要注册到Nacosserver-addr: localhost:8848gateway:# routes就是路由的意思,这是属性是一个数组类型,其中的值都是数组元素routes:# 数组元素配置中,-开头表示一个数组元素的开始,后面所有内容都是这个元素的内容# id表示当前路由的名称,和任何之前出现过的名字没有任何关联,唯一的要求就是不要后之后的id重复- id: gateway-beijing# 下面的配置是路由的目标,也就是目标的服务器名称# lb是LoadBalance的缩写,beijing是服务器名称uri: lb://beijing# predicates是断言的意思,就是满足某个条件时,去执行某些操作的设置predicates:# predicates也是一个数组,配置断言的内容# 这个断言的意思就是如果访问的路径是/bj/开头(**表示任何路径),# 就去访问上面定好的beijing服务器# ↓ P一定要大写!!!!!!!- Path=/bj/**
# spring.cloud.gateway.routes[0].uri
# spring.cloud.gateway.routes[0].predicates[0]
动态路由
网关项目的配置会随着微服务模块数量增多而变得复杂,维护的工作量也会越来越大
所以我们希望gateway能够设计一套默认情况下自动路由到每个模块的路由规则
这样的话,不管当前项目有多少个路由目标,都不需要维护yml文件了
这就是我们SpringGateway的动态路由功能
server:port: 9000
spring:application:name: gatewaycloud:nacos:discovery:# 网关也是微服务项目的一部分,所以也要注册到Nacosserver-addr: localhost:8848gateway:discovery:locator:# 开启网关动态路由配置# 默认的路由规则:在网关端口号后先编写要路由到的目标服务器注册在Nacos的名称# 再编写具体路径# 例如 localhost:9001/bj/show -> localhost:9000/beijing/bj/showenabled: true