当前位置: 首页 > news >正文

网关-微服务网关入门

网关-微服务网关入门

在微服务架构中,网关(Gateway) 是一个非常重要的组件,它位于客户端与微服务之间,作为所有请求的统一入口。网关的主要作用是对请求进行路由、过滤、限流、鉴权、负载均衡等操作,从而简化客户端与微服务之间的交互逻辑。


一、网关的作用

功能说明
路由转发(Routing)根据请求路径将请求转发到对应的微服务
统一入口(API Entry)所有请求都经过网关,避免客户端直接调用多个服务
身份认证(Authentication)在网关层做统一的鉴权,如 JWT 校验
权限控制(Authorization)控制不同用户或角色对 API 的访问权限
限流(Rate Limiting)限制单位时间内请求次数,防止系统过载
熔断与降级(Circuit Breaker)当服务不可用时,返回默认响应,提升系统稳定性
日志记录(Logging)记录请求日志,便于监控和审计
协议转换(Protocol Translation)如 HTTP 转 gRPC、WebSocket 等
负载均衡(Load Balancing)请求分发到多个服务实例,提高可用性

二、常见的网关实现方案

网关类型说明适用场景
Spring Cloud GatewaySpring 官方推荐的网关,基于 WebFluxSpring Cloud 微服务架构
Zuul(Netflix)Netflix 开源的同步网关(已过时)旧版 Spring Cloud 项目
Kong基于 Nginx 的高性能网关,支持插件扩展企业级 API 管理、高并发场景
Envoy由 Lyft 开源,支持多种协议,适合云原生服务网格(Service Mesh)环境
Nginx + Lua使用 Lua 脚本扩展 Nginx 实现网关功能高性能、低延迟场景
Traefik支持自动服务发现,与 Kubernetes 集成良好云原生、K8s 环境

三、Spring Cloud Gateway 的核心概念

1. Route(路由)

  • 定义了请求如何转发到具体的服务。
  • 包含:ID、目标 URI、断言(Predicate)、过滤器(Filter)等。

2. Predicate(断言)

  • 用于匹配请求是否符合路由条件。
  • 示例:路径、方法、Header、Query 参数等。

3. Filter(过滤器)

  • 对请求和响应进行拦截处理。
  • 可用于鉴权、限流、日志记录等。

四、Spring Cloud Gateway 示例配置(application.yml

spring:cloud:gateway:routes:- id: user-serviceuri: lb://user-servicepredicates:- Path=/api/user/**filters:- StripPrefix=1- AuthFilter- id: order-serviceuri: lb://order-servicepredicates:- Path=/api/order/**filters:- StripPrefix=1
  • id:路由唯一标识
  • uri:目标服务地址,lb 表示使用负载均衡
  • predicates:路由匹配规则(如路径)
  • filters:请求过滤器(如鉴权、限流)

五、自定义过滤器(Filter)

@Component
public class AuthFilter implements GatewayFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {String token = exchange.getRequest().getHeaders().getFirst("Authorization");if (token == null || !token.startsWith("Bearer ")) {exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();}// 验证 token 合法性(如 JWT 解析)return chain.filter(exchange);}@Overridepublic int getOrder() {return 0; // 过滤器顺序}
}
  • 在请求进入具体服务前进行身份验证
  • 可结合 JWT、OAuth2、Spring Security 等实现统一鉴权

六、网关在微服务架构中的位置

[客户端] → [网关(Gateway)] → [微服务A]、[微服务B]、[微服务C]
  • 所有请求必须经过网关
  • 网关负责将请求路由到正确的服务
  • 网关可集中处理安全、限流、日志等通用逻辑

七、网关的部署方式

部署方式说明
单实例部署简单,适合小型项目
集群部署提高可用性和性能
Kubernetes Ingress在 K8s 中使用 Ingress 作为网关
API 网关 + 服务网格在 Istio 等服务网格中作为外部入口

八、总结:网关的核心价值

价值说明
统一入口所有请求都通过网关进入系统
安全控制集中处理身份认证、权限控制
服务治理限流、熔断、负载均衡
日志监控统一记录请求日志,便于分析
协议兼容支持多种协议转换
灵活扩展可通过插件或自定义 Filter 扩展功能

九、推荐使用场景

  • 微服务数量较多,需要集中管理 API
  • 需要统一鉴权、限流、日志记录
  • 使用 Spring Cloud 技术栈
  • 需要支持动态路由和服务发现
  • 需要高并发、高性能的 API 管理能力

如果使用 Spring Boot + Spring Cloud 构建微服务系统,Spring Cloud Gateway 是一个非常推荐的选择,它与 Spring 生态集成良好,支持响应式编程模型,具备高性能和可扩展性。

http://www.dtcms.com/a/286071.html

相关文章:

  • 数据交易“命门”:删除权与收益分配的暗战漩涡
  • 包管理工具npm cnpm yarn的使用
  • uniapp基本使用
  • 碰一碰发视频系统源码搭建与碰碰贴写文案,写好评定制化开发:支持OEM
  • 归一化波动率指标
  • 解密文本格式的魔力世界
  • 正则表达式,Collection集合,迭代器
  • Java Set 集合详解:从基础语法到实战应用,彻底掌握去重与唯一性集合
  • mysql 性能优化入门
  • 控制鼠标和键盘
  • 完美解决Linux服务器tomcat开机自启动问题
  • Python爬虫实战:研究http-parser库相关技术
  • 操作符学习(1)
  • mysql not in 查询引发的bug问题记录
  • Microsoft 365 Adoption Score功能深度解析:驱动企业数字化转型的利器
  • 网安-DNSlog
  • 第三章自定义检视面板_创建自定义编辑器类_检测与应用修改(本章进度(2/9))
  • 可靠消息最终一致性分布式事务解决方案
  • 补贴退坡、平价上网,数字隔离器如何守护更高功率的光伏逆变器?
  • 门控线性单元GLU (Gated Linear Unit)
  • ApplicationContext 事件发布与监听机制详解
  • 反射机制的登录系统
  • PHP 8.0 升级到 PHP 8.1
  • 创建型模式
  • 基于 HT 的 3D 可视化智慧矿山开发实现
  • 从一开始的网络攻防(四):XSS
  • hadoop(服务器伪分布式搭建)
  • FastAdmin后台登录地址变更原理与手动修改方法-后台入口机制原理解析-优雅草卓伊凡
  • Hadoop安全机制深度剖析:Kerberos认证与HDFS ACL细粒度权限控制
  • 《Web安全之深度学习实战》读书笔记总结