想象你住在一个大型高档小区里。每栋楼——健身房、超市、图书馆——都有自己的门卫岗亭,所有访客进出楼栋都必须从岗亭前经过,登记身份、接受检查。而小区大门口还有一个物业管理中心,它掌握着全小区的通讯录、访客规则和楼栋地图。门卫们执行规则,物业中心制定并下发规则,两者通过一台专用对讲机保持联系。 这个画面,就是 Service Mesh(服务网格)的日常缩影。小区里的每栋楼是微服务,每栋楼门口的门卫是 Sidecar 数据面代理(数据面),物业管理中心是控制面,对讲机则是数据面与控制面之间的 xDS 协议通道。门卫负责拦截和放行每一次“访问”,物业中心负责告诉门卫“谁可以进、怎么进、出了问题怎么办”。 本文帮你彻底拆解这个“小区治理体系”,看看 Sidecar 如何透明地拦截流量,控制面如何下发策略,以及这套机制带来的性能代价与优化空间。读完你就能理解,为什么云原生架构离不开这套“网格化”的治理哲学。

岗位关联

对 AI 从业者而言,Service Mesh 是云原生微服务架构的必修课。理解数据面与控制面的分工协作,能让你在大型分布式系统设计、流量治理与稳定性建设中做出更专业的架构决策。

目录
  1. 可视化演示
  2. 数据面职责:门卫岗亭的分内事
  3. 控制面职责:物业中心的指挥棒
  4. 协议交互设计:岗亭与物业的对讲机
  5. 流量治理机制:访客疏导的智慧
  6. 安全策略体系:访客双重验证
  7. 性能开销评估:物业成本效益账
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示Service Mesh数据面Sidecar代理与控制面的分工协作,展示请求流量如何被Sidecar透明拦截转发,以及控制面通过xDS协议向数据面下发配置策略。

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

Service Mesh 双面 数据面:Sidecar拦截转发流量 控制面:策略配置集中下发 xDS协议:数据面与控制面桥梁 透明注入 业务零改造

数据面职责:门卫岗亭的分内事

在小区里,每栋楼门口的门卫岗亭从不参与楼内的生意,但它知道每一笔进出账目。访客来了,门卫先拦下、登记、比对手册,然后放行;快递来了,门卫先查验、称重、记录,再转交。当业务代码还在楼内安心办公时,Sidecar 门卫已经在边界上把一切进出事务处理得井井有条。

这种“边车模式”(Sidecar Pattern)的本质,是把流量管控能力从业务容器中剥离出来,以独立代理进程部署在每个服务实例旁边。在 Kubernetes 环境中,Istio 通过注入 Init 容器修改 iptables 规则,将出入网卡的流量透明地劫持给 Envoy 代理——业务服务完全无感知,就像楼内住户从不需要亲自跑到岗亭查岗一样。

数据面 Sidecar 的职责清单包括四件事:流量拦截(iptables 透明劫持)、协议转发(HTTP/HTTPS/gRPC 的多协议解析与路由)、负载均衡(按权重挑选健康实例)、熔断重试(失败快速退避与重放)。每一次请求经过,门卫都要在岗亭日志上画一道杠,这些杠汇总成了可观测性的数据基础。

门卫的存在让住户安心,也带来了进门登记的几秒钟延迟——这就是数据面的天然代价。理解了这层开销,你就理解了大厂为什么总在代理性能上死磕。

Ttotal=Tapp+2×(Tproxy+Tnetwork)T_{\text{total}} = T_{\text{app}} + 2 \times \left( T_{\text{proxy}} + T_{\text{network}} \right)
这表示一次服务调用的总耗时等于业务处理时间,加上入站和出站两次穿越 Sidecar 的代理开销与网络开销。
  1. 总耗时T_total 代表一次完整服务调用的端到端耗时。
    TtotalT_{\text{total}}
  2. 业务时间T_app 是业务服务自身处理请求花费的时间,不受 Service Mesh 影响。
    TappT_{\text{app}}
  3. 两倍因子× 2 表示请求从发起方出发先经过本端 Sidecar,到达目标后还要经过对端 Sidecar,共两跳代理。
    2×2 \times
  4. 代理耗时T_proxy 是单次 Sidecar 在七层协议解析、路由匹配过程中的 CPU 与内存开销。
    TproxyT_{\text{proxy}}
  5. 网络耗时T_network 是 Sidecar 与目标实例之间的实际网络传输延迟。
    TnetworkT_{\text{network}}

控制面职责:物业中心的指挥棒

物业中心不站在寒风中拦访客,但它管着全小区的命脉:一份全量住户登记册(服务发现)、一本更新的值班手册(配置管理)、一套访客审批流(策略下发)、一个证件办理窗口(证书签发)。门卫们所有的“该怎么做”,都来自物业中心的统一指挥。

控制面是 Service Mesh 的“大脑”与“中枢”,它不直接参与业务流量转发,而是持续监控整个集群的服务实例注册情况,并通过 gRPC 流式接口向所有 Sidecar 下发配置。当某个服务扩容、某个实例宕机、某条路由规则被运维修改时,控制面会把变化翻译成 Sidecar 能理解的数据结构,再推送到每一只“耳朵”边。

控制面还有一个关键角色:证书权威(CA)。在启用 mTLS 时,控制面负责为每个服务实例签发短期身份证书,并自动完成轮换,让“证件”在过期前悄悄换新,门卫和访客都不需要停下脚步。主流的控制面实现包括 Istiod(Istio)、xzds 服务(Linkerd)等,它们都遵循同一套“指南针”逻辑:上层意图,下层执行。

物业中心不能停电,控制面不能宕机。一旦指挥棒失灵,门卫们就会各执一词,整个小区陷入混乱——所以控制面通常部署为多副本高可用形态。

Pconverged=NupdatedNtotalP_{\text{converged}} = \frac{N_{\text{updated}}}{N_{\text{total}}}
配置收敛率等于已更新配置的 Sidecar 数量除以集群中需要更新的 Sidecar 总数,控制面的目标就是让这个比值逼近 1。
  1. 收敛率P_converged 描述控制面配置在数据面中的传播完成度。
    PconvergedP_{\text{converged}}
  2. 已更新数N_updated 表示已成功接收并应用最新配置的 Sidecar 代理数量。
    NupdatedN_{\text{updated}}
  3. 总数N_total 表示当前服务网格中所有需要同步配置的 Sidecar 数量。
    NtotalN_{\text{total}}
  4. 目标当分子等于分母时收敛率为 1,意味着数据面与控制面状态完全对齐。
    NupdatedNtotal→1\frac{N_{\text{updated}}}{N_{\text{total}}} \to 1

协议交互设计:岗亭与物业的对讲机

小区岗亭和物业中心之间有一台专用对讲机。物业喊“从今天起健身房访客必须预约”,门卫按下应答键“收到”。如果规则改了,物业不会重新印发整本手册,只用对讲机补一句“取消预约要求”。这个高效、增量、双向的通信机制,就是 xDS 协议的真实写照。

xDS(X Discovery Service)是一组以 DS 结尾的发现服务协议族,包括监听器发现(LDS)、路由发现(RDS)、集群发现(CDS)、端点发现(EDS)等。控制面通过 gRPC 双向流与 Sidecar 建立长连接,实现配置的实时推送;Sidecar 也会向控制面上报实例状态与配置 ACK/NACK 响应,形成闭环。

xDS 的增量推送是它的灵魂。传统全量推就好比物业每次更新规则都重印整本手册,随着 Sidecar 数量增长,控制面压力剧增。增量推送则只发送变化的资源项,通过版本号(version_info)标识和资源名称引用实现按需更新,将同步耗时从“全量重传”压缩为“只传补丁”。

对讲机通话虽快,但每台对讲机都是一份维护成本。这也解释了为什么 Service Mesh 的配置通道需要精心设计——它是整个网格“神经系统”的带宽瓶颈。

ΔTsync=O(ΔC)\Delta T_{\text{sync}} = O(\Delta C)
配置同步的增量耗时与配置变化量成正比——这是增量推送的数学本质,也是理解 xDS 性能优势的钥匙。
  1. 同步耗时变化量ΔT_sync 表示一次配置更新从控制面发出到 Sidecar 应用的耗时增量。
    ΔTsync\Delta T_{\text{sync}}
  2. 配置变化量ΔC 表示本次更新涉及的资源数量,比如新增了 3 条路由规则。
    ΔC\Delta C
  3. 量级符号O(·) 表示复杂度上界,这里说明耗时随变化量线性增长,而不是随全量配置增长。
    O(ΔC)O(\Delta C)

流量治理机制:访客疏导的智慧

节假日的小区门口,门卫大爷有一整套疏导智慧:不同身份的访客走不同通道(路由),同一时刻只放行固定人数(限流),访客超过 3 分钟没办完事要催一催(超时),办证窗口故障时直接劝返(熔断),新来的保洁阿姨先在小范围试工(灰度)。流量治理,就是把这些生活智慧数字化。

Service Mesh 的流量治理是基于 Envoy 的路由与过滤器链来实现的。运维人员通过 VirtualService 定义路由规则——比如“带 debug=true 的请求全部发往 v2 版本”;通过 DestinationRule 配置负载均衡策略、连接池大小与熔断阈值。控制面将规则下发给 Sidecar,门卫会按照这本“规则手册”决定每一次放行。

重试与超时是治理中最常见的组合拳。当 Sidecar 转发请求失败时,它可以按照配置执行最多三次重试,每次间隔递增;当上游实例响应超时,Sidecar 直接返回 504,避免调用方长时间悬挂。熔断则像一个紧急闸门:当某个服务的错误率超过阈值时,门卫直接跳过该楼栋,让请求快速失败,而不是让所有访客都堵在门口。

门卫大爷的疏导智慧,本质上就是一套不依赖业务代码的“交通法规”。这正是 Service Mesh 最吸引人的地方——治理能力与业务逻辑彻底解耦,开发者只管写好楼里的生意,门口的事交给门卫。

ErrorRate=NfailedNtotal>Tthreshold⇒CircuitOpen\text{ErrorRate} = \frac{N_{\text{failed}}}{N_{\text{total}}} > T_{\text{threshold}} \Rightarrow \text{CircuitOpen}
在滑动窗口内计算请求错误率,一旦超过配置阈值就触发熔断,后续请求快速失败,直到熔断恢复周期结束。
  1. 错误率ErrorRate 是当前时间窗口内失败请求占全部请求的比例。
    ErrorRate\text{ErrorRate}
  2. 失败数N_failed 是窗口内返回 5xx、超时或连接异常的请求数量。
    NfailedN_{\text{failed}}
  3. 总请求数N_total 是窗口内进入该 Sidecar 的目标服务的全部请求数量。
    NtotalN_{\text{total}}
  4. 阈值比较T_threshold 是运维配置的熔断阈值,错误率超过它就触发。
    >Tthreshold> T_{\text{threshold}}
  5. 熔断打开CircuitOpen 表示断路器进入打开状态,后续请求不再转发。
    ⇒CircuitOpen\Rightarrow \text{CircuitOpen}

安全策略体系:访客双重验证

小区从某天起升级了安保系统:每位访客不仅要刷身份证,还要经过被访业主的手机确认。两个证据同时通过,门卫才放行。这就是 mTLS(双向 TLS)的日常版本——不只是客户端证明自己是谁,服务端也要亮出证件,双方互相验证身份。

在 Service Mesh 中,Sidecar 之间默认不信任任何连接。控制面会为每个服务实例签发基于 SPIFFE 标准的身份证书(内置服务账号与命名空间信息),作为它在网格中的“数字身份证”。发起请求时,两端 Sidecar 通过 mTLS 握手确认彼此身份,并协商出会话密钥加密后续通信——相当于门卫不仅验了访客的证件,还确认了楼栋真的在等你。

访问控制(AuthorizationPolicy)是第二道闸门。运维可以定义“只有 order-service 能调用 payment-service 的 /charge 接口”这类细粒度规则,Sidecar 会像门卫核对预约名单一样检查每个请求的身份、来源 IP 和路径。相比传统微服务在代码里做认证鉴权,这种边车化安全把安全能力变成了基础设施,统一管控、无感知升级。

双重验证让小区更安全,但每次访客进门都要多花几秒。这正是安全与性能的经典权衡——Service Mesh 通过会话复用与长连接技术,把这个代价降到了可以忽略的程度。

Thandshake=Nrtt×RTT+TcryptoT_{\text{handshake}} = N_{\text{rtt}} \times RTT + T_{\text{crypto}}
mTLS 握手总耗时等于握手消息往返次数乘以网络往返延迟,再加上证书校验与密钥协商的加解密计算时间。
  1. 握手总耗时T_handshake 表示完成一次双向 TLS 握手所需的时间。
    ThandshakeT_{\text{handshake}}
  2. 往返次数N_rtt 表示完成双向证书交换与密钥协商需要的网络往返跳数。
    NrttN_{\text{rtt}}
  3. 往返延迟RTT 是客户端与服务器之间一次网络往返的物理延迟。
    RTTRTT
  4. 加密计算T_crypto 是证书签名验证、密钥协商等密码学运算的 CPU 耗时。
    TcryptoT_{\text{crypto}}

性能开销评估:物业成本效益账

小区物业年会上,业委会抛出一个问题:“每个楼栋配门卫,到底值不值?”为了回答这个问题,物业做了一张成本效益表:门卫工资(代理 CPU 与内存)、登记耗时(额外延迟)、对讲机维护(控制面带宽)。答案是——为了安全与秩序,这笔钱必须花,但要花得聪明。

Service Mesh 的性能开销主要来自三个层面:延迟层面,每次请求多出两跳代理转发(见第一节公式);资源层面,每个 Sidecar 独占约 50~100MB 内存和若干 CPU 核;更新层面,全量配置推送在数千实例时会显著挤占控制面资源。生产环境中的实测数据表明,纯转发场景下 Envoy 增加约 2~5ms 的 P99 延迟,这对大多数业务可以接受,但对高频量化交易系统可能致命。

调优方案通常围绕四招展开:第一,使用高性能代理(如 Envoy 的 HTTP/2 多路复用);第二,减少 Sidecar 跳数(对延迟敏感的调用可配置直连绕过);第三,合并 xDS 推送通道,用 ADS 聚合多个资源类型;第四,为 Sidecar 设置独立的 CPU 优先级与内存限额,避免与业务容器争抢资源。

聪明的物业不会因为门卫工资就取消安保,而是通过排班优化降低人力成本。同理,成熟的 Service Mesh 实践者会建立持续的基准测试与巡检机制,让每一毫秒的额外开销都有据可查、有账可算。

Rsurcharge=TmeshTrawR_{\text{surcharge}} = \frac{T_{\text{mesh}}}{T_{\text{raw}}}
延迟放大系数等于启用 Service Mesh 后的请求耗时除以原始直连耗时,这个比值越接近 1,说明网格引入的开销越可控。
  1. 放大系数R_surcharge 衡量网格化带来的额外延迟比例。
    RsurchargeR_{\text{surcharge}}
  2. 网格延迟T_mesh 表示在完整 Sidecar 链路下的端到端请求耗时。
    TmeshT_{\text{mesh}}
  3. 原始延迟T_raw 表示服务之间不经代理直接通信的请求耗时。
    TrawT_{\text{raw}}

AI 应用场景

电商大促流量治理

阶段:微服务与云原生架构

解决的问题:双十一大促期间秒杀流量瞬间暴增,传统微服务模式下每个业务团队都要在代码里手动实现限流、熔断和降级,联调周期长、改一处动全身。Service Mesh 将治理策略下沉到 Sidecar,运维只需在控制面调整 VirtualService 与熔断阈值,无需业务发版即可完成全链路流量整形。

具体案例:某头部电商平台在大促前通过 Istio 控制面下发灰度路由,将 10% 流量导入新版本库存服务;大促期间监控发现支付服务错误率超过 20%,熔断器自动打开,请求快速失败,页面顶部降级为提示文案,避免雪崩。整个过程零代码变更。

金融行业全链路 mTLS 合规

阶段:安全策略与合规治理

解决的问题:金融监管要求服务间数据传输必须加密且身份可追溯。传统 TLS 需要每个服务维护证书并自行验签,证书轮换运维成本极高。Service Mesh 的控制面作为统一 CA,为所有 Sidecar 自动签发短期证书并定时轮换,服务只需声明启用 mTLS。

具体案例:某股份制银行在核心支付链路启用 Istio 的 PeerAuthentication 策略后,数百个微服务之间的调用自动完成双向认证与加密,安全审计日志中每条调用都带上了 SPIFFE 身份标识,合规检查从“人工抽样”变为“全量可证”。

多集群统一服务发现

阶段:基础设施与网络管理

解决的问题:企业在多个公有云与自建机房部署了同一套业务体系,跨集群的服务发现与流量调度极其复杂。Service Mesh 通过控制面的多集群模型,把各集群的端点信息汇聚成一份全局服务视图,Sidecar 可实现跨地域的负载均衡与故障转移。

具体案例:某出行平台在三个云区域部署了订单服务,通过服务网格的 Cross-Network 配置实现按权重分发:主区域承载 80% 流量,灾备区域 20%。当主区域机房断网时,控制面自动摘除故障端点,Sidecar 在一分钟内完成全量流量切换,用户无感知。

Python 演示

python70 行
import random  class Sidecar:    """模拟数据面 Sidecar:拦截请求、统计错误、执行熔断与转发"""     def __init__(self, name):        self.name = name        self.threshold = 0.5        self.error_count = 0        self.total_count = 0        self.open = False     def call(self, target):        if self.open:            return "circuit_open"        self.total_count += 1        ok = random.random() > 0.35        if not ok:            self.error_count += 1        rate = self.error_count / max(self.total_count, 1)        if rate > self.threshold and self.total_count > 5:            self.open = True        return "ok" if ok else "error"     def sync(self, config):        self.threshold = config.get("threshold", 0.5)        self.open = False        self.error_count = 0        self.total_count = 0        return self.threshold  class ControlPlane:    """模拟控制面:维护配置表并向数据面推送规则"""     def __init__(self):        self.rules_map = {}     def update_rule(self, service, rule):        self.rules_map[service] = rule     def push(self, sidecar):        rule = self.rules_map.get(sidecar.name, {})        sidecar.sync(rule)        return rule  def main():    cp = ControlPlane()    proxy_a = Sidecar("order-v1")    proxy_b = Sidecar("pay-v1")     cp.update_rule("order-v1", {"threshold": 0.4})    cp.update_rule("pay-v1", {"threshold": 0.2})    cp.push(proxy_a)    cp.push(proxy_b)     for i in range(20):        r1 = proxy_a.call("pay-v1")        r2 = proxy_b.call("order-v1")        print(f"req {i}: order->pay {r1}, pay->order {r2}")     cp.update_rule("order-v1", {"threshold": 0.9})    cp.push(proxy_a)    print("control plane pushed new rule to order-v1")  if __name__ == "__main__":    main()
目的:演示 Service Mesh 中数据面 Sidecar 的熔断逻辑与控制面配置分发机制。
  1. class Sidecar数据面代理的简化模型,承载流量转发与熔断判断的核心逻辑。
  2. self.threshold = 0.5熔断阈值属性,来自控制面下发的配置,类比门卫手册上的“容忍度红线”。
  3. if self.open: return "circuit_open"熔断打开后快速失败,不再尝试转发请求。
  4. ok = random.random() > 0.35模拟上游服务 35% 概率返回错误,制造熔断触发条件。
  5. rate = self.error_count / max(self.total_count, 1)计算窗口内错误率,与阈值比较后决定是否熔断。
  6. def sync(self, config)Sidecar 接收控制面推送并应用新配置,同时重置熔断状态。
  7. class ControlPlane控制面的精简实现,通过 rules_map 维护全局配置表。
  8. cp.push(proxy_a)执行配置下发动作,相当于物业中心用对讲机喊话。

常见误区

误区我以为 Sidecar 做的工作就是把请求原封不动地转给下一个服务,就像邮局寄信一样,自己不发任何内容。

正解Sidecar 是“有能力拦截并改写一切”的边界岗亭。它不仅能转发,还能在转发前修改 HTTP 头、注入重试、执行限流、验证 JWT 令牌、对响应做缓冲和压缩。Envoy 的过滤器链机制让它成为一张可编程的“交通执法卡”。

为何常见:因为从业务代码视角看,Sidecar 确实是透明的,开发者感知不到它的存在,于是自然低估了它的复杂度。

误区我总以为控制面管理所有流量,请求都要经过它,所以它应该处理最重的数据转发工作。

正解控制面从不碰业务请求,它只负责动嘴(配置下发)不动手(流量转发)。所有真实流量都只在数据面的 Sidecar 之间流动,控制面一旦宕机,已有连接和配置还在 Sidecar 里继续生效,只是无法更新规则。这正是把“大脑”和“手脚”分离的架构智慧。

为何常见:传统架构中的“管理端”往往同时承担业务流量,人们习惯性把控制面理解成数据中转站。

误区我以为只要控制面和 Sidecar 之间建立了 gRPC 长连接,每次配置变更都全量推送一遍就行,xDS 不过是个传话工具。

正解xDS 是一套精心设计的发现协议族,包含 LDS/RDS/CDS/EDS 等分工明确的资源类型,并且支持增量推送、版本协商、ACK/NACK 校验和资源缓存。它不是简单地“推配置”,而是一个保证数据面与控制面状态一致性的四阶段协议流程。

为何常见:很多初学者只看到“长连接 + 推送”的表面现象,忽略了协议内部对资源命名、版本管理和可靠性确认的设计。

误区我以为 mTLS 就是多带了一层加密,性能和普通 HTTPS 差不多。

正解mTLS 要求客户端与服务端同时持有证书并互相验证,握手过程需要交换两轮证书,密钥协商复杂度更高。但它的价值在于服务身份可以真正做到加密级别的可信,这在零信任安全模型中是无可替代的基石。

为何常见:日常使用 HTTPS 时只验证服务器证书的单向模式深入人心,双向验证的场景对初学者比较陌生。

面试题

Q1. 在 Service Mesh 架构中,Sidecar 代理属于哪个面?

单选题 · easy

  • A.控制面
  • B.数据面← 正确答案
  • C.管理面
  • D.业务面

答案:B。Sidecar 作为服务实例旁的代理进程,直接处理业务流量,属于数据面。控制面负责配置管理,管理面负责运维操作,业务面是业务服务本身。

Q2. 控制面与数据面之间使用哪类协议族通信?

单选题 · easy

  • A.HTTP 协议
  • B.xDS 协议← 正确答案
  • C.WebSocket
  • D.TCP 直连

答案:B。xDS(Discovery Service)协议族是控制面与数据面之间的标准通信协议,包含 LDS、RDS、CDS、EDS 等资源发现服务。HTTP、WebSocket、TCP 都无法提供这种结构化的配置拉取与推送能力。

Q3. 服务引入 Sidecar 后,业务代码的哪些职责会被剥离?

单选题 · easy

  • A.数据处理算法
  • B.服务治理与网络策略← 正确答案
  • C.数据库事务
  • D.用户权限模型

答案:B。Service Mesh 的核心价值是把治理能力下沉到基础设施层,业务服务不再需要关心熔断、重试、TLS 等网络策略,可以更聚焦业务逻辑本身。但业务算法、数据事务和权限模型仍属于业务代码范畴。

Q4. 熔断器打开状态下,Sidecar 如何对待新的请求?

单选题 · mid

  • A.转发所有实例
  • B.快速返回失败← 正确答案
  • C.无限重试等待
  • D.排队等待空闲

答案:B。熔断打开后,Sidecar 不再转发请求到故障实例,而是立即返回错误,让调用方快速失败。这样可以防止雪崩效应,等待熔断恢复周期结束后再尝试放行。

Q5. Sidecar 实现流量透明劫持通常依赖哪种机制?

单选题 · mid

  • A.iptables 规则← 正确答案
  • B.DNS 劫持注入
  • C.ARP 缓存投毒
  • D.浏览器插件拦截

答案:A。在 Kubernetes 场景中,Istio 通过 Init 容器写入 iptables 规则,把进出 pod 的流量重定向到 Envoy 监听的端口,实现透明劫持。DNS、ARP、浏览器插件都不是服务网格采用的标准方案。

Q6. mTLS 与普通 TLS 的本质区别是什么?

单选题 · mid

  • A.不加密应用数据
  • B.双向证书认证← 正确答案
  • C.只认证服务端
  • D.不需要任何证书

答案:B。普通 TLS 只验证服务器证书,客户端无需暴露身份;mTLS 要求客户端和服务端各自持有证书并互相验证,确保通信双方的身份都可信,这是零信任安全模型的基础。

Q7. 增量 xDS 推送相比全量推送的核心优势在哪里?

单选题 · hard

  • A.每次发送全量配置
  • B.只推送变更资源← 正确答案
  • C.省略版本协商过程
  • D.绕过 ACK 确认机制

答案:B。增量推送只传变化的资源,减少控制面带宽与 Sidecar 处理开销;同时它仍然保留版本号与 ACK/NACK 确认,保证配置最终一致,不会绕过协商机制。

Q8. 数据面 Sidecar 的职责包含哪些?

多选题 · mid

  • A.负载均衡← 正确答案
  • B.mTLS 加密← 正确答案
  • C.熔断降级← 正确答案
  • D.业务规则引擎

答案:ABC。Sidecar 承担负载均衡、双向 TLS 加密、熔断降级等流量治理职责。业务规则引擎属于业务服务自己的逻辑,不应该被塞进 Sidecar 中。

Q9. 控制面通常负责提供哪些能力?

多选题 · mid

  • A.服务发现← 正确答案
  • B.配置下发← 正确答案
  • C.证书签发← 正确答案
  • D.实际请求转发

答案:ABC。控制面负责服务发现、配置管理和证书签发,它不参与业务流量的实际转发,真实流量只经过数据面。

Q10. 下列哪些措施可以优化 Service Mesh 的性能开销?

多选题 · extreme

  • A.减少 Sidecar 跳数← 正确答案
  • B.使用高性能代理← 正确答案
  • C.增加全量推送频率
  • D.合并 xDS 推送通道← 正确答案

答案:ABD。减少跳数、使用更高效的代理实现、用 ADS 合并 xDS 通道都能降低开销。增加全量推送频率会加重控制面负担,仅会放大问题。