API 网关:微服务的大门卫

概述

你已经把系统拆成了多个微服务:用户服务、订单服务、商品服务......一切看起来很美好。

但很快,新问题来了:

  • 客户端(App、网页)要记住每个服务的地址?
  • 每个服务都要自己处理登录验证?
  • 怎么防止恶意请求攻击某个服务?
  • 想做个访问统计,得去每个服务里加代码?

这就像一栋大楼有十几个门,访客不知道该走哪个,保安也得在每个门口站岗------太乱了!

这时,你需要一个大门卫 来统一管理进出,它就是:API 网关(API Gateway)

什么是 API 网关

API 网关 是所有客户端访问微服务的唯一入口

它不提供业务功能,而是负责转发请求、安全管理、监控流量

复制代码
客户端 → [API 网关] → 用户服务
              ↓
            订单服务
              ↓
            商品服务

API 网关的 5 大职责

1. 路由转发

客户端不再需要知道每个服务的地址。

  • 请求 /api/users → 转发给 用户服务
  • 请求 /api/orders → 转发给 订单服务
  • 请求 /api/products → 转发给 商品服务

对外只暴露一个域名(如 api.yourapp.com),内部怎么拆,客户端不用管。

2. 身份认证

网关可以统一检查用户是否登录(如验证 JWT Token)。

text 复制代码
客户端请求 → 带上 Token → 网关验证 → 通过则放行,否则拒绝

好处:每个微服务不用重复写鉴权逻辑,专注业务。

3. 限流与熔断

防止有人恶意刷接口(比如一秒发 1000 个请求)。

  • 限流:每人每秒最多 10 次请求,超了就拒绝
  • 熔断:某个服务挂了,网关快速失败,不一直重试

保护后端服务不被压垮。

4. 日志与监控

网关可以记录:

  • 谁在访问?
  • 访问了什么?
  • 响应时间多长?

这些数据可用于:

  • 分析用户行为
  • 发现性能瓶颈
  • 告警异常流量

5. 请求聚合

有些页面需要同时调用多个服务(如首页要展示用户信息 + 最近订单 + 推荐商品)。

网关可以:

  • 接收一个请求
  • 同时调用多个服务
  • 把结果合并后返回

减少客户端请求次数,提升加载速度

没有网关 vs 有网关

场景 没有 API 网关 有 API 网关
客户端调用 直接连各个服务,地址分散 只连网关,统一入口
权限校验 每个服务自己验证 网关统一验证
限流防护 每个服务自己实现 网关集中控制
服务变更 客户端可能要改代码 内部调整,客户端无感
监控分析 分散在各服务 集中收集,全局视图

常见的 API 网关工具

工具 特点
Kong 开源、插件丰富、基于 Nginx
Traefik 云原生友好,自动发现 Docker 服务
Nginx + Lua 高性能,灵活定制
Spring Cloud Gateway Java 生态,适合 Spring Boot 项目
AWS API Gateway 云服务商提供,免运维

新手推荐从 TraefikKong 入手,集成 Docker 非常方便

总结

API 网关不是"功能服务",而是"治理中枢"

它让微服务架构更安全、更整洁、更易维护。

相关推荐
Code知行合壹8 分钟前
Kubernetes微服务DevOps
微服务·kubernetes·devops
来不及辣哎呀8 分钟前
学习Java第六十二天——Hot 100-09-438. 找到字符串中所有字母异位词
java·开发语言·学习
linsa_pursuer15 分钟前
移动零算法
java·算法
Dxy123931021623 分钟前
Elasticsearch 8.13.4 关键词如何高亮显示
大数据·elasticsearch
LJ979511124 分钟前
重塑媒体关系:你的品牌需要一个智能发布引擎
大数据
lihao lihao27 分钟前
模板进阶
java·数据结构·算法
李迟28 分钟前
2025年12月个人工作生活总结
大数据·elasticsearch·生活
山风wind33 分钟前
Spring中责任链模式的工业级应用简单剖析
java·spring·责任链模式
小北方城市网33 分钟前
第 10 课:Python 全体系实战整合与职业进阶指南(完结篇)
大数据·开发语言·数据库·python
Element_南笙1 小时前
BUG:ModuleNotFoundError: No module named ‘milvus_lite‘
java·服务器·数据库