想象你管理着一座不断扩张的“微服务小区”。起初小区只有三栋楼——用户楼、订单楼、支付楼,住户(客户端)直接敲门办事。可楼越盖越多,几十栋楼分散各处,住户记不住地址,每栋楼还得各自查身份证、控人流,高峰期乱成一锅粥。这时,小区门口多了一处“大门+物业前台”,也就是微服务里的网关:所有住户只认大门,物业负责带路(路由)、验明正身(鉴权)、控制人流(限流)、登记访客(日志)。 今天摆在你面前的是三家来竞聘的物业团队:Kong 像老牌物业公司,制度成熟但改规则要走繁琐流程;APISIX 像新锐数字化团队,手脚麻利、随时热更新门禁规则;Envoy 则像外包来的特种兵,个人作战能力极强,却不带后勤,要你自己搭指挥系统。选物业不能光听口号,要从速度、工具、流程、维护、应急五个维度实地考察,最后按小区现状加权打分,才能选到那个“最合拍”的团队。

岗位关联

理解三家网关的核心差异,能帮你在真实微服务架构中做出既不过度设计、也不埋下性能隐患的选型决策,这是云原生与分布式系统工程师的基本功之一。

目录
  1. 可视化演示
  2. 网关全景:小区为什么需要物业
  3. 性能基准:谁在洪峰期放行最快
  4. 插件生态:谁的工具箱最齐全
  5. 配置模式:如何下达新规矩
  6. 运维复杂度:日常照料谁最省心
  7. 容错恢复:突发状况谁靠得住
  8. 选型实践:不同小区该怎么挑
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态展示网关请求处理链路、Kong/APISIX/Envoy三方案对比、电商多协议路由场景与性能基准指标。

本节配有交互动效(进入视口后自动加载,约 3KB)。

网关全景:小区为什么需要物业

假设你带着家人搬进一座新建的“微服务小区”。刚开始只有两三名住户,大家抄着楼号直接敲门就行。可当服务从个位数膨胀到几十个——用户服务、订单服务、支付服务各占一栋楼,住户们开始叫苦连天:记不住地址、排错队、被各楼保安反复查证件。物业公司应运而生:所有住户只从大门进出,物业替你带路、查证、限流、登记。这套“大门+前台”的制度,在微服务世界里就叫网关(API Gateway)。

网关是微服务架构的“统一交通入口”。所有客户端请求先到这个入口,再由网关做路由转发(把请求带给正确服务)、认证鉴权(确认你是不是小区住户)、限流熔断(防止人群把楼挤垮)、日志审计(登记访客)。网关通常分为控制面与数据面两种角色:数据面是一线保安,真正处理每个请求;控制面是物业总台,制定规则并推送给保安。

本期考察的三位候选人各有出身。Kong 是最早把开源 API 管理做成产品化的老牌项目,基于 Nginx/OpenResty 构建,插件体系以 Lua 编写;APISIX 同样基于 Nginx/OpenResty,但出场更晚、理念更云原生,配置存储在 etcd,支持插件热更新;Envoy 则是 C++ 编写的高性能七层代理,本尊并不是“完整网关”,而是数据面特种兵,通常需要搭配 Istio 等服务网格控制面使用。

一个网关入口让住户无需再记几十个地址,相当于把请求集中收口再统一分派:

三家物业的做事风格差异很大:Kong 像正规物业公司,制度完整;APISIX 像新锐团队,工具常换常新;Envoy 像外包特种兵,能力顶尖却不带后勤。究竟哪家适合你的小区,我们分维度逐一考察。

Ntotal=∑i=1kNiN_{total} = \sum_{i=1}^{k} N_i
含义:网关汇聚所有客户端请求,总请求量等于各来源请求量之和。Σ 是求和符号,N_i 是第 i 个来源的请求数。
  1. 汇总请求量 N_total小区大门一天接待的访客总人次,是所有楼接待量之和。
    NtotalN_{total}
  2. 求和符号 Σ把后面每一项挨个加起来,比如 N₁+N₂+…+Nₖ。
    ∑i=1k\displaystyle\sum_{i=1}^{k}
  3. 第 i 个服务请求 N_i下标 i 表示第几栋楼(第几个服务),N_i 表示它的请求量。
    NiN_i
  4. 累加范围 i=1 到 k从第一栋楼加到第 k 栋楼,k 是服务总数。
    i=1,2,…,ki = 1, 2, \ldots, k

性能基准:谁在洪峰期放行最快

小区早晨八点是高峰,住户刷脸进门的速度决定整体体验。有的物业门禁机安装的是顶级硬件(Envoy 的 C++ 引擎),再多的人涌入也从容不乱;有的门禁机用着经典感应系统(Kong/APISIX 背后的 Nginx),日常够用,但极端洪峰下会先到瓶颈。性能基准,就是在同一杆秤上称量三家的“单位时间放行能力”。

网关性能通常用两个指标衡量:吞吐量(QPS) 是每秒处理的请求数;延迟(Latency) 是单请求从进入到返回的耗时。业界常用 p99 延迟 代表极端体验——把所有请求耗时排序,第 99% 位置的耗时就是 p99。

在标准压测中,Envoy 凭借 C++ 事件驱动模型常能跑出最高的吞吐上限;Kong 与 APISIX 同源于 OpenResty,性能同源,但 APISIX 在配置读取、热加载上做了不少优化,小包请求下往往略优于 Kong。不过性能不只是峰值数字,还要看资源占用:Envoy 单实例内存占用通常略低;Kong 与 APISIX 在启用丰富插件后都需为插件进程预留额外内存。

p99 的数学表达式,是排序后取位置:

性能维度上,Envoy 像洪峰里也面不改色的特种兵,Kong 与 APISIX 类似普通门禁机但日常完全够用。值得注意的是,性能差距在绝大多数业务规模下不构成瓶颈,选型更要看后面几个维度。

p99=R(⌈0.99×n⌉)p_{99} = R_{(\lceil 0.99 \times n \rceil)}
含义:把所有请求耗时升序排列,取第“0.99×n 向上取整”个位置的耗时作为 p99,表示 99% 的请求比它更快。
  1. 延迟序列 R把 n 个请求的耗时收集起来,从小到大排成一队,R 表示这个有序序列。
    RR
  2. 百分比位置 0.99×n99% 分位对应的位置,比如 1000 个请求就找第 990 个。
    0.99×n0.99 \times n
  3. 向上取整 ⌈⌉如果位置不是整数就向上取一个,确保至少覆盖 99% 的数据。
    ⌈0.99×n⌉\lceil 0.99 \times n \rceil
  4. 下标取值 Rₖ从序列里取出第 k 个位置的耗时,k 就是上面算出的位置值。
    R(k)R_{(k)}

插件生态:谁的工具箱最齐全

物业团队的工具箱决定它能承接多少服务。有的物业配备齐全的储物柜——门禁卡、快递架、宠物寄存箱一应俱全(Kong);有的物业工具箱更科学,新增储物柜时不用关大门、即装即用(APISIX);有的特种兵团队只发一把多功能军刀,想装宠物寄存柜得自己找供应商(Envoy Filter 链)。

网关插件(Plugin) 是扩展网关能力的“积木”,常见的有:密钥认证、IP 白名单、限流、熔断、CORS 跨域、日志采集、灰度分流等。插件生态越丰富,你需要自研的代码就越少。

Kong 是最早建立插件市场的项目,官方与社区插件数量庞大,企业版还有额外增强,但配置变更往往需要 reload 才生效;APISIX 同样基于 OpenResty,但推出了“插件热加载”——增删改插件无需重启网关,对流量零中断;Envoy 则采用 C++ 过滤器链(Filter Chain) 机制,功能上可以无限自定义,但每个过滤器都要编写并编译进二进制,开发门槛高出一个量级。

用“需求覆盖率”量化计算:

插件生态这一项,Kong 和 APISIX 明显甩开 Envoy 一截。如果你需要“买回来就能用”的工具箱,Kong 和 APISIX 更顺手;如果你的团队 C++ 能力强、愿意为极致灵活性投入,Envoy 的过滤器链也可以定制一切。

C=PavailablePneededC = \frac{P_{available}}{P_{needed}}
含义:可用插件数除以所需插件数。覆盖率越接近 1,说明越少自己造轮子。
  1. 需求插件数 P_needed你的业务场景需要哪些功能点,先列一份清单,数量记作 P_needed。
    PneededP_{needed}
  2. 可用插件数 P_available该网关开箱即用、社区成熟的插件覆盖了清单中的多少项。
    PavailableP_{available}
  3. 覆盖率 C两者相除得到一个 0~1 的小数,越接近 1 意味着“拿来即用”程度越高。
    CC

配置模式:如何下达新规矩

物业改管理制度的方式,决定了业主体验。老牌物业公司改一条规则要写申请单、局长签字、发公文、贴公告栏,第二天才生效(Kong 改配置要 reload);新锐物业用数字化系统,管理员在后台点个按钮,门禁立刻按新规则执行(APISIX 热更新+etcd 下发);特种兵团队则不发公告,只给保安下无线电指令,指令格式还得你自己定(Envoy 通过 xDS 协议从控制面拉取)。

网关配置模式即“管理员如何把规则下发给数据面”。常见模式有:管理 REST API(调接口改配置)、声明式配置(YAML 描述期望状态,控制面监听并执行)、DB-less 模式(配置文件加载,无数据库依赖)。配置生效方式分为需 reload(重启 worker 进程)与热加载(新 worker 增量生效)。

Kong 传统上依赖 PostgreSQL 保存配置,管理 API 修改后需发送 reload 信号让 Nginx worker 重载;DB-less 模式下则要重新生成配置文件部署。APISIX 采用 etcd 存储+配置监听机制,变更实时推送到各节点,无需 reload。Envoy 定义了 xDS 接口(CDS/EDS/RDS 等),由控制面(如 Istio)通过 gRPC 流推送配置,数据面增量更新。Kong 也有声明式配置和 decK 工具,但历史包袱相对更重。

一次配置发布的总耗时可拆成三段:

配置模式这一项,APISIX 最贴近“点一下立即生效”的理想物业体验,Kong 是传统但成熟的流程,Envoy 则把话语权交给你、一切自定义。若业务要求频繁调整网关规则,热更新能力需要重点考察。

Ttotal=Tpush+Treload+TeffectT_{total} = T_{push} + T_{reload} + T_{effect}
含义:配置变更总时间等于下发、重载、生效三段之和。热加载方案的 T_reload≈0,总窗口更短。
  1. 下发时间 T_push配置从控制面传送到数据面的耗时,网络带宽与消息队列都会影响它。
    TpushT_{push}
  2. 重载时间 T_reload数据面需要重启 worker 加载配置的耗时;支持热加载则该项接近 0。
    TreloadT_{reload}
  3. 生效时间 T_effect新规则从加载完成到完全接管流量的时间。
    TeffectT_{effect}
  4. 总变更时间 T_total三段相加,决定一次配置发布的“停机窗口”有多久。
    TtotalT_{total}

运维复杂度:日常照料谁最省心

物业好招,难养。选物业除了看门禁质量,还要看日常开销:物业费多少(资源占用)、是否需要专门配一个“物业管理员”盯着(控制面组件)、换新制度时业主是否要停工一上午(升级与灰度)。

运维复杂度包含部署拓扑、组件依赖、升级策略、监控可观测性。网关部署简单可以省出大量人工;升级能否灰度、回滚是否容易,直接影响稳定性。

Kong 部署最“重”:传统模式要同时运维 PostgreSQL,Kong 节点本身无状态,加上控制面组件,零件较多但文档成熟。APISIX 依赖 etcd 作为配置中心,节点同样无状态,容器化部署非常顺滑,APISIX Ingress Controller 可直接对接 Kubernetes。Envoy 本身只是进程,要构成生产级网关方案必须自己维护或引入控制面(如 Istio、Gloo),学习曲线陡峭。

用可用性指标衡量“省心程度”:

运维复杂度上,Kong 是“配置齐全但零件多”,APISIX 是“轻装上阵、云原生友好”,Envoy 是“能打但后勤自理”。团队越小,越倾向选择 APISIX;团队有专职基础架构专家且追求极致可定制时,Envoy 才划算。

A=MTBFMTBF+MTTRA = \frac{MTBF}{MTBF + MTTR}
含义:系统可用性等于平均无故障时间占“无故障+修复”总时间的比例。MTTR 越短,可用性越高。
  1. 平均无故障时间 MTBF两次故障之间的平均正常运行时长,比如运行 720 小时才坏一次。
    MTBFMTBF
  2. 平均修复时间 MTTR故障发生后平均恢复时长,比如半小时搞定一次宕机。
    MTTRMTTR
  3. 可用性 A正常时间占总时间比例,99.99% 的可用性意味着年停机不到 1 小时。
    AA

容错恢复:突发状况谁靠得住

真正的物业好不好,要看断电、暴雨、电梯故障时怎么应对。有的物业有备用发电机(内置熔断器),有的靠临时工搬沙袋(外部插件),有的保安本身就是急救专家(原生机制),反应速度和恢复质量差别很大。

网关的容错能力指面对下游服务故障、突发流量、网络抖动时,能否保护整个系统。关键能力包括:熔断(Circuit Breaking)——下游快挂了就自动开门分流或拒绝;限流(Rate Limiting)——控制单位时间进场人数;重试(Retry)、超时控制、健康检查。

Envoy 在容错上是“科班出身”,内置非常精细的熔断器、重试预算、异常点检测(Outlier Detection),不依赖插件就具备很强的自愈能力;Kong 和 APISIX 通过插件实现限流和熔断——Kong 有 rate-limiting、proxy-cache 等插件,APISIX 提供 limit-count、limit-req,并依托 etcd 的分布式一致性降低配置丢失概率。Kong 依赖的 PostgreSQL 则需要额外做高可用。

故障总时间可分解为:

容错维度上,Envoy 是原始天赋最强的特种兵,Kong/APISIX 则像靠纪律与流程取胜的物业队。如果你下游系统本身比较脆弱,网关的容错能力必须放在选型优先级的前列。

Tdown=Tdetect+Tfailover+TrecoverT_{down} = T_{detect} + T_{failover} + T_{recover}
含义:业务实际感受到的不可用时长 = 发现故障时间 + 切换流量时间 + 恢复服务时间。
  1. 故障发现时间 T_detect健康检查发现下游不可用的耗时,被动等待超时会让它变长。
    TdetectT_{detect}
  2. 切换时间 T_failover流量从故障节点切换到健康节点的耗时,取决于负载均衡策略。
    TfailoverT_{failover}
  3. 恢复时间 T_recover故障节点恢复后重新纳入流量池的耗时。
    TrecoverT_{recover}
  4. 总宕机时间 T_down三段相加,就是业务真实感受到的停机时长,越小越好。
    TdownT_{down}

选型实践:不同小区该怎么挑

没有最好的物业,只有最适合小区现状的物业。老小区求稳,新小区求方便,科技园区追求定制化。选型本质是权衡:把性能、生态、配置、运维、容错五个维度按你的业务权重加权,算出一个综合分。

选型建议一般按业务规模与技术栈划分:中小团队/创业期优先考虑上手速度与运维成本;中大型企业看重治理能力与插件生态;云原生重度用户关注 Kubernetes 集成度;已有服务网格的团队则应避免重复建设网关。

不同场景的侧重点也一目了然:

  • 中小团队、Kubernetes 原生:优先 APISIX,热更新+etcd+Ingress Controller 一套带走,运维成本最低。
  • 大型企业已有统一 API 治理体系:Kong 更稳妥,插件市场和成熟文档让团队容易上手。
  • 已深度使用 Istio/服务网格:Envoy 已经是数据面,直接在其上扩展即可,不必再引入独立网关。
  • 超高并发、极低延迟业务(如金融高频):Envoy 性能优势明显,但需配专业控制面。

把多维评分用加权求和统一:

把加权公式套进你家小区的需求,答案自然浮现。选型不是选“最强”,而是选“最合拍”——这也是本篇文章最想传递的一句话。

S=∑i=15wi×si,∑i=15wi=1S = \sum_{i=1}^{5} w_i \times s_i, \quad \sum_{i=1}^{5} w_i = 1
含义:五个维度各打一个分 s_i,乘以权重 w_i 后求和得到综合分 S。权重之和为 1,保证结果可比较。
  1. 维度得分 s_i性能、生态、配置、运维、容错五个维度分别打 0~1 之间的分。
    sis_i
  2. 权重 w_i每维度的相对重要程度,由团队当前最痛的痛点决定。
    wiw_i
  3. 加权求和 S逐项相乘再相加,得到综合分,排名最高的就是当前场景的最优解。
    SS
  4. 权重归一化约束所有 w_i 相加等于 1,保证 S 落在合理区间、不同权重方案可对比。
    ∑i=15wi=1\sum_{i=1}^{5} w_i = 1

AI 应用场景

电商大促流量限流与熔断

阶段:模型服务部署后的流量治理与在线推理保护

解决的问题:大促流量峰值是平时的几十倍,硬编码限流无法动态调整,人工扩容存在分钟级滞后,容易将下游 AI 推荐/风控服务打垮。

具体案例:某电商平台使用 APISIX 的 limit-req 与 limit-count 插件,按用户维度限流,促销开始前在控制台一键下发新阈值、无需重启网关;峰值时配合限流插件保护下游排序模型服务,p99 延迟从 800ms 降到 200ms。

银行开放 API 平台治理

阶段:API 资产管理、密钥治理与调用审计

解决的问题:银行开放平台需要为几十家生态伙伴提供密钥、配额、审计能力,传统 ESB 改造周期长,难以支撑快速接入。

具体案例:某城商行以 Kong 作为开放平台网关,用 key-auth 插件管理合作伙伴密钥,用 ACL 插件控制不同 tier 的访问权限,配合企业版监控面板统一审计每一次调用,合规检查从两周缩短到一天。

低延迟智能风控服务网格

阶段:AI 模型推理服务的数据面通信与故障隔离

解决的问题:风控推理链路要求 p99 低于 30ms,传统代理在超时控制、熔断降级上不够精细,单点故障容易拖垮整条链路。

具体案例:某金融科技公司在 Istio 中部署 Envoy 作为数据面,为 AI 特征服务配置细粒度超时与熔断,利用异常点检测自动摘除异常推理节点,发生单机故障时近乎无感知完成切换。

Python 演示

python40 行
# -*- coding: utf-8 -*-"""网关选型评分器:从五个维度为候选网关加权打分""" GATEWAYS = {    'Kong':   {'perf': 0.78, 'eco': 0.92, 'cfg': 0.72, 'ops': 0.82, 'ft': 0.75},    'APISIX': {'perf': 0.88, 'eco': 0.90, 'cfg': 0.85, 'ops': 0.74, 'ft': 0.84},    'Envoy':  {'perf': 0.95, 'eco': 0.62, 'cfg': 0.58, 'ops': 0.55, 'ft': 0.92},} WEIGHTS = {'perf': 0.30, 'eco': 0.20, 'cfg': 0.20, 'ops': 0.15, 'ft': 0.15} DIM_NAME = {'perf': '性能', 'eco': '生态', 'cfg': '配置', 'ops': '运维', 'ft': '容错'}  def total_score(name, weights=None):    w = weights or WEIGHTS    d = GATEWAYS[name]    return sum(w[k] * d[k] for k in w)  def recommend(weights=None):    results = [(name, total_score(name, weights)) for name in GATEWAYS]    results.sort(key=lambda x: x[1], reverse=True)    return results  def show_detail(name):    d = GATEWAYS[name]    return {DIM_NAME[k]: v for k, v in d.items()}  def main():    print('默认权重:', {DIM_NAME[k]: v for k, v in WEIGHTS.items()})    for name, s in recommend():        print('{}: {:.2f}'.format(name, s))    print('评分详情 - APISIX:', show_detail('APISIX'))  if __name__ == '__main__':    main()
目的:用加权评分模型对三种网关做选型排名,演示正文公式 S = Σwᵢsᵢ 的工程落地。
  1. GATEWAYS = {...}用字典保存三种网关在五个维度上的经验分数,分数范围 0~1。
  2. def total_score(name, weights=None)接收网关名与权重表,返回该网关的综合分。
  3. return sum(w[k] * d[k] for k in w)生成器对每个维度做“权重×得分”再求和,即公式 S 的实现。
  4. w = weights or WEIGHTS如果没有传入定制权重,则使用默认权重表。
  5. results.sort(key=lambda x: x[1], reverse=True)按综合分从高到低排序,输出选型排名。
  6. def main():程序入口,打印默认权重、各网关排名与 APISIX 的评分明细。

常见误区

误区很多文档把 Envoy 称为“网关”,于是初学者以为它和 Kong/APISIX 一样,装好就有管理后台、插件商店、开箱即用的 API 管理能力。

正解Envoy 本质是高性能 L4/L7 数据面代理。控制面(配置下发)、管理界面、API 产品化能力都需要自建或引入 Istio 等系统支撑。它更像“特种兵”,而不是“物业公司全套服务”。若团队无人维护控制面,生产落地会非常吃力。

为何常见:Envoy 在服务网格中出镜率极高,且官方文档强调“cloud-native proxy”,容易被误解为完整网关产品。

误区压测报告里 Envoy 吞吐最高、延迟最低,那所有高并发场景都该选 Envoy?很多人在选型 PPT 里只放一张 benchmark 图就拍板。

正解真实瓶颈通常在业务逻辑、下游数据库与网络,网关很少是第一个垮掉的那层。若团队无人熟悉 Envoy 控制面,性能优势会被运维成本大幅抵消。正确做法是用加权评分模型,把生态、运维、容错也放进决策。

为何常见:性能数据最容易量化、最有视觉冲击力,而生态与运维成本难以量化,容易被忽略。

误区Kong、APISIX、Envoy 都是开源软件,不看商业版也能跑,所以选型零成本、随便试错。

正解开源意味着“免费获取源码”,不意味着“免费维护”。Kong 企业版、APISIX 商业支持、Envoy 控制面组件都有隐性成本;即使纯开源,也需要投入人力维护 etcd、PostgreSQL 等高可用基础设施,这部分隐性支出往往超过软件许可费。

为何常见:“开源”的营销光环容易让人忽略部署运营资源,尤其在预算有限的小团队里。

误区APISIX 支持插件热加载,Kong 要 reload,于是“热更新”被奉为绝对优势,认为 Kong 的配置模式过时了。

正解OpenResty 体系的 reload 属于优雅重载,通常能保持连接不中断且耗时极短;热更新确实减少了 reload 窗口,但真正要评估的是“业务中断时间”。两者在大多数场景都够用,热更新是加分项,不是决策的一票定音。

为何常见:人们容易把“新技术优于旧技术”简化为“新特性全面胜利”,忽略了大多数业务根本没有高到需要区分这一点。

面试题

Q1. Kong 与 APISIX 共同依赖的底层基础是什么?

单选题 · easy

  • A.Caddy 代理
  • B.Nginx 内核← 正确答案
  • C.Netty 服务
  • D.HAProxy 集群

答案:B。Kong 和 APISIX 都构建在 Nginx/OpenResty 之上,通过 Lua 扩展能力。Caddy 用 Go 编写、Netty 是 Java 网络库、HAProxy 是独立代理,都不是它们的底座。记住“同源 Nginx、各走各路”就能答对。

Q2. Envoy 在微服务体系中最核心的角色定位是?

单选题 · easy

  • A.配置中心
  • B.数据面代理← 正确答案
  • C.注册中心
  • D.调度平台

答案:B。Envoy 是一个高性能 L4/L7 数据面代理,负责实际转发流量;控制面(如 Istio)负责下发配置。它不像 Nacos/Eureka 那样做服务注册,也不像 Kubernetes 那样做调度,因此选“数据面代理”。

Q3. 以下哪项是 APISIX 插件相对 Kong 的突出优势?

单选题 · easy

  • A.编写语言
  • B.热加载机制← 正确答案
  • C.插件数量
  • D.界面美观程度

答案:B。两者插件都用 Lua 编写,数量都很庞大。APISIX 的核心差异化是插件热加载——增删改插件无需 reload,对流量零中断。管理界面都不是开箱即用的核心卖点,因此选 B。

Q4. APISIX 的配置中心依赖以下哪个组件?

单选题 · mid

  • A.MySQL
  • B.Redis
  • C.etcd← 正确答案
  • D.Kafka

答案:C。APISIX 使用 etcd 保存配置,利用其分布式一致性实现配置实时推送与高可用。Kong 传统模式依赖 PostgreSQL,Redis 一般用于缓存或限流计数,Kafka 用于消息队列,均非配置中心。

Q5. p99 延迟的正确含义是?

单选题 · mid

  • A.1% 的请求耗时不大于该值
  • B.99% 的请求耗时大于该值
  • C.99% 的请求耗时不超过该值← 正确答案
  • D.所有请求的平均耗时

答案:C。p99 是把所有请求耗时升序排列后第 99% 位置的耗时,表示 99% 的请求都比它快(不超过它)。A 描述的是 p1,B 方向反了,D 是平均延迟,都不对。

Q6. 下列属于网关熔断容错能力的技术有哪些?

多选题 · mid

  • A.请求重试补偿
  • B.异常点检测← 正确答案
  • C.配置热加载
  • D.主动健康检查← 正确答案

答案:BD。熔断容错关注“快速失败”与“故障隔离”,异常点检测(Outlier Detection)和主动健康检查是 Envoy 等实现熔断的重要手段。请求重试是补偿机制而非熔断本身,配置热加载属于配置模式范畴,与容错无关。

Q7. 哪些场景更适配 Envoy 而不是 Kong/APISIX?

多选题 · mid

  • A.已有 Istio 服务网格← 正确答案
  • B.纯 Nginx 运维团队
  • C.极致低延迟要求← 正确答案
  • D.快速上线 API 市场

答案:AC。Envoy 天然适合已有服务网格的基础设施,且 C++ 引擎在极限性能下更有优势。纯 Nginx 团队上手 Lua 系网关更快;快速上线 API 市场需要丰富插件生态,Kong/APISIX 更合适。

Q8. Kong 传统模式的状态存储主要依赖以下哪个数据库?

单选题 · mid

  • A.MongoDB
  • B.PostgreSQL← 正确答案
  • C.LevelDB
  • D.SQLite

答案:B。Kong 传统部署用 PostgreSQL(早期也支持 Cassandra)保存路由、服务、消费者等元数据;DB-less 模式则改用声明式配置文件。MongoDB、LevelDB、SQLite 都不是 Kong 官方主推的存储。

Q9. 关于网关选型加权模型 S = Σwᵢsᵢ,正确的描述有哪些?

多选题 · hard

  • A.所有权重 wᵢ 之和为 1← 正确答案
  • B.sᵢ 表示第 i 个维度的权重
  • C.sᵢ 是第 i 个维度的得分← 正确答案
  • D.所有维度权重必须相等

答案:AC。公式中 wᵢ 是权重、sᵢ 是各维度得分,权重归一化要求 Σwᵢ=1。权重由业务痛点决定、不要求相等。B 和 D 都歪曲了符号含义,属于常见概念混淆。

Q10. 生产环境网关部署中,最应优先保障的能力是?

单选题 · hard

  • A.管理界面美观易用
  • B.故障快速恢复← 正确答案
  • C.插件数量最多
  • D.单机性能极限

答案:B。生产环境的第一优先级是稳定与可恢复——故障发现、切换、恢复时间直接决定可用性 A = MTBF/(MTBF+MTTR)。界面美观、插件数量、极致性能都是加分项,但无法弥补长时间宕机带来的损失。