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

分布式架构-网关(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、商城、政务等前后端分离的分布式系统。

http://www.jsqmd.com/news/1116118/

相关文章:

  • 自我慈悲的具象化的庖丁解牛
  • STM32与MC6470 IMU传感器集成开发指南
  • Redis 从入门到进阶:核心原理、实战场景全解
  • openEuler/llm_solution硬件使能:CANN与CUDA协同优化的完整配置手册
  • crs启动提示CRS-41053
  • 三星固件下载神器Bifrost:跨平台一键获取官方系统更新
  • IIM-42652与PIC18F2550实现6DoF运动追踪方案
  • 2026大模型选型实战指南:服务稳定性比参数更重要
  • SPI EEPROM与PIC32MZ嵌入式存储方案详解
  • novel-downloader深度解析:可扩展架构设计与智能反爬虫技术实现
  • utiputils安全特性分析:现代网络工具包的安全防护机制
  • elfin-parser安全实践:安全解析ELF二进制文件的最佳实践指南
  • CPT平台平台规范感值不值得细看?
  • 仓库堆货总塌箱?搞懂 GB/T 4857.4-2008,再也不怕纸箱压坏货
  • Harness Engineering 是什么,怎么用
  • BMI270与STM32F745VG在运动感知系统中的优化实践
  • C/C++栈与队列应用面试题
  • PilotGo-plugins:一站式运维插件平台,10大核心功能全面解析
  • 企业 AI 应用扩到多部门前,为什么必须先做知识库权限分层
  • Metabase CVE-2021-41277漏洞原理与CTF实战利用全解析
  • SPI EEPROM与PIC18F55K42嵌入式存储方案详解
  • 悦己经济下的香薰出海:TikTok达人营销如何“转译”情绪价值
  • AI编程工具大规模落地后,代码质量管控完整实战方案
  • 基于STM32单片机水流量控制系统 智能水表 煤气 流量计检测 2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • 探秘龙江手工床垫厂家:传统工艺与现代品质如何完美融合?
  • 3步解锁暗影精灵全部性能:开源工具OmenSuperHub终极指南
  • 【TwinCAT3运动控制】TwinCAT3 NC PTP 运动控制实战:松下伺服驱动器硬件配置与调试全流程
  • VisualCppRedist AIO:终极免费方案,一键修复所有Windows运行库问题
  • D类音频功放系统设计与STM32 DSP优化实践
  • BMI270与PIC18F65K40在嵌入式传感器开发中的黄金组合