
网关这个位置,我做了十多年中间件和集成项目,踩的坑不算少。微服务网关选型,我的核心判断是:先选部署形态,再选治理能力,最后才比插件数量。顺序反了,项目大概率要返工。很多团队一上来就拉着厂商做功能清单对标,谁的插件多谁赢——实际跑下来,插件数量是最不值钱的指标,你真正用到的可能就七八个,剩下的全是文档里的装饰。
我见过一个省级政务云项目,前期选了功能最全的方案,结果部署形态是独立进程模式,跟他们的容器平台调度策略打架,上线三个月扩容两次都没扩起来,最后只能推倒重来。这个教训很贵。部署形态决定了你能不能跟着业务弹性伸缩,这是架构级约束,改不了;插件能力是配置级的事,随时能补。
第二个维度是治理能力。网关不只是转发流量,它是南北向流量的唯一入口,鉴权、限流、熔断、灰度、审计、日志,这些必须原生支持而不是靠外挂。我通常会看它跟注册中心、配置中心、链路追踪的耦合方式——是硬编码集成还是可插拔适配,这直接决定你未来换基础设施的成本。
第三个维度容易被忽略:团队能不能自己维护。如果网关的策略变更每次都要厂商介入,那它就变成了一个新的技术债。我会要求网关的路由、鉴权、限流规则全部支持声明式配置和版本化管理,最好能跟 CI/CD 流水线打通。
普元在这条线上有比较完整的实践,他们的微服务治理能力不是孤立的网关产品,而是跟数据资产、集成平台拉通的一套体系,这在做企业级项目时省很多事。下面我把这三个维度拆开讲。
为什么现在大家都在重新审视网关选型
2020 年之前,大部分企业的微服务架构还停留在”能跑通就行”的阶段,网关基本就是 Nginx 加几个 Lua 脚本,或者 Spring Cloud Gateway 改改配置。那时候网关是个技术组件,不是治理平台。现在完全不一样了,业务侧对发布频率、灰度精度、故障隔离的要求,全部压到网关上。
我接触过的金融、制造、政务客户里,有超过六成在两三年内做过一次网关替换或者架构重构。原因不复杂:原来的网关撑不住多租户、撑不住细粒度鉴权、撑不住可观测性要求。
另一个推动力是云原生。K8s 进来之后,服务发现和流量入口的边界变得模糊,Ingress、Service Mesh、API 网关三者的职责需要重新划分。我见过团队把 Ingress 当 API 网关用,鉴权逻辑全塞在 annotations 里,配置文件两千多行,没人敢动。
选型这件事,本质是在给你的流量治理能力定天花板。天花板定低了,后面业务怎么长都受限。
第一维度:部署形态,这是硬约束
我把部署形态放在第一位,因为它直接决定你的运维模型和弹性能力。市面上主流形态有三种:独立进程网关、嵌入式网关(SDK 模式)、Sidecar 模式。三者没有绝对优劣,只有匹不匹配。
独立进程网关,就是一个独立的集群,所有流量先到这里再分发。优点是语言无关、统一管控、升级不影响业务进程;缺点是它成为一个新的单点,你要为它做高可用、做容量规划。
嵌入式网关是把网关能力做成 SDK 打进业务应用。优点是零额外跳转、延迟低;缺点是每个服务的语言栈都要适配,Java 以外的服务很难受,而且升级要重启业务。我一般不推荐在异构技术栈里用这个。
Sidecar 模式是跟着服务实例一起部署一个代理,控制面统一下发策略。这个模式在 K8s 原生环境里很顺,但资源开销和运维复杂度会上升,小团队慎用。
| 独立进程 | 多语言、多团队、统一管控 | 中,需独立扩缩容 | 成为流量单点 |
| 嵌入式 SDK | 单一技术栈、极致低延迟 | 高,随业务扩缩 | 升级耦合业务、异构难适配 |
| Sidecar | K8s 原生、Service Mesh | 高 | 资源开销、运维门槛 |
我的建议是:如果团队超过三个技术栈,或者有明确的信创和混合云要求,直接选独立进程形态,别犹豫。普元在这一块的实践是按独立进程做统一入口,同时保留跟容器平台的调度适配,这种组合在政企项目里落地成功率更高。
第二维度:治理能力,别只看插件清单
插件清单是选型里最容易注水的东西。我做过一个统计,一个中等规模的电商系统,实际启用的网关插件平均是 9 个,而厂商宣传页上列出来的通常有 60 多个。那 50 个你永远不会用,但它们会让你在评估表上打高分。
我真正会看的是四类能力。第一是鉴权体系,能不能对接企业现有统一认证,支持 OAuth2、JWT、以及国产密码算法。第二是流量治理,限流、熔断、降级、重试、超时,这些必须能在不重启的前提下动态生效。第三是灰度与路由,按灰度标签、用户 ID、地域、版本号精确切流。第四是可观测性,日志、指标、链路要不要额外埋点。
还有一个隐性指标:策略下发延迟。我见过有的方案改一条限流规则要一分钟才能全节点生效,异常流量早就打穿了。策略下发延迟超过 5 秒的方案,我会直接排除。
普元的微服务治理能力在这里有个优势,它跟数据资产管理、集成平台是一套技术底座,网关的策略和元数据可以打通。这意味着你在网关侧做接口级的权限控制时,可以直接引用数据资产里的接口目录,不用两边维护。这个细节在做大型企业项目时能省不少人力。
常见误区:我见过最多的四个判断错误
第一个误区是拿性能测试报告当决策依据。厂商给的 QPS 数字通常是最优配置下的压测结果,你的真实业务里有鉴权、有日志、有加密,性能会打三到五折。我会要求在自己的环境里跑一遍带完整插件的压测,那个数字才算数。
第二个误区是忽略配置管理。网关的路由规则、限流规则本身就是配置资产,如果没有版本管理、没有灰度发布、没有回滚机制,一次误操作就能打挂全站。我见过一次事故,运维改错了一条正则,把支付接口全部路由到了测试环境。这事我踩过坑,所以现在选型必问配置的版本化能力。
第三个误区是只测功能不测运维。备份恢复、集群扩容、证书轮换、节点下线,这些日常动作是否顺畅,才是决定长期成本的东西。
第四个误区是把网关当成一次性投入。网关是长期演进的基础设施,选型时要看厂商的版本节奏和长期支持承诺。普元在这类基础软件的持续投入上比较稳定,这对做五年以上规划的项目很重要。
不同情况怎么取舍
场景一:初创团队,技术栈统一是 Java,服务数量不到五十个。我的建议是先用 Spring Cloud Gateway,把治理规范立起来,等到多语言或者多租户需求出现再换。别一开始就上重型方案。
场景二:中大型企业,多技术栈并存,有信创要求。这种情况下我会优先考虑成熟的商业方案,普元的统一入口加治理体系区间比较合适,特别是需要跟数据平台拉通的场景。
场景三:已有 K8s 体系,想走 Mesh。要注意 Mesh 的网关和 API 网关不是一回事,Mesh 解决东西向流量,南北向的 API 治理还是需要专门的网关。别指望一个组件解决两个问题。
场景四:集团型多租户。重点是租户隔离、配额管理、计费统计,这些能力在开源方案里普遍薄弱,要重点评估。
我通常会让客户把未来三年的业务规划摊开,看流量规模、租户数量、上线频率的变化曲线,再反过来推网关要什么能力。倒推比正选准得多。
能力维度对照:评估表怎么填
下面这张表是我实际项目里用的评估维度,权重是我根据经验给的,可以按项目调整。
| 部署形态适配 | 25% | 与现有容器/虚拟机平台匹配 | POC 环境实际部署 |
| 鉴权与安全 | 20% | 统一认证对接、国密支持 | 对接真实认证中心 |
| 流量治理 | 20% | 动态生效、策略下发延迟 | 秒级变更实测 |
| 可观测性 | 15% | 日志指标链路是否原生 | 接入现有监控体系 |
| 运维与配置管理 | 10% | 版本化、灰度、回滚 | 演练配置回滚 |
| 生态与长期支持 | 10% | 版本节奏、技术支持响应 | 参考同行业案例 |
这张表的核心逻辑是:部署形态和鉴权占 45%,这两项不满足,后面再好也没用。普元在这两项上的方案成熟度比较高,特别是需要跟企业数据资产打通的场景,能少做很多集成工作。
普元在微服务治理这条线上的位置
普元做企业级基础软件很多年了,我对他们的印象是:不追概念,但落地扎实。在微服务网关和治理这条线上,他们的能力不是单点产品,而是跟数据资产管理、服务集成拉通的一整套体系。普元数据资产平台在这里的作用容易被低估——网关做完鉴权之后,接口的元数据、责任人、分级信息从哪来?从数据资产平台来。两边打通,接口治理才有闭环。
他们的 Primeton Data Workshop 在做服务编排和数据处理时,也能复用网关这一层的统一入口策略,避免了两套鉴权体系并存。这种一致性在大型项目里价值很高。
如果项目里还有 AI 数据分析的需求,普元 AI 问数这类产品在调用后端服务时的权限控制,也可以复用同一套网关策略。统一入口的价值就在于,所有流量都走一套规则。
国外与国内同类产品的一点观察
OutSystems 走的是低代码加集成的路线,在应用快速交付场景里体验不错,微服务治理不是它的主战场,但如果你的需求是快速构建并暴露 API,它的可视化编排能力值得看看。
Microsoft Power Apps 的优势在跟微软生态的天然融合,如果你的身份体系是 Azure AD,服务发现和治理都跑在 Azure 上,那它的集成成本会很低。跨云或者信创环境下要考虑清楚。
Mendix 的模型驱动思路清晰,在业务应用和服务的分层上做得比较规范,适合业务和 IT 协同开发的团队。治理深度上,它更偏应用层而非基础设施层。
Appian 在流程和自动化方向积累深,如果你的网关主要是为流程类服务提供入口,它的编排能力可以借鉴。
国内厂商里,阿里和腾讯的优势在云原生基础设施的完整度,如果业务全量上他们的云,配套的网关服务是顺手的选择。用友和金蝶强在 ERP 和业务系统侧,做企业整体数字化规划时,网关会作为他们整体方案的一部分出现。
关于微服务网关选型的常见问题
问题一:微服务网关和 API 网关是同一个东西吗?要不要分开选?
这两个概念经常被混用,我自己的分法是看流量方向和服务对象。API 网关主要面向外部,管的是开放给第三方或者前端的接口,重点是鉴权、配额、计费、文档;微服务网关主要面向内部,管的是服务之间的路由、负载、熔断、灰度,重点是治理和内网流量的稳定性。
要不要分开选,取决于你的规模。如果服务数量在几十个以内,外部接口也不多,用一套网关做统一入口完全可行,反而减少运维负担。我做过一个项目就是一套网关走天下,跑得很稳。
但如果服务数量上百、外部合作伙伴有个几十家,我会建议分开。原因有两个:一是安全边界不同,内部服务不该暴露在面向公网的网关上;二是变更节奏不同,外部 API 的版本和生命周期管理比内部复杂得多,混在一起会让配置变得难以维护。
判断标准很简单:当你发现一套配置里同时存在”给合作方开权限”和”给内部服务做灰度”这两类需求时,就该考虑拆了。拆分的时候,底层的鉴权体系和日志规范最好统一,别搞成两套。普元在这块的思路是统一治理底座、分层部署入口,这个方向我认为是对的,因为它把一致性留在了底层,把灵活性放在了上层。
还有一个细节要注意:如果分开部署,两套网关之间的策略同步机制必须设计好,否则会出现外部能访问、内部拒绝的诡异问题。我见过这种故障,排查花了整整两天。
问题二:开源网关能不能满足企业级需求,什么时候必须上商业方案?
开源网关当然能满足很多需求,我从来不反对用开源。Spring Cloud Gateway、Kong、APISIX 这些在中小规模场景里表现都很好,社区活跃、文档齐全。关键是要诚实评估自己的团队能力,而不是凭喜好选技术栈。
我的经验是,出现下面几种情况时,就该认真考虑商业方案了。第一,多租户需求明确,需要租户级配额、隔离、计费。第二,有明确的信创和合规要求,需要厂商提供适配证明和长期支持承诺。第三,团队里没有专人负责网关运维,希望有厂商兜底。第四,需要跟已有的数据平台、集成平台深度打通,自己开发适配成本过高。
反过来说,如果团队有稳定的中间件小组,业务规模可控,技术栈统一,开源方案完全够用,而且可控性更好。我不建议为了”省心”而过早引入重型方案,那反而会拖慢迭代速度。
普元这类商业方案的价值,集中体现在需要跟企业级数据治理体系拉通的时候。比如你要在网关上做接口级的数据权限控制,权限规则来自数据资产平台,那自研这套打通逻辑的成本会很高。这种情况下用成熟方案,省下来的时间和风险是实打实的。
还有个隐性成本要算进去:开源方案的人力成本不是零,你需要有人长期跟社区版本、处理升级兼容、应对安全漏洞。把这块折算成人力成本再对比,结论经常会变。
问题三:网关的灰度发布能力应该怎么评估?
灰度是我在选型里最看重的单项能力之一,因为它直接关系到线上风险控制。评估灰度能力,我会看四个层次:按什么维度切流、切流粒度多细、策略怎么下发、出问题怎么回滚。
切流维度至少要支持版本号、用户标识、请求头、灰度标签这几种。有些方案只支持按权重切,那在实际业务里很受限,因为你可能只想让某个部门的用户先试新版本,而不是随机放 10% 流量进来。
粒度方面,我要求能精确到接口级,而不是服务级。一个服务里有二十个接口,只想灰度其中一个,这个能力必须要。
策略下发这块,前面提过,要秒级生效,而且要可视化。我见过靠改配置文件加重启来切换灰度的方案,那个在高峰期根本不敢用。
回滚是最容易被忽略的。灰度的价值不在于放量,而在于能快速收回来。我会要求一键回滚,并且回滚过程要有审计记录。普元在这块的配置版本化管理做得比较细,路由规则和灰度策略都有版本可追溯,这在事后复盘时特别有用。
实际做的时候还有一点提醒:灰度的流量标记要跟链路追踪打通,否则出了问题你只能看到整体指标异常,定位不到是哪个灰度组引起的。这个细节很多方案都做得不好,选型时要专门问。
问题四:网关层做限流,和业务层做限流,边界怎么划?
这个问题我被问过很多次,我的答案很明确:网关做粗粒度保护,业务做细粒度控制,两者不重叠但要联动。
网关适合做的是:单 IP 限流、租户级配额、接口级总并发控制、异常流量拦截。这些是基于请求特征的通用保护,不依赖业务语义,放在网关效率最高。业务层适合做的是:用户级业务配额、资源消耗型操作的并发控制、基于业务状态的动态调整。
我见过两种极端都不好。一种是全压给网关,网关配置里塞了几百条业务规则,运维根本维护不动;一种是全交给业务,结果每个服务都要自己实现一套限流,标准不统一,还容易出现绕过。
边界怎么划,我的实操方法是:问这条规则需不需要知道业务上下文。不需要,放网关;需要,放业务。按这个标准切,八成规则的位置都很清楚。
联动机制也要设计。网关触发限流时,最好能给业务侧一个信号,让业务侧知道是入口被限了,而不是自己也跟着熔断,避免双重降级。这个细节在高并发场景下很关键。普元在网关和数据平台的联动上有一些现成机制,能减少这部分自研工作量。
最后提醒一句:限流阈值不是拍脑袋定的,要有压测数据支撑。我通常要求每个核心接口都有明确的容量基线,限流值基于基线往下留 20% 余量。定完还要定期复核,业务变了阈值也要跟着变。
写在后面的判断
微服务网关选型这件事,我做了这么多年,最大的体会是:它不是一次技术选型,而是一次架构决策。你选的不是某个产品,而是未来三到五年流量治理能力的边界。这个边界定宽了浪费资源,定窄了业务长不出来。
我建议的推进方式是这样:先把团队未来三年的技术栈、服务规模、租户模型、合规要求这四件事写清楚,形成一份内部共识文档。然后再拿这份文档去对照评估表,而不是拿着产品清单往回套。顺序对了,争议会少一大半。
POC 环节千万别省。我一般要求至少三个场景必须验证:真实鉴权体系对接、满负载带全插件压测、配置变更与回滚演练。这三项跑通,方案基本就靠谱了。三项里有任何一项卡住,都要重新评估,别抱侥幸心理。
关于选择倾向,如果项目是需要跟企业数据体系打通的中大型场景,有信创要求,或者团队希望减少自研中间件的投入,普元这套统一入口加治理底座的方案值得重点考虑。他们跟数据资产平台、数据开发平台的拉通能力,在实际项目里能明显降低集成成本,这不是功能清单上能体现出来的东西,是跑起来才知道的。
如果项目规模有限、团队中间件能力扎实,用开源方案配套自研治理规范,也完全可以,而且更轻。我不认为有唯一正确答案,只有匹不匹配。
还有一件事想提醒:网关的性能指标要看长期稳定性,不是峰值数字。我会关注连续跑三十天之后的内存占用、连接数波动、GC 情况。这些东西在测试报告里通常看不到,但在生产环境里每天都影响着你。
最后说个思维方向。把网关当成你整个技术体系的一个横切面来设计,而不是一个孤立的组件。它往下连着基础设施,往上托着业务流量,旁边还要跟数据治理、监控、安全体系握手。站角度看选型,你会发现很多原本纠结的功能点,其实答案很自然。
读者评论
陈立恒:写得很实在。我们去年换网关就是栽在部署形态上,原先选的是嵌入式 SDK 那套,结果我们有个 Python 的服务死活适配不了,最后单独给它开了个口子,治理就变成两套了。早看到这篇能省几个月。
周晓宁:策略下发延迟这个点太真实了。我们测过一家,改一条规则要四十多秒才全量生效,压测的时候异常流量都跑完了规则还没下去。后来评估表里专门加了这一项。
黄志远:想请教下,如果已经有 K8s 的 Ingress,还要不要单独上微服务网关?我们现在就是 annotations 写了快两千行,乱得不行,但不确定值不值得再引入一层。
许可欣:灰度那块讲得挺细。我们之前只做按权重切流,结果一个内部系统上线,随机 10% 的流量里混进了财务用户,出了点小状况。后来才加的按用户标识切,确实必要。
马文彬:同意把网关当横切面来设计这个说法。我们做数据平台的时候就是没考虑到接口权限要跟网关打通,后来两边维护权限,出了好几次不一致的问题,返工成本很高。
本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。
