网关路由
2026年3月11日大约 2 分钟
网关路由
网关(Gateway)是微服务架构中的一个重要组件,负责处理客户端请求并将其路由到相应的微服务。网关不仅提供了统一的入口,还可以实现负载均衡、安全认证、请求过滤等功能。
SpringCloud中,提供两种网关实现
- SpringCloudGateway:基于Spring的WebFlux技术,完全支持响应式编程,吞吐能力更强
- Netflix Zuul:基于Servlet技术,支持传统的阻塞式编程模型,适合小规模应用
快速使用
- 创建微服务网关模块
- 添加
spring-cloud-starter-gateway和nacos-discovery依赖: - 编写启动类
- 配置网关路由规则
spring:
application:
name: gateway-service
cloud:
nacos:
server-addr: localhost:8848
gateway:
routes:
- id: example # 路由规则id,自定义,唯一
uri: lb://example-service # 路由的目标服务,lb代表负载均衡,会从注册中心拉取服务列表
predicates: # 路由断言,判断当前请求是否符合当前规则,符合则路由到目标服务
- Path=/examples/** # 这里是以请求路径作为判断规则路由属性
id:路由规则的唯一标识,自定义uri:路由的目标地址,可以是具体的URL,也可以是服务名称(使用lb://前缀表示从注册中心拉取服务列表进行负载均衡)predicates:路由断言,判断当前请求是否符合当前规则,符合则路由到目标服务。filters:路由过滤器,对请求进行预处理或后处理,例如添加请求头、修改响应等。
路由断言
路由断言是用来判断当前请求是否符合某个规则的条件,常见的路由断言见下图
图:常见路由断言
路由过滤器
路由过滤器是用来对请求进行特殊处理的组件,常见的路由过滤器见下图
图:常见路由过滤器