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

[特殊字符] 高可用高并发微服务架构设计:Nginx 与 API Gateway 的协同实践

一、Nginx 和 Gateway 的关系:是替代还是协作?

不是替代关系,而是协作关系。

1. Nginx 的角色(通常在最外层)

  • 反向代理 & 负载均衡:将前端请求分发到多个后端服务或网关实例。

  • 静态资源服务:部署前端(如 Vue/React 打包后的静态文件)。

  • SSL 终止:处理 HTTPS,减轻后端压力。

  • 安全防护:如防 DDOS、限流、WAF(配合模块)。

  • 高可用入口:作为整个系统的统一入口。

2. API Gateway 的角色(在微服务层前面)

  • 服务路由:根据路径将请求转发到具体的微服务(如 /user/** → user-service)。

  • 认证鉴权:统一处理 JWT、OAuth2 等。

  • 限流熔断:防止某个服务被压垮。

  • 日志监控:统一记录请求日志、链路追踪。

  • 协议转换:如 REST → gRPC。


二、典型架构图(高可用 + 高并发)

用户 → DNS → [Nginx LB (HA)] → [API Gateway 集群] → [微服务集群]↑                   ↑(静态资源)         (动态路由/鉴权/限流)

组件说明:

  1. Nginx 集群(主备或双活):使用 Keepalived + VIP 实现高可用。多台 Nginx 前置负载均衡(可再加 LVS/F5 或云 SLB)。

  2. API Gateway 集群:多实例部署,注册到 Nginx 或服务发现(如 Nacos/Eureka)。支持横向扩展,应对高并发。

  3. 微服务集群:每个服务多实例部署,通过注册中心发现。


三、配置示例

1. Nginx 配置(反向代理到 Gateway)

# nginx.conf 或 conf.d/gateway.confupstream gateway_backend {server 192.168.1.10:8080 weight=5;  # Gateway 实例1server 192.168.1.11:8080 weight=5;  # Gateway 实例2# 可配置健康检查keepalive 32;
}server {listen 80;server_name api.yourdomain.com;# 静态资源(前端)location / {root /usr/share/nginx/html;try_files $uri $uri/ /index.html;}# 动态请求代理到网关location /api/ {proxy_pass http://gateway_backend;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# WebSocket 支持location /ws/ {proxy_pass http://gateway_backend;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
}

2. Spring Cloud Gateway 配置(application.yml)

spring:cloud:gateway:routes:- id: user-serviceuri: lb://user-service  # 从注册中心负载均衡predicates:- Path=/api/user/**filters:- StripPrefix=2  # 去掉 /api/user 前缀- id: order-serviceuri: lb://order-servicepredicates:- Path=/api/order/**filters:- StripPrefix=2# 全局限流(Redis + Token Bucket)redis-rate-limiter:replenishRate: 10   # 每秒补充10个令牌burstCapacity: 20   # 桶容量20# 服务发现(如 Nacos)nacos:discovery:server-addr: 192.168.1.100:8848

四、如何实现高可用 & 高并发?

五、常见误区

❌ 只用 Nginx 不用 Gateway→ 适合简单系统,但微服务多了难以维护路由和鉴权。

❌ 只用 Gateway 不用 Nginx→ Gateway 也能做负载均衡,但 Nginx 更成熟,适合做最外层防护和静态资源服务。

✅ 推荐:Nginx + Gateway 协同工作

  • Nginx 做“门卫”和“前台”

  • Gateway 做“调度中心”和“安全审计”


六、进阶建议

  1. 使用云原生方案:如 Kubernetes + Ingress (Nginx Ingress Controller) + Istio/Envoy Gateway。

  2. 自动化部署:配合 CI/CD 工具(Jenkins/GitLab CI)自动发布 Gateway 配置。

  3. 灰度发布:在 Gateway 层实现基于 Header 的流量切分。

  4. 性能压测:使用 JMeter 或 wrk 测试 Nginx + Gateway 的吞吐能力。


总结

  • ✅ 前端用 Nginx 部署静态资源

  • ✅ 后端用 API Gateway 做统一入口、路由、鉴权

  • ✅ Nginx 反向代理到 Gateway 集群,实现高可用

  • ✅ 通过负载均衡、缓存、异步、集群化实现高并发

文章转载自:古渡蓝按

原文链接:高可用高并发微服务架构设计:Nginx 与 API Gateway 的协同实践 - 古渡蓝按 - 博客园

体验地址:JNPF快速开发平台

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

相关文章:

  • Oracle DB 10g 升级至 11.2.0.4报错-ORA-00132
  • 论文阅读:Do As I Can, Not As I Say: Grounding Language in Robotic Affordances
  • 大模型微调训练资源占用查询:Windows 10 查看 NVIDIA 显卡GPU状态教程(替代 Ubuntu 下 watch nvidia-smi)
  • 从零开始:C语言配置文件解析实战(二)—— 数据解析与键值获取
  • 相机曝光调节与自动曝光控制详解
  • 11、Informer论文笔记
  • 高通Camx相机dump yuv和raw图的抓取方式和查看
  • Linux 软件编程(九)网络编程:IP、端口与 UDP 套接字
  • Jmeter混合业务负载测试指南
  • 定制吹塑服务:塑料成型领域的“柔性制造”新范式
  • 计算机网络:TCP、UDP
  • 管理型交换机通过VLAN划分实现不同IP跨网段通信配置方法
  • JavaEE 初阶第二十期:网络编程“通关记”(二)
  • 微前端qiankun框架,子页面图标样式错乱问题,显示为X
  • Halcon那些事:什么是动态阈值,如何用dyn_threshold分割图片
  • Elasticsearch Rails 实战全指南(elasticsearch-rails / elasticsearch-model)
  • 集成电路学习:什么是K-NN最近邻算法
  • Seaborn数据可视化实战:Seaborn图表定制与数据可视化入门
  • AI+虚拟仿真:以科技之光照亮希望的田野
  • 课小悦系列智能耳机上市,用硬核科技为教育赋能
  • 学习嵌入式第二十三天——数据结构——栈
  • Qt5 文件与数据处理详解
  • NETSDK1045 当前 .NET SDK 不支持将 .NET 8.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标,或使用支持
  • 【FPGA Interlaken协议】
  • 服务器与客户端
  • AI服务器介绍
  • FPGA设计中的信号完整性量化与优化:探索高速数字系统的关键路径
  • 20.9 QLoRA微调实战:1.5B参数Whisper-large-v2在24GB显存实现中文语音识别,CER骤降50%!
  • 企业微信新版搞了个AI功能
  • 构效关系(Structure-Activity Relationship, SAR)分析的标准方法:R基团结构解析