微服务架构辨析:负载均衡、API网关、路由分发与鉴权,你真的分得清吗?

📅 2026/8/7 12:14:43
微服务架构辨析:负载均衡、API网关、路由分发与鉴权,你真的分得清吗?
引言在微服务架构和分布式系统的日常开发中负载均衡、API网关、路由分发、鉴权这些术语经常被提及。很多开发者容易陷入一个误区认为网关带负载均衡所以它们是一回事或者把路由和负载均衡混为一谈。本文将通过清晰的层级、生动的类比和对比表格帮你彻底理清这四个核心概念的职责、关系与差异。一、先分清流量分流、路由与负载均衡在开始之前必须先理清一个包含关系流量分流是总称路由分发和负载均衡都是它的具体实现但二者目的完全不同。1.1 流量分流 —— 大概念只要是把请求流量拆开导向不同的目标都叫流量分流常见有三类路由分流按业务接口拆开/order走订单服务/goods走商品服务。灰度分流10%用户访问新版本90%访问旧版本。负载均衡分流同一服务的多个实例之间均分流量避免单点压力。1.2 路由分发 ≠ 负载均衡很多混淆就出在这里其实它们是微服务调用的前后两步路由分发Routing作用根据请求 URL / Header 等匹配到对应的业务服务集群。例如/api/order/**→ 订单服务集群/api/goods/**→ 商品服务集群。核心按业务分类选择“服务组”。负载均衡Load Balancing作用在同一个服务集群内挑一台具体的机器实例。前提路由已经选定了某个服务集群比如订单集群有3台实例再通过轮询、最小连接数、IP哈希等算法把请求转发给其中一台。核心同一业务的多台副本之间均分流量选择“集群内的单台机器”。完整流程举例用户请求/api/order/create1. 网关先做路由分发匹配到/api/order/**确定转发给“订单服务集群”。2. 再执行负载均衡在订单集群的3台实例中根据轮询算法挑选一台机器把请求转发过去。类比路由 商场导览台买家电去3号区买服装去2号区。负载均衡 家电区收银台分流该区有3个收银台顾客轮流分配不会让某一个排队爆满。一句话总结路由是“分到哪个业务”负载均衡是“业务内部分给哪台机器”两者搭配但完全不是一回事。二、API网关 vs 负载均衡层级与职责天差地别2.1 核心定位不同负载均衡只是一个流量分发算法/能力目标是把流量均匀分给多台相同的服务实例解决单机压力过大和故障转移问题。它可以独立存在如 Nginx、Feign、Ribbon。API网关是整个系统的统一流量入口服务而负载均衡只是它自带的基础功能之一。网关承载了鉴权、路由、限流、熔断、日志、灰度发布、跨域处理等一整套公共逻辑。2.2 实际项目中的两层负载均衡以一个典型的商城微服务架构为例第一层网关层Spring Cloud Gateway / Nginx用户请求先打到网关这是对外的唯一大门- 统一身份认证鉴权、跨域、限流、日志-路由分发/api/order转给订单服务/api/goods转给商品服务-负载均衡转发时从后端服务集群中按算法挑一台实例。第二层服务间远程调用OpenFeign Ribbon/LoadBalancer微服务内部调用时例如订单服务调用商品服务由 Feign 自带的负载均衡组件完成实例选择整个过程不经过网关。2.3 功能对比表对比维度负载均衡API网关核心定位流量分发算法/单一能力微服务统一入口全能中间件核心功能仅分配请求到多实例均衡压力路由分发、负载均衡、统一鉴权、限流熔断、灰度发布、跨域、日志、请求转换能否独立存在可以。Nginx、Feign 单独提供负载均衡不能脱离负载均衡分发流量必须依赖均衡算法处理范围只解决“多实例分流”一件事处理所有微服务通用前置逻辑抽离公共代码使用层级1. 网关转发后端服务2. 微服务内部 RPC 调用面向前端/外部用户的统一入口典型产品Nginx、Feign、Ribbon、HAProxySpring Cloud Gateway、Zuul、Kong、APISIX2.4 生活化类比负载均衡 食堂里的分菜窗口分配规则。有3个一模一样的打菜窗口规定“来一个人按顺序轮换窗口”只负责均匀分流不管你是谁、不管有没有排队限流。API网关 食堂大门口的保安 总调度台。1. 进门先查饭卡统一认证2. 根据你要买的餐品指路面食去1号窗、套餐去2号窗路由3. 指路时顺带控制每个窗口人数均匀内置负载均衡4. 高峰期限制进入人数限流5. 记录进出记录日志可以看到负载均衡只是保安工作里的一小步保安网关要做的事情多得多。2.5 常见误区澄清误区1网关带负载均衡两者就是一样错。负载均衡是通用基础能力Nginx、Feign、注册中心都有不是网关的专利网关是集成多种公共能力的入口服务负载均衡只是其中之一。误区2没有网关就不能负载均衡错。单体集群用 Nginx 直接做负载均衡没有网关微服务内部 Feign 调用自带负载均衡也不经过网关。误区3负载均衡路由错。路由区分不同业务接口负载均衡是同一业务多副本之间分配请求。三、鉴权API网关的核心职责之一3.1 鉴权是什么字面拆解鉴 查验、核对权 访问权限。鉴权 校验当前用户有没有资格访问这个接口/页面/资源开发中的完整含义包括两步1.认证Authentication你是谁 —— 登录校验确认身份合法性。2.授权Authorization你能干什么 —— 权限校验确认操作范围。日常统称为“鉴权”。生活类比小区门禁系统- 刷身份证进门岗认证确认你是小区住户- 只有你家楼栋的电梯能刷开授权不能进别人单元整套流程就是鉴权。3.2 网关统一鉴权的流程结合你的微服务项目用户请求http://域名/api/order/create到达网关后第一步身份认证从请求头中取出token到 Redis / 认证服务中进行校验- token 有效且未过期 → 身份合法放行- 没有 token、token 过期或伪造 → 直接返回401 Unauthorized不转发到订单服务。第二步权限授权登录成功后查询该用户的角色或权限标识- 普通用户只允许查询订单没有创建权限 → 网关拦截返回403 Forbidden- 管理员允许创建、删除订单 → 放行到后端服务。3.3 为什么鉴权放在网关统一拦截所有外部请求在网关处集中校验一处控制全部接口。避免重复商品、订单、支付等微服务不需要各自写一遍登录和权限代码。安全与性能未登录/无权限的请求在网关层就被拦截避免无效流量打到后端服务节省资源。3.4 常见鉴权方案Token 鉴权JWT/自定义令牌登录后返回 token后续请求在 Header 中携带网关校验。分布式微服务主流方案。Session 认证服务器端存储会话单体项目常用分布式环境下需额外处理会话共享不推荐。OAuth2.0第三方授权登录如微信、QQ、支付宝快捷登录。3.5 两个关键 HTTP 状态码401 Unauthorized未鉴权没登录、token 无效或过期。403 Forbidden鉴权通过已登录但当前角色没有访问该接口的权限。四、总结一张图理清所有关系我们把整个链路串起来外部请求→ 到达API网关统一入口网关做鉴权认证授权不合法直接返回 401/403通过后网关根据 URL 做路由分发选服务集群订单/商品/支付针对选中的集群执行负载均衡从多台实例中挑一台转发请求到具体实例后微服务内部调用时也由Feign 自带负载均衡完成分流核心关系图抽象流量分流├── 路由分流按业务划分非负载均衡└── 负载均衡分流同一服务多副本均分流量├── 网关侧负载均衡对外入口└── 服务间调用负载均衡Feign/Ribbon负载均衡是一种流量分流的策略而API网关是一个集成了路由、鉴权、负载均衡等能力的综合服务。理解这些概念的边界能让你在微服务架构设计中更清晰地划分职责避免重复造轮子和无效沟通。