需要 Service Mesh 吗?集中式网关何时是更优解
需要 Service Mesh 吗?如果你的东西向流量正深陷限流策略不一、鉴权标准分裂、可观测性盲区的困境,本能反应往往是上 Istio。但对大多数团队来说,这个决定为时过早——在关键网络节点部署集中式网关,无需 per-pod sidecar,也不必养一支专职平台团队来维护控制面,就能落地同等的流量策略。某大型 OTA 平台在做出这一切换后,网关运维从 7 人收敛至 1 人。
下文将剖析东西向流量治理的四大痛点,对比 Service Mesh 与集中式网关的架构选型,然后沿着一次内部 API 变更的全生命周期——从权限边界到一键回滚——展示 OpenResty Edge 在每个环节的具体做法。
东西向流量与南北向有何不同
在探讨具体选型前,我们需要厘清南北向(外部)与东西向(内部)流量治理在架构语境下的核心差异。内部流量网关绝不是外网 WAF 或传统负载均衡器在内网的简单镜像。
外部网关建立在“零信任”的初始假设上,主要解决边界防御(DDoS、WAF)与接入加速问题。而内部流量的挑战在于复杂的拓扑关系与服务间契约的管理。
| 评估维度 | 外部流量治理(南北向) | 内部流量治理(东西向) |
|---|---|---|
| 拓扑结构 | 相对扁平(客户端 -> 网关 -> 业务层) | 深度网状交织(微服务间的多级调用) |
| 信任模型 | 默认不信任(Default Deny) | 历史包袱导致的默认信任(隐患根源) |
| 治理重心 | 边界安全、高可用性、连接卸载 | 路由调度、细粒度鉴权、服务降级与熔断 |
| 流量特征 | 突发性高并发、主要为 HTTP/S 协议 | 协议多样(RPC/HTTP)、高频短时与长连接并存 |
| 变更频次 | 相对低频、由 SRE/网络团队主导 | 极高频,随各敏捷团队的业务迭代持续变更 |
传统基于 nginx.conf 静态文件或人工维护内网路由的模式,其“集中式、低频变更”的设计,已经与内部服务“管理主体分散、高频发布”的客观规律产生了不可调和的矛盾。
缺乏统一治理的东西向流量会出什么问题
通过对诸多企业基础架构演进路径的观察,内部流量治理的缺失通常会演化为以下四个层面的系统性风险。
隐式信任与横向移动风险
在单体或早期服务化阶段,“内网即安全边界”是一个妥协性的假设。但在云原生环境下,这个假设极度脆弱。
风险敞口:一旦某个边缘应用因第三方组件漏洞(如 Log4j2、Fastjson)被攻破,攻击者便能以该节点为跳板,在内网发起横向移动(Lateral Movement)。由于内网服务间普遍缺乏基于身份的细粒度访问控制(RBAC/ABAC),核心数据服务往往对所有内网 IP 处于裸奔状态。这不仅是重大的数据安全隐患,也无法满足金融、医疗等行业日益严格的合规审计要求。
限流、鉴权、重试逻辑的碎片化
微服务的自治性不应扩大到非功能性需求领域。如果缺乏统一的数据面代理,各团队就会被迫在业务代码中重复实现网关层能力:
- 限流算法不一:漏桶、令牌桶或简单的计数器混用。
- 重试风暴:缺乏全局协调的局部重试策略,在下游服务性能劣化时,极易引发重试风暴(Retry Storm),彻底压垮整个系统。
- 鉴权标准分裂:JWT、定制 Header 或无鉴权并存。
这种“烟囱式”的建设不仅推高了整体研发成本,更因实现标准的参差不齐,给系统底盘埋下了大量稳定性隐患。
没有灰度和回滚的发布
内部核心 API 的迭代频次极高。在缺乏动态路由和流量分割能力的基础设施中,每次发布都近乎于一次“全量试错”。
缺乏动态路由和流量分割能力,每次发布都近乎于一次"全量试错"。回滚成本高昂,工程师对发布产生畏惧感,最终拖慢了整体的交付速率。
可观测性孤岛拉高 MTTR
当故障发生时,排查效率直接取决于遥测数据(Telemetry Data)的完备性。 在碎片化的架构中:没有统一的日志 Schema,缺乏贯穿全链路的 Trace ID 注入,指标收集(Metrics)粒度不一。排查一个跨三个服务的调用超时,需要运维人员在多个 Kibana/Grafana 面板中人肉对齐时间戳。平均故障恢复时间(MTTR)居高不下,其本质是工具链的缺失,而非工程师经验不足。
Service Mesh vs. 集中式网关:工程取舍
在解决内部流量问题时,业界通常有两种演进方向:基于 Sidecar 的 Service Mesh(如 Istio)和集中式/微隔离网关。
Service Mesh 将代理下沉到每个 Pod 级别,实现了极致的去中心化,但代价是极高的控制面运维复杂度(如 Istiod 性能瓶颈)以及不可忽视的网络延迟(在经典 sidecar 模式下,一跳调用需经过两次 Envoy 代理转发)。
对于绝大多数尚未具备顶尖基础架构团队的企业而言,OpenResty Edge 所代表的集中式、高度可编程的分布式网关提供了一条更具投入产出比(ROI)的路径:它更适合存在明确服务域边界(Domain Boundary)的场景。通过在关键网络节点部署集群,既实现了统一管控,又避免了 Sidecar 模式带来的认知负担和计算资源浪费。
这条路线还有一个常被低估的优势:内部流量与对外业务入口共用同一套控制面。同一套 OpenResty Edge 平台,既能承担南北向的接入层职责——私有 CDN、WAF 防护与对外 API 网关——也能下沉到内网承担东西向治理。南北向与东西向的路由、鉴权、限流策略在同一个 Edge Admin 控制台中管理,变更流程、权限边界与审计口径天然对齐,无需为内网另建一套治理体系。这笔账在人力紧张的中小型基础架构团队里尤其显著。
一次内部 API 变更在 OpenResty Edge 中的全生命周期
空谈能力清单没有意义。下面将沿着一次真实的内部 API 变更,在 OpenResty Edge 中走完完整流程——划权限、改配置、发 staging、放量、观测、回滚——让你看清内部流量治理的每一步在实际产品中如何运作。
第一步:划定权限边界——谁能动这条配置
几十条业务线共用一套内部网关时,第一道坎不是路由怎么配,而是权限:A 团队不应该能改到 B 团队的应用;共享环境里“谁都能改、改完没人知道”,本身就是事故之源。东西向流量“管理主体分散、高频发布”的特点,决定了权限边界必须先于一切配置存在。
在 OpenResty Edge 中,权限由用户组决定:系统内置 super admin、normal admin、normal user 三个组,用户可同时属于多个组。每个功能模块可以单独配置读写权限,并区分“能否查看/修改其他人的数据”(Read All / Write All),还可限制最大记录数与记录类型。应用的创建者自动拥有该应用全部模块的权限;其他团队成员需要参与时,通过应用级的 User Access Control 显式授权到单个应用。企业已有账号体系可通过 LDAP 对接(支持 ldaps 与自动同步)直接复用。
配置变更的边界从此等于组织边界——越权与误改从源头堵住。具体配置步骤,请参考Web 控制台的用户管理和访问控制。
第二步:变更即发布——每次修改可审查、可追溯
许多团队至今仍靠人工修改 Nginx 配置加 reload 来切换内部流量:谁、在什么时候、为什么改了这一条,事后无从查起;而 reload 在高并发长连接下还会造成 worker 进程抖动与连接重置。
OpenResty Edge 把“改配置”和“配置生效”拆成了两个动作:修改不会立即生效,控制台会提示存在未发布的变更(pending changes),必须经过发布(Release)才会下发到网关节点;发布时可以填写本次变更的原因备注,便于日后检索与审计。发布后,路由、限流阈值、证书等绝大多数策略在数据面内存中热更新生效,避免 reload 引发的连接闪断——高频变更不再是高风险动作。
具体的版本控制与发布流程,请参考 OpenResty Edge 中 Gateway Config 的版本控制和发布管理。
第三步:先小范围真实验证——灰度网关节点
新路由、新限流规则一旦发布即全网生效,等于拿生产环境当试验场。
OpenResty Edge 支持把某个网关节点标记为灰度(Staging)节点:应用发布时可以选择只发布到 staging 节点,让新配置先在小范围真实流量上运行观察;确认正常后,再发布到其余集群。被标记的节点在列表中带有 Staging 标签,一眼可辨。
具体操作请参考在 OpenResty Edge 中如何使用灰度网关服务器。
第四步:可控放量——灰度、A/B 测试与流量镜像
staging 验证通过,仍不该把核心内部 API 一刀切到新版本——调用量大的接口,从 1% 到 100% 的每一档都值得可控。
通过页面规则调整 upstream 权重,或基于特定 HTTP Header 等请求特征把测试流量引向新版本,放量节奏完全由你掌握;A/B 测试的配置同样纳入版本控制,可审查、可回退。需要更强隔离时,还可以保留一组专属网关节点承接 A/B 流量(见下文网关分区)。
如果希望新版本在正式接管业务之前先接受真实数据的检验,可以使用流量镜像:在不影响生产主链路响应的前提下,网关在后台异步复制真实流量至预发环境。具体请参考 OpenResty Edge 镜像请求功能让安全与性能兼得。
第五步:全程看得清——真实来源、动态指标与统一日志
放量过程中的判断依据是数据。但在 K8s 与多层代理(LB、Ingress、网关)之后,日志里记录的往往全是代理或 Pod 的 IP,排障时对不上真实调用方,限流与鉴权也失去了准确的来源依据;而排查一次跨三个服务的调用超时,还要在多个面板中人肉对齐时间戳。
OpenResty Edge 在这一环提供三样东西:
- 真实客户端 IP 还原:配置信任主机列表后,仅当 TCP 连接对端位于信任列表中时,才采用请求头改写来源 IP;客户端 IP 来源支持从
X-Forwarded-For头提取真实 IP。在可信代理链路后准确还原真实来源,日志、限流、鉴权从此都建立在真实身份之上。具体请参考在 OpenResty Edge 中精准还原真实的客户端 IP 地址。 - 动态指标:用类 SQL 的语法(Metric SQL)实时定义和聚合业务指标——例如查询某上游接口的 P99 延迟——无需改代码、无需重新部署。具体请参考如何在 OpenResty Edge 中使用标准动态指标,进阶用法见自定义动态指标。
- 统一结构化日志:网关是所有跨服务流量的必经之路,自动产出格式统一的结构化访问日志,消除各团队日志 Schema 的分裂;同时支持 OpenTelemetry 标准的 Trace ID 注入与透传,与现有 APM 系统对接。日志配置请参考在 OpenResty Edge 中配置网关的访问日志文件。
第六步:出了问题——一键回滚
放量中指标异常,此刻最重要的事只有一件:在最短时间内退回上一个已知良好的状态。回滚成本越低,工程师越敢发布。
OpenResty Edge 可以恢复到任意历史 Release;revision 历史是只读的、不可篡改,控制台提供人类可读的版本差异对比——回滚之前,你能确切知道将退掉哪些变更。配合前面的 staging 验证与灰度放量,“小步发布—出错即退”形成完整闭环。回滚操作与版本对比同见版本控制和发布管理。
长期运行:健康检查、熔断与限流
变更之外,内部链路的日常韧性同样需要统一兜底,而不是各业务自研一套参差不齐的容错代码。这里的容错分两层:网关对上游业务节点的容错,以及控制面对网关节点自身的监控。先看前者:
- 上游主被动健康检查:网关结合主动探测与被动流量反馈,自动剔除异常的上游业务节点,保障高可用 SLA。
- 熔断与快速失败:当上游错误率或延迟触发阈值时自动熔断(Fail-Fast),防止下游线程池被耗尽、重试风暴压垮系统。
- 统一限流:在网关层以统一的算法和自定义键实施限流,替代散落在各业务中的漏桶/令牌桶混杂实现。具体请参考在 OpenResty Edge 中限制请求速率。
另一层是网关节点自身的健康:Edge Admin 控制面会持续探测各网关节点,探测失败的节点在控制台中被标红告警,并自动从 DNS 解析中摘除,无需人工介入。具体请参考在 OpenResty Edge 中启用网关服务器的自动健康检查。
对于内部以 gRPC 为主的调用链路,网关原生支持 gRPC 代理,上述熔断、健康检查与限流能力同样适用——这正是应对前文所述“协议多样”这一东西向流量特征的基础。
多团队共用一套网关——分区与权限的双重隔离
当多个敏捷团队共用同一套网关基础设施时,资源的争抢和配置覆盖是核心痛点。第一步的用户组与应用级访问控制解决的是逻辑隔离;OpenResty Edge 的网关分区(Gateway Partition)进一步提供物理隔离:每台网关节点在纳管时归属且仅归属一个分区,不同分区拥有独立的配置空间,变更只下发到本分区内的集群与节点;指定应用可以只发布到指定分区,分区还可单独配置端口、按端口开启 Proxy Protocol。
各业务线在各自分区内维护独立的应用、页面规则与配额,在复用统一控制面的同时,避免跨团队的配置误覆盖,并缩小故障爆炸半径;也可以用一个专属分区承接前文的 A/B 测试流量。分区与集群的层级关系及配置实践,可参考如何使用 OpenResty Edge 中的网关分区。
鉴权卸载与东西向零信任
在上述生命周期之外,安全基线值得单独一提。将散落在业务线中的身份验证逻辑上浮并卸载到网关层,是内部零信任架构(ZTA)平滑落地的第一步:服务间调用可做基于 JWT 的无状态验签(如 OAuth2/OIDC 颁发的令牌),员工访问可实施 OIDC 集成;对安全级别要求极高的核心链路,网关支持开启双向 TLS(mTLS),基于 x509 客户端证书进行机器身份认证;OpenResty Edge 还支持基于 TLS 握手特征的 JA4 指纹识别——即使双方都持有合法证书,也能区分合法内部服务与异常客户端,与 IP 白名单互补。安全防御由此从“静态 IP 白名单”演进为“动态身份与行为校验”。
何时开始:三阶段渐进路径
解决复杂的技术债,切忌推倒重来。内部流量治理体系的建立,应该是一个“小步快跑、渐进增强”的过程。
这一路径已有真实的工程数据印证:某拥有数千员工的 HR SaaS 平台迁移至 OpenResty Edge 后,API 治理底座的 TCO 下降了 80%,配置生效时间由小时级缩短至分钟级;某大型 OTA 平台将网关运维从 7 人日常轮值收敛至 1 人负责,其余人力释放到产品开发;去哪儿网在日均百亿级调用体量下实现了配置变更对连接的“零损耗”,维护成本降低 90%。这些收益并非来自一次性的大规模重构,而是通过分阶段、有节奏的渐进落地积累而来。
所谓“渐进增强”,在实践中可拆解为三个递进阶段:
- 第一阶段:重点突破可观测性与安全基线。在网关层统一切入 JWT 鉴权、真实客户端 IP 还原与标准日志采集,无需研发侧改动一行代码,快速消除“系统裸奔”与“排查黑盒”的状态。
- 第二阶段:推广流量切分与容错降级。结合 CI/CD 平台,把“staging 验证—灰度放量—一键回滚”固化为团队的标准发布流程,控制爆炸半径。
- 第三阶段:落地零信任与深度多租户。在高敏感服务节点推行 mTLS,通过网关分区将不同业务线的物理节点与配置空间隔离开;将路由、鉴权与限流等策略的统一管控固化为组织级规范,依托 Edge Admin 的审查发布与 API,与现有运维流程衔接。
将底层网络与流量调度的复杂性下沉至统一的基础设施层,是云原生演进的必然趋势。当你不再需要依赖开发人员的自觉性来保证系统的稳定与安全时,微服务架构才能真正释放它的业务敏捷性。
如果你正在评估企业内部流量管理的解决方案,欢迎联系 OpenResty Edge 团队,获取针对你们具体场景的技术咨询。
常见问题解答(FAQ)
Q: 内部(东西向)网关和对外(南北向)网关能共用一套系统吗? A: 可以。OpenResty Edge 用同一套控制面同时纳管南北向与东西向流量,变更流程、权限边界与审计口径完全一致;需要隔离时,可通过网关分区把对内、对外应用分别落在不同的物理节点组上。
Q: 引入集中式内部网关,和 Service Mesh 冲突吗? A: 不冲突。两者并不互斥:Service Mesh 追求 Pod 级的极致去中心化,代价是控制面运维复杂度和 sidecar 带来的额外延迟;对多数存在明确服务域边界的企业,在关键网络节点部署集中式网关的投入产出比更高,也可以作为日后走向更细粒度治理的务实起点。
Q: 内部流量治理应该从哪一步开始落地? A: 建议从可观测性与安全基线起步——在网关层统一接入日志采集、真实 IP 还原与 JWT 鉴权,业务代码零改动即可见效。完整的三阶段递进路径请参见上文结语。
Q: 什么情况下不应该用 Service Mesh? A: 当你的服务存在明确的域边界,且没有专职平台团队来运维 mesh 控制面时。在关键网络节点部署集中式网关,无需 per-pod sidecar,也没有 Istiod 的运维负担,就能落地限流、鉴权、灰度发布和可观测性等流量策略。先从这里开始,只有当确实需要 Pod 级去中心化时,再考虑 mesh。
Q: 微服务一定需要 Service Mesh 吗? A: 不一定。微服务的许多痛点——限流策略不一、鉴权标准分裂、无灰度回滚、可观测性孤岛——本质上是基础设施治理的缺失,并非必须靠 per-pod sidecar 来解决。集中式网关能以更低的运维成本解决这些问题。
Q: 不用 Service Mesh,如何治理东西向流量? A: 在关键内网节点部署集中式可编程网关,使其成为服务间调用的必经数据面,统一执行路由、JWT/mTLS 鉴权、限流、熔断和结构化日志——全部由一个同时覆盖南北向流量的控制面管理。配置变更在数据面内存中热更新,连接零损耗,彻底消除手工维护 Nginx 时 reload 引发的连接闪断。
关于 OpenResty Edge
OpenResty Edge 是一款专为微服务和分布式流量架构设计的全能型网关软件,由我们自主研发。它集流量管理、私有 CDN 构建、API 网关、安全防护等功能于一体,帮助您轻松构建、管理和保护现代应用程序。OpenResty Edge 拥有业界领先的性能和可扩展性,能够满足高并发、高负载场景下的苛刻需求。它支持调度 K8s 等容器应用流量,并可管理海量域名,轻松满足大型网站和复杂应用的需求。
关于作者
章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。
章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是“边缘计算”、“动态追踪”和“机器编程”的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl 等,并编写过 60 多个开源软件库。
关注我们
如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:
翻译
我们提供了英文版原文和中译版(本文)。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!























