gateway功能:
-
身份认证和权限校验
-
服务路由(访问哪一个服务),负载均衡(服务之间Ribbon)
-
对用户请求限流
gateway的技术实现:
-
gateway
-
zuul
*zuul是基于servlet的实现,属于阻塞式编程,
*SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能
网关搭建的步骤
-
创建项目,引入nacos服务发现和gateway的依赖
<!--gateway starter依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--Nacos的服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> -
配置application.yml,包括服务基本信息,nacos地址,路由
-
路由:
-
路由id, 路由的唯一标识
-
路由目标uri: 路由的目标地址,http代表固定地址,lb代表根服务名据负载均衡
-
路由断言(predicates);判断路由的规则
-
路由过滤器(filters):对请求或者响应做处理。
-
server
路由断言工厂Route Predicate Factory
-
作用:
-
判断用户的断言规则,然后解析成对应的判断条件,用户请求过来做判断
-
-
在我们的配置文件中写的断言只是字符串,这些字符串会被Predicate Factory 读取并解析,转变为判断路由的判断条件
-
这样的断言工厂在SpringCloudGateway还有十几个
-
路由过滤器 GatewayFilter
-
GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理。
-
过滤器的作用是什么?
-
对路由的请求或者响应做加工处理,比如添加请求头
-
配置在路由下的过滤器只对当前路由的请求生效
-
-
defaultFilter的作用是什么?
-
对所有路由都生效的过滤器
-
全局过滤器GlobalFilter
-
全局过滤器的作用也是处理一切是进入网关的请求和微服务响应,与GatewayFilter的作用一样。
-
区别在于GatewayFilter通过配置定义,处理逻辑是固定的,
-
GlobalFilter的逻辑需要自己写代码实现。
-
定义方式是实GlobalFilter接口。
package cn.itcast.gateway;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import java.lang.annotation.Annotation;
//@Order(-1)
-
order值越小,优先级越高
-
当order值一样时,顺序是defaultFilter最先,然后是局部的路由过滤器,最后是全局过滤器
网关的CORS跨域
-
跨域:域名不一致,主要包括:
-
域名不同:
-
域名相同,端口不同:
-
跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题。
-
解决方案:CORS
-
spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码