微服务神经中枢:API Gateway

API Gateway 是微服务架构中的核心组件之一,作为系统的统一流量入口,负责请求路由、安全管控、流量协调等功能,有效简化了客户端与复杂微服务拓扑的交互,是保障微服务架构稳定性、安全性与可管理性的关键基础设施,是系统的神经中枢。

核心功能

1. 智能路由与流量调度

作为“交通枢纽”,Gateway是所有请求的第一入口,将流量精准、高效地导向后端服务

  • 智能路由:根据请求路径、方法、头部等进行静态规则匹配,将请求路由至目标服务。
  • 负载均衡:与服务中心(如Nacos、Eureka)联动,动态感知服务实例的上下线与健康状态,并结合轮询、权重、哈希等策略实现客户端负载均衡。
2. 统一安全防护

作为"免疫系统",Gateway统一处理认证、授权、加密和威胁防护;

  • 身份认证:集中校验请求身份,支持OAuth 2.0、JWT、API密钥等多种模式。
  • 权限控制:基于角色或策略,对API、方法乃至数据字段进行精细访问控制。
  • 威胁防护:提供基础的防攻击能力,如应对重放攻击、SQL注入尝试等。
3. 可观测性数据入口

作为"感知器官",Gateway收集所有进出系统的流量数据,为监控、日志、追踪提供统一入口;

  • 指标(Metrics):自动生成请求量、延迟、错误率等黄金指标,并暴露给Prometheus。
  • 日志(Logging):详细记录访问日志,并可与追踪ID关联,便于问题排查。
  • 链路追踪(Tracing):为每个请求注入或传递唯一追踪ID(如X-Request-ID),串联起跨服务的调用链。
4. 弹性流量治理

作为“弹性盾牌”,网关在流量洪峰和依赖故障时,为后端服务提供关键的保护层;

  • 限流:通过令牌桶或漏桶算法限制请求频率,防止服务过载。
  • 熔断与降级:实时监控下游服务的健康状况,达到阈值时快速熔断并返回预设的降级响应,避免系统雪崩。
  • 超时与重试:配置可重试的错误类型和超时时间,提升请求最终成功率。
5. 请求/响应转换

作为“适配器”,Gateway实现协议与数据的转换,简化客户端与异构后端服务的交互;

  • 协议转换:在HTTP/1.1、HTTP/2、gRPC、WebSocket等协议间进行桥接。
  • 内容改写:对请求/响应的头部、参数、体进行增删改,或完成数据转换(如XML转JSON)。
  • API聚合:聚合多个后端服务响应,以单次客户端请求实现复杂业务,降低开销。

网关搭建步骤

1. 创建项目,引入nacos服务发现和gateway依赖

2. 配置application.yml,包括服务基本信息、nacos地址、路由;

路由配置

1. 路由四大核心配置
  1. 路由ID:路由的唯一标识符。
  2. 目标URI:路由的目标地址。http:// 代表固定URL,lb://服务名 代表从注册中心发现并负载均衡。
  3. 路由断言:定义匹配请求的条件(如路径、Header),只有满足所有条件的请求才会进入此路由。
  4. 路由过滤器:用于处理请求和响应的逻辑(如修改Header、添加参数)。
2. 路由断言工厂

3. 路由过滤器

过滤器的作用:对路由的请求或响应做加工处理。

1>Gatewayfilter:在路由配置中通过 filters 定义。

2>DefaultFilter:在Spring配置中通过 spring.cloud.gateway.default-filters 定义。

3>GlobelFilter:实现 GlobalFilter 接口的Bean,可自定义过滤逻辑。

过滤器执行顺序:所有过滤器的执行顺序完全由 order 值决定,值越小优先级越高。当order值相同时,默认顺序为:GatewayFilter → DefaultFilter → GlobalFilter

  • 每个过滤器都必须指定一个int类型的order值,order值越小,优先级越高,执行顺序越靠前。
  • GlobalFilter通过实现Ordered接口,或者添加@Order注解来指定order值,由我们自己指定
  • 路由过滤器和defaultFilter的order由Spring指定,默认是按照声明顺序从1递增。
  • 当过滤器的order值一样时,会按照 defaultFilter >路由过滤器>GlobalFilter的顺序执行。

网关跨域问题

当域名不同或者域名相同、端口不同时,浏览器就会禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截。通常采用CORS方案,只需简单配置即可解决;

另外,如果配置需要更复杂的动态逻辑(例如根据请求动态决定是否允许跨域),可以通过编写全局过滤器实现。

调用流程示例  

  1. 以 HTTP 请求为例:
  2. 1.请求接入:客户端向 Gateway 的暴露端点发起请求。
  3. 2.安全与治理:Gateway 依次执行安全链(验证 API Key 或 JWT 令牌)与治理链(限流、熔断判断)。若任一环节失败,则直接返回错误响应。
  4. 3.路由转发:通过安全校验后,Gateway 根据路由断言匹配规则,从服务发现中心获取健康实例列表,并利用负载均衡算法确定目标服务实例,转发请求。
  5. 4.后置处理:Gateway 接收后端服务的响应,按需执行协议转换、数据格式统一、响应头修改或API结果聚合,并统一异常格式。
  6. 5.响应与观测:将最终响应返回客户端(如 JSON 格式)。与此同时,全程的访问日志、性能指标与链路追踪数据已被收集。

常见 API Gateway 工具  

Spring Cloud Gateway:当前技术栈首选,文中示例使用的技术。
Kong/APISIX:基于 OpenResty,插件化架构支持扩展。  
Nginx:通过反向代理和 Lua 脚本实现简易网关功能。
等等............

API Gateway 的设计需平衡灵活性与性能,根据业务需求选择合适的技术栈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值