Gateway网关-网关作用介绍
网关的技术实现
在SpringCloud中网关的实现包括两种:
gateway
zuul
zuul是基于Servlet的实现,属于阻塞式编程,而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于应式编程的实现,具备更好的性能
网关作用:
对用户请求做身份认证,权限校验
将用户请求路由搭配微服务,并实现负载均衡
对用户请求做限流
Gateway网关-快速入门
1.创建信的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖:
<dependencies> <!-- nacos服务注册依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 网关依赖gateway依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> </dependencies>
2.编写路由配置nacos地址
server: port: 10010 spring: application: name: gateway cloud: nacos: server-addr: localhost:8848 # nacos地址 gateway: routes: - id: user-server #路由表示 必须唯一 uri: lb://userserver # 路径的目标地址 predicates: # 路由断言,判断请求是否符合规则 - Path=/user/** #路由断言。判断路由是否是以/user开头,如果是则复合规则 - id: order-server uri: lb://orderserver predicates: - Path=/order/**
搭建网关服务
Gateway网关-路由断言工厂
网关路由可以配置的内容包括:
路由id:路由唯一标示
uri:路由目的地,支持lb和http两种
predicates:路由断言,判断请求是否符合要求,符合则转发路由目的地
filters:路由过滤器,处理请求响应
路由断言工厂Route Predicate Factory
我们在配置文件中写的断言规则只是字符串,这些字符串会被Predicate Factory读取并处理,转变为路由判断的
咧如:Path=/user/**是按照路径匹配,这个规则是由
像这样的断言工厂在SoringCloudGateway还有十几个
路由断言工厂Route Predicate Factory
Spring提供11种基本的Predicate工厂:
Gateway网关-路由过滤器配置
路由过滤器GatewayFilter
GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理
过滤器工厂 GatewayFilterFactory
Spring提供了31中不同的路由过滤器工厂,咧如:
默认过滤器
如果要对所有的路由都生效,则可以将过滤器工厂写到default下
server: port: 10010 spring: application: name: gateway cloud: nacos: server-addr: localhost:8848 # nacos地址 gateway: routes: - id: user-server #路由表示 必须唯一 uri: lb://userserver # 路径的目标地址 predicates: # 路由断言,判断请求是否符合规则 - Path=/user/** #路由言。判断路由是否是以/user开头,如果是则复合规则 - id: order-server uri: lb://orderserver predicates: - Path=/order/** default-filters: # 全局过滤器 - AddRequestHeader=Truth,Itcast is freaking awesome! #添加请求头
总结:
过滤器的作用是什么?
对路由的请求或响应做加工处理,比如添加请求头
defaultFilters的作用是什么?
对所有路由都生效的过滤器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类