反向代理+网关部署架构
后端要做的事情:鉴权认证、限流/熔断、日志处理
反向代理+网关部署架构
缺点:需要同时维护反向代理和网关
优点:针对Api服务和网页服务的不同能够灵活处理
统一网关部署架构
缺点:不能够针对网页服务和API服务灵活处理,需要在统一网关层进行分别判断
优点:能避免跨域等问题
后端网关
后端网关(Backend Gateway)是分布式系统架构中的核心组件,主要负责 请求转发、协议转换、流量管控和安全防护,充当客户端与后端服务之间的智能中介。
后端网关(Backend Gateway)是分布式架构中的核心枢纽,主要负责 请求的智能调度、安全管控和系统治理。以下是它处理的具体任务和实际应用场景的深度解析:
一、核心处理任务
1. 流量调度与路由
- 动态路由
根据请求路径、Header或参数将请求分发到不同服务(如/api/orders
→ 订单服务集群)。 - 灰度发布
通过流量染色(如Header: version=canary
)将部分用户请求导流到新版本服务。 - 多环境路由
将测试请求自动路由到测试环境(如Header: env=beta
)。
示例(Nginx配置):
location /api/users {proxy_pass http://user-service-v2; # 指向用户服务v2集群
}
2. 安全防护
- 统一鉴权
验证JWT/OAuth2令牌,拦截未授权请求(如购物车接口必须携带有效Token)。 - 防攻击
封禁高频访问IP(防止CC攻击),过滤SQL注入/XSS恶意参数。 - 数据脱敏
对响应中的手机号、身份证等字段自动打码。
示例(Kong网关插件):
# 启用JWT插件
curl -X POST http://kong:8001/apis/{api}/plugins \-d "name=jwt"
3. 系统稳定性保障
- 熔断降级
当订单服务响应超时5秒,自动切换至兜底逻辑(如返回缓存数据)。 - 限流控制
限制秒杀接口每秒最多1000次请求(令牌桶算法)。 - 负载均衡
按服务器CPU使用率动态分配流量(替代传统的轮询策略)。
示例(Spring Cloud Gateway熔断配置):
filters:- name: CircuitBreakerargs:name: paymentServicefallbackUri: forward:/fallback/payment
4. 性能优化
- 缓存加速
缓存商品分类信息,降低数据库查询压力(TTL=10分钟)。 - 数据聚合
合并用户基本信息+积分详情,减少客户端请求次数(BFF模式)。 - 协议转换
将HTTP REST请求转换为内部gRPC调用,提升传输效率。
示例(GraphQL网关聚合):
# 一次请求获取用户订单+物流信息
query {user(id: "123") {orders {idtrackingInfo {status}}}
}
5. 可观测性
- 日志采集
记录请求耗时、状态码、调用链ID(关联ELK分析)。 - 监控埋点
统计API成功率,推送至Prometheus+Grafana仪表盘。 - 实时告警
当支付接口错误率>5%时触发企业微信告警。
二、实际业务场景
案例1:电商大促
- 任务:保障核心链路(商品详情→购物车→支付)
- 网关动作:
- 支付接口限流5000 QPS
- 非核心接口(如评价服务)自动降级
- 恶意爬虫请求拦截率>99%
案例2:金融系统
- 任务:合规与风控
- 网关动作:
- 敏感操作(转账)强制二次认证
- 请求参数加密(SM4国密算法)
- 操作日志审计留存6个月
三、技术实现对比
功能 | Nginx | Spring Cloud Gateway | Kong |
---|---|---|---|
路由灵活性 | 中(需写Lua脚本) | 高(Java DSL配置) | 高(声明式配置) |
协议支持 | HTTP/WebSocket | HTTP/gRPC | HTTP/gRPC/WebSocket |
扩展性 | 依赖插件开发 | 集成Spring生态 | 丰富插件市场 |
性能 | 极高(C语言) | 高(Netty) | 高(Nginx基础) |