目录
SpringGateway网关
奈非框架简介
什么是网关
网关的主要功能有
Spring Gateway简介
网关路由配置
动态路由
早期(2020年前)奈非提供的微服务组件和框架受到了很多开发者的欢迎
这些框架和SpringCloud Alibaba的对应关系我们要了解
现在还有很多旧项目维护是使用奈非框架完成的微服务架构
Nacos对应Eureka都是注册中心
Dubbo对应Ribbon+feign都是实现微服务远程RPC调用的组件
Sentinel对应Hystrix都是做项目限流熔断降级的组件
Gateway对应Zuul都是网关组件
Gateway框架不是阿里写的,是Spring提供的
"网"指网络,"关"指关口或关卡
网关:就是指网络中的关口\关卡
网关就是当前微服务项目的"统一入口"
程序中的网关就是当前微服务项目对外界开放的统一入口
所有外界的请求都需要先经过网关才能访问到我们的程序
提供了统一入口之后,方便对所有请求进行统一的检查和管理
路由的近义词就是"分配"
我们使用Spring Gateway作为当前项目的网关框架
Spring Gateway是Spring自己编写的,也是SpringCloud中的组件
SpringGateway官网
Spring Cloud Gatewayhttps://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/
对当前项目所有服务器添加路由配置信息
server:
port: 9000
spring:
application:
name: gateway
cloud:
nacos:
discovery:
# 网关也是微服务项目的一部分,所以也要注册到Nacos
server-addr: localhost:8848
gateway:
# routes就是路由的意思,在此处配置是一个数组类型
routes:
- id: gateway-shanghai
uri: lb://shanghai
predicates:
- Path=/sh/**
# 数组类型中编写 "-"开头,表示是一个数组元素
# id表示当前路由的名称,没有和其他任何出现过的名字关联,和之后的内容也没有关联
- id: gateway-beijing
# 当前路由配置的路由目标配置,也就是路由路径
# lb是LoadBalance的缩写,beijing是路由目标服务器的名称
uri: lb://beijing
# 下面编写路由条件\规则,也就是满足什么样的路径会访问beijing服务器
# 我们要配置内置断言来配置路径路径 predicates(断言)
predicates:
# 断言其实就是满足某个条件时做什么操作的设置
# predicates和routes类似,也是一个数组类型
# ↓ P大写!!!!! 表示以/bj/开头的请求都会路由到beijing服务器
- Path=/bj/**
# spring.cloud.gateway.routes[0].uri
# spring.cloud.gateway.routes[0].predicates[0]
上面的yml配置了bejing和shanghai项目的路由信息
我们使用
http://localhost:9000/bj/show可以访问beijing服务器的资源
http://localhost:9000/sh/show可以访问shanghai服务器的资源
以此类推,再有很多服务器时,我们都可以仅使用9000端口号来将请求路由到正确的服务器
就实现了gateway成为项目的统一入口的效果
网关项目随着微服务数量的增多
gateway项目的yml文件配置会越来越多,维护的工作量也会越来越大
所以我们希望gateway能够设计一套默认情况下自动路由到每个模块的路由规则
这样的话,不管当前项目有多少个路由目标,都不需要维护yml文件了
这就是我们SpringGateway的动态路由功能
配置文件中开启即可
server:
port: 9000
spring:
application:
name: gateway
cloud:
nacos:
discovery:
# 网关也是微服务项目的一部分,所以也要注册到Nacos
server-addr: localhost:8848
gateway:
discovery:
locator:
# 这就是开启动态路由的配置,动态路由配置默认是关闭的,需要手动开启才能生效
# 动态路由生成规则为:在网关端口号后先写要路由到的目标服务器在nacos注册的名称
# 再编写具体路径
# 例如 localhost:9001/bj/show -> localhost:9000/beijing/bj/show
enabled: true
按上面修改完配置之后
我们可以重启gateway来测试动态路由路径是否生效
动态路由生成规则为:在网关端口号后先写要路由到的目标服务器在nacos注册的名称,再编写具体路径