网关的常见职责有哪些?路由、鉴权、限流分别怎么做?

结论先行:网关是微服务流量的统一入口,把横切逻辑从业务服务中抽离出来集中实现。核心职责是路由转发、鉴权认证、限流熔断,此外还有灰度发布、协议转换、日志监控、跨域处理等。网关本身无状态、可水平扩展,是最适合做"流量治理"的一层。

一、常见职责与实现

职责说明
路由转发按路径/请求头把请求转发到对应服务,支持负载均衡与重试
鉴权认证校验 JWT/OAuth2 Token,白名单放行登录、注册等公开接口
限流熔断按 IP/用户/接口维度限流,下游故障时熔断降级
灰度发布按版本号、流量比例把请求导流到新版本服务
协议转换HTTP 与 RPC 协议互转、请求/响应改写
横切能力统一日志、监控埋点、跨域、参数校验、防刷

二、限流的常用算法

  • 固定窗口计数:实现简单,但窗口临界点可能瞬间放行两倍流量;
  • 滑动窗口:按时间片滚动统计,精度更高;
  • 漏桶算法:恒定速率出水,能削峰但不能应对突发;
  • 令牌桶:按速率放令牌、桶内可积攒,允许一定突发,最常用;
  • 分布式限流:多实例共享计数,用 Redis + Lua 保证原子性。

三、路由配置示例

# Spring Cloud Gateway 路由示意:/api/order/** 转发到 order-service
spring:
  cloud:
    gateway:
      routes:
        - id: order-route
          uri: lb://order-service
          predicates:
            - Path=/api/order/**
          filters:
            - StripPrefix=1

常见追问 / 记忆点

  • 追问:网关和 Nginx 有什么区别?答:Nginx 偏流量接入层(L4/L7 转发),网关偏业务治理层(鉴权、限流、灰度),生产常 Nginx 在前、业务网关在后。
  • 追问:网关会变成性能瓶颈吗?答:网关必须无状态 + 水平扩展,转发尽量用异步非阻塞模型,避免在网关层做重业务。
  • 追问:限流在网关做还是在服务做?答:网关做全局入口限流,服务内再做精细业务限流,两层配合。
  • 记忆点:路由、鉴权、限流三件套 + 无状态水平扩展;限流算法里令牌桶最常用、Redis+Lua 落地分布式。
笔记加载中…