API网关是微服务架构中的关键组件位于客户端与后端服务之间承担统一入口、流量治理和安全管控等职责。其核心功能包括路由Routing根据请求路径Path、Host、Header、Query参数或HTTP方法等条件将请求动态转发至对应后端服务如/user/**→ 用户服务/order/**→ 订单服务。支持灰度路由基于用户ID、标签等、A/B测试、蓝绿发布等高级路由策略。通常结合服务发现如Nacos、Eureka实现自动服务地址更新。鉴权Authentication Authorization统一校验身份AuthN如JWT解析与签名验证、OAuth2 Token校验、API Key校验等。统一控制权限AuthZ基于RBAC/ABAC模型判断当前用户是否有权访问某API如POST /api/v1/orders需role: merchant。支持令牌透传、上下文注入如将用户ID、租户ID注入Header供下游服务使用。限流Rate Limiting防止突发流量压垮后端服务保障系统稳定性。支持多维度限流全局/接口级/用户级/租户级算法包括固定窗口、滑动窗口、漏桶、令牌桶推荐令牌桶平滑可控。可配置QPS、并发数、请求总量等阈值并支持拒绝429 Too Many Requests或排队降级。熔断Circuit Breaking当下游服务持续失败如超时、异常率50%网关自动“熔断”对该服务的请求快速失败并返回兜底响应如默认值、缓存或友好错误页。熔断器具备三种状态Closed正常调用→ Open触发熔断→ Half-Open试探性恢复避免雪崩效应。常与超时Timeout、重试Retry策略协同使用。✅ 补充说明现代API网关如Kong、APISIX、Spring Cloud Gateway、阿里云API网关还常集成日志审计、监控告警、协议转换HTTP/gRPC、SSL终止、WAF防护等功能但路由、鉴权、限流、熔断是其最基础且不可替代的四大核心能力。# 示例Spring Cloud Gateway 中配置限流 JWT鉴权伪代码Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder){returnbuilder.routes().route(user-service,r-r.path(/api/user/**).filters(f-f.authenticationFilter()//自定义JWT鉴权过滤器.requestRateLimiter(c-c.setRateLimiter(redisRateLimiter()))//Redis令牌桶限流.circuitBreaker(config-config.setName(userCB).setFallbackUri(forward:/fallback))).uri(lb://user-service)).build();}API网关实现路由规则的动态热更新Hot Reload而无需重启核心在于将路由配置从代码/配置文件中解耦转为可运行时读取、监听变更并实时生效的外部化数据源。主流实现方式如下✅1. 基于服务注册中心如Nacos、Eureka、Consul网关作为客户端订阅服务实例列表路由路径与服务名绑定如/user/** → user-service。当服务上下线或元数据变更如新增version: v2标签注册中心主动推送事件网关监听后自动刷新路由映射表如 Spring Cloud Gateway 的CachingRouteLocator。✅ 优势天然支持服务发现路由联动适合微服务动态扩缩容场景。✅2. 基于配置中心如Nacos Config、Apollo、ZooKeeper路由规则以 JSON/YAML 格式存储在配置中心例如gateway-routes.json[{id:order-route,uri:lb://order-service,predicates:[Path/api/order/**],filters:[AuthFilter,RateLimitFilter]}]网关启动时加载并通过长轮询/监听接口如 Nacos 的NacosConfigListener或 Apollo 的ConfigChangeListener感知配置变更。变更后触发RouteDefinitionWriterRefreshRoutesEventSpring Cloud Gateway或 APISIX 的admin API重载路由缓存。✅ 优势配置与代码分离支持灰度发布、版本回滚、权限管控。✅3. 基于数据库如MySQL 定时扫描/监听binlog路由信息存入关系型数据库含字段path、service_id、methods、headers、status、weight等。网关通过定时任务如每5秒查一次updated_at last_check或结合Canal监听binlog实现近实时同步。⚠️ 注意需加锁/版本号避免并发更新冲突性能低于配置中心但便于审计与复杂查询。✅4. 基于管理后台 Admin API如Kong Admin API、APISIX Dashboard运维/开发通过Web界面或curl调用网关提供的RESTful管理接口如POST /apisix/admin/routes增删改路由。网关内部监听自身Admin端口事件解析请求后直接更新内存路由树APISIX 使用 etcd 作为配置存储所有节点监听 etcd key 变更天然强一致性。✅ 优势操作直观、支持多租户、审计日志完备。关键技术保障无锁/原子更新使用ConcurrentHashMap、CopyOnWriteArrayList或不可变对象如RouteDefinition避免热更新时路由不一致双缓冲机制加载新配置到备用缓冲区校验通过后原子切换引用如AtomicReferenceRouteLocator平滑过渡旧路由连接允许完成Graceful Shutdown in-flight requests新请求立即走新规则健康检查兜底若配置加载失败自动回退至上一有效版本需本地持久化备份。# APISIX 示例通过 etcd 监听自动热更新无需重启# 所有节点 watch /apisix/routes/ 下的 key变更即生效