news 2026/7/3 15:20:22

分布式架构-网关(Gateway)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分布式架构-网关(Gateway)

如果是Java Web 前后端分离 + 分布式架构,网关(Gateway)是整个系统最重要的组件之一。

下面按照企业级项目来介绍,而不是物联网场景。


一、整体架构

用户 │ 浏览器(Vue/React) │ HTTPS │ ┌─────────────┐ │ Nginx/CDN │ └─────────────┘ │ ▼ ┌───────────────────┐ │ API Gateway 网关 │ │ Spring Cloud Gateway │ 或 APISIX/Kong └───────────────────┘ │ │ │ │ │ │ ▼ ▼ ▼ 用户服务 商品服务 订单服务 User Product Order │ │ │ └───────┼────────┘ │ MySQL/Redis │ Kafka/RabbitMQ

二、为什么需要网关

如果没有网关:

Vue /user/login http://1.1.1.1:8081 /order/list http://1.1.1.2:8082 /product/list http://1.1.1.3:8083

问题:

  • 前端知道所有服务地址
  • 服务增加需要修改前端
  • 安全性差
  • 权限不好控制
  • 日志分散

所以增加 Gateway。


增加之后:

Vue /api/user/login /api/order/list /api/product/list │ ▼ Spring Cloud Gateway │ ├──User Service ├──Order Service └──Product Service

前端永远只访问:

https://api.xxx.com

三、Gateway职责

1、统一入口

所有请求:

浏览器 ↓ Gateway ↓ 微服务

任何请求都必须经过Gateway。


2、路由转发

例如:

/user/**

转发

user-service

例如:

GET /api/user/list

Gateway

http://user-service:8081/user/list

3、身份认证

例如:

登录

POST /login

返回

JWT

以后

Authorization: Bearer xxxxx

Gateway先校验:

JWT是否合法

合法

继续

非法

401

不用每个服务都校验。


4、权限控制

例如:

管理员:

ROLE_ADMIN

普通用户:

ROLE_USER

Gateway直接拦截:

ROLE_USER ↓ 不能访问 /admin/**

5、限流

例如:

1000 次/秒

超过:

429 Too Many Requests

保护后端。

一般结合 Redis。


6、黑名单

例如:

IP 192.168.xxx.xxx

Gateway:

拒绝

7、日志

统一记录:

访问时间 IP URL 耗时 状态码 用户

方便ELK分析。


8、灰度发布

例如:

10% ↓ 新版本 90% ↓ 旧版本

Gateway控制。


9、负载均衡

例如:

User Service 8081 8082 8083

Gateway:

轮询 ↓ 8081 ↓ 8082 ↓ 8083

不用前端关心。


10、统一异常

返回:

{"code":401,"msg":"token expired"}

所有服务统一。


四、Gateway与Nginx区别

NginxGateway
七层代理API网关
静态资源微服务入口
HTTPSJWT认证
反向代理权限控制
负载均衡限流
gzip熔断
SSL动态路由
rewrite服务发现

企业通常两者配合使用:

浏览器 ↓ Nginx ↓ Gateway ↓ 微服务

五、Gateway与注册中心

例如:

Gateway ↓ Nacos

Gateway不知道IP。

只知道:

user-service

Gateway:

Nacos ↓ 获取 10.1.1.10 10.1.1.11 10.1.1.12

动态路由。


六、Gateway过滤器

请求:

POST /order/create

流程:

请求 ↓ GlobalFilter ↓ JWT ↓ 权限 ↓ 日志 ↓ 路由 ↓ Order Service ↓ 返回 ↓ GlobalFilter ↓ 响应日志 ↓ 浏览器

过滤器就是AOP思想。


七、典型请求流程

浏览器 ↓ Nginx ↓ Gateway ↓ JWT校验 ↓ Redis查询用户 ↓ 限流 ↓ 日志 ↓ Nacos ↓ User Service ↓ MySQL ↓ 返回 ↓ Gateway ↓ 浏览器

八、完整分布式架构

Internet │ HTTPS │ Nginx集群 │ ┌──────────┴──────────┐ │ │ Gateway1 Gateway2 │ │ └──────────┬──────────┘ │ Nacos │ ┌──────────────┼──────────────┐ │ │ │ User Service Order Service Product Service │ │ │ ├────Redis─────┤ │ │ │ │ └────Kafka─────┴──────────────┘ │ MySQL

Gateway可以部署多个实例,由 Nginx 或云负载均衡分发流量。


九、企业级网关设计

一个成熟的 Java 微服务网关通常具备以下能力:

功能是否建议
API 路由✅ 必须
JWT/OAuth2 鉴权✅ 必须
服务发现(Nacos/Eureka)✅ 必须
负载均衡✅ 必须
全局异常处理✅ 必须
请求/响应日志✅ 必须
CORS 跨域处理✅ 必须
限流(Redis)✅ 必须
熔断、降级、重试✅ 建议
灰度发布、蓝绿发布✅ 建议
链路追踪(TraceId)✅ 建议
接口版本管理✅ 建议
API 文档聚合✅ 建议
黑白名单、IP 访问控制✅ 建议
配置中心统一管理✅ 建议

十、推荐技术栈(Java 后端)

当前主要做Java + Spring Boot开发,比较主流的一套企业级分布式架构是:

层级推荐技术
前端Vue 3 + TypeScript + Vite
Web 服务器Nginx
API 网关Spring Cloud Gateway
服务注册/配置中心Nacos
微服务框架Spring Boot + Spring Cloud
服务调用OpenFeign
数据库MySQL
缓存Redis
消息队列Kafka(高吞吐)或 RabbitMQ(业务消息)
搜索Elasticsearch(按需)
分布式事务Seata(按需)
链路追踪SkyWalking 或 OpenTelemetry
日志ELK / EFK
容器化Docker + Kubernetes(生产环境)

智慧园区、停车场、门禁、设备管理等 Java 项目,这套架构也是业内比较常见的方案。即使项目不涉及物联网,也适用于 OA、ERP、商城、政务等前后端分离的分布式系统。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 15:14:58

3步轻松获取:国家中小学智慧教育平台电子课本下载工具完全指南

3步轻松获取:国家中小学智慧教育平台电子课本下载工具完全指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 …

作者头像 李华
网站建设 2026/7/3 15:12:49

Obsidian笔记自动化的终极解决方案:Templater插件完整使用指南

Obsidian笔记自动化的终极解决方案:Templater插件完整使用指南 【免费下载链接】Templater A template plugin for obsidian 项目地址: https://gitcode.com/gh_mirrors/te/Templater 你是否厌倦了在Obsidian中重复输入相同的笔记格式?是否希望每…

作者头像 李华
网站建设 2026/7/3 15:11:03

解决openEuler/docs-website开发常见问题:10个实用技巧与最佳实践

解决openEuler/docs-website开发常见问题:10个实用技巧与最佳实践 【免费下载链接】docs-website The repository of docs-website 项目地址: https://gitcode.com/openeuler/docs-website 前往项目官网免费下载:https://ar.openeuler.org/ar/ o…

作者头像 李华
网站建设 2026/7/3 15:06:47

JMeter接口测试从入门到实战:环境搭建、脚本编写与性能分析

1. 项目概述:为什么选择JMeter作为接口测试的起点 如果你正在寻找一款能同时搞定接口功能验证和性能压测,并且完全免费、开箱即用的工具,JMeter几乎是绕不开的名字。我最早接触它是在一个需要快速验证后端API稳定性的项目中,当时…

作者头像 李华