想象你住的城区在十年间突然冒出了几百家店铺:包子铺、银行、快递站、健身房……每两家店为了送货、结账、对账,都要私下拉一根专用管道,互相约定暗号。店越多,管道越乱,新店开张先要花几个月接管道,老店翻新还要挨个通知所有人——这就是微服务架构最初的“点对点直连”困境。 后来城市引入了统一交通系统:修好公共道路,在每个路口装红绿灯,由交通指挥中心统一调度。每家店只需把货物放到门口的“智能调度亭”,剩下的路线选择、拥堵规避、安全护送全由交通网完成。这个“调度亭 + 道路 + 指挥中心”的组合,就是软件世界里的服务网格(Service Mesh)。 本篇我们以“城市交通网”为比喻,理清服务网格与微服务的边界:哪些事归业务系统管,哪些事该交给网格层,以及为什么说服务网格是云原生时代微服务“最后一公里”的基础设施。

岗位关联

对 AI 从业者而言,理解服务网格的边界划定决定了你能否在微服务系统中精准定位“业务逻辑”与“基础设施”问题,是架构设计、性能调优与团队协作的必备认知。

目录
  1. 可视化演示
  2. 服务网格定位
  3. 微服务通信痛点
  4. 边车代理模式
  5. 双平面架构
  6. 流量治理能力
  7. 安全与可观测性
  8. 边界划定与引入
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

三步展示服务网格核心机制:Sidecar代理部署形态、控制面与数据面分离架构、以及服务间mTLS双向加密认证通信。

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

Sidecar代理模式 Pod: 部署单元 业务:业务容器 代理:Sidecar容器 Traffic→Sidecar 流量先经代理再转发。

服务网格定位

城市里店铺越来越多,每家的“经营”各不相同,但“送货、引路、治安”这些公共事务却是共性问题。城市管理者意识到,与其让每家店自己雇人跑腿,不如修一套公共交通系统,把公共事务从店铺经营中剥离出来。服务网格正是微服务世界的“公共交通系统”:它位于业务应用之下、网络之上,专门解决服务之间“怎么找到对方、怎么安全到达、失败了怎么办”这类公共通信问题,而不关心订单、支付、库存这类业务细节。

在云原生架构中,服务网格与微服务框架(如 Spring Cloud、Dubbo)并不冲突,而是分工协作:框架负责业务内的服务发现、配置管理,网格负责基础设施级的流量治理。正如“修路”归市政部门管,“店里商品怎么摆”归店主管。服务网格把通信能力下沉到独立基础设施层,业务团队无需再为“如何实现重试、超时、灰度”而重复造轮子。

这种分工的本质是关注点分离,维护成本可以拆解为业务成本与通信成本两部分:

引入服务网格后,交通系统统一承担了道路养护,店主们终于可以专心研究自家商品——这正是网格的定位:让基础设施回归基础设施,让业务回归业务。

Ctotal=Cbusiness+Ctraffic\displaystyle C_{total} = C_{business} + C_{traffic}
  1. 总成本 C_total维护整个微服务系统的综合成本,包含人力、资源、排障时间。
    Ctotal=Cbusiness+Ctraffic\displaystyle C_{total} = C_{business} + C_{traffic}
  2. 业务成本 C_business实现具体业务逻辑(如订单状态机、支付金额计算)的成本,这部分必须由业务团队负责。
    Cbusiness\displaystyle C_{business}
  3. 通信成本 C_traffic服务间寻址、协议转换、重试、鉴权等公共能力的成本,服务网格将其收敛到基础设施层统一承担。
    Ctraffic\displaystyle C_{traffic}

微服务通信痛点

回到那个店铺林立但没有公共道路的年代。两家店合作,要私拉一根管道;三家合作,要拉三根。当城区有 n 家店时,总管道数是 n(n-1)/2。每根管道还要各自维护互通协议、故障排查、安全保卫。店铺稍有变动,所有管道都要跟着调整——这种“点对点直连”让系统的复杂度呈平方级爆炸。

更痛苦的是,旧方案把通信能力塞进 SDK 依赖:比如 Java 团队用一套库,Go 团队用另一套库,服务间的协议、治理策略散落在每一份业务代码里。升级一个通信库,所有业务服务都要跟着发版;出了网络问题,排障要翻遍不同语言、不同版本的 SDK 实现。就像每根管道都要配一名专属维修工,修理工还只懂自己那根管子的方言。

直连模式的连接数随服务规模急剧膨胀:

当 10 个服务时只需 45 条连接,但当 100 个服务时直连数逼近 5000。正如城市管理者意识到“每家店拉一根专属管道”不可持续,微服务团队也发现,必须把通信从“每家店自己管”升级为“城市统一管”。

L(n)=n×(n−1)2\displaystyle L(n) = \frac{n \times (n-1)}{2}
  1. 服务数 n参与通信的微服务数量。
    n\displaystyle n
  2. 两两配对 n×(n-1)每个服务都要与其余 n-1 个服务建立直连关系。
    n×(n−1)\displaystyle n \times (n-1)
  3. 除以 2 消除重复A 连 B 与 B 连 A 是同一条连接,不能重复计算。
    n×(n−1)2\displaystyle \frac{n \times (n-1)}{2}

边车代理模式

城市终于决定修公共道路,但有个难题:不能把几百家店全部拆了重建。于是工程师设计了一个巧妙的方案——在每个店铺门口加建一座“智能调度亭”。店铺想发货,只需把货物交给门口的调度亭,调度亭负责找路、排队、安全护送;别人送来的货,也由调度亭代收、验货、再交给店里。店铺本身完全不动,这就是边车(Sidecar)代理模式。

在技术实现中,边车是伴随每个服务实例部署的轻量级代理进程(如 Envoy、Linkerd 的 proxy)。应用的所有进出流量都被劫持到边车,由边车统一执行负载均衡、重试、熔断等策略。业务代码里不再需要任何通信治理的逻辑,就像店主不需要懂交通法规,只需要把货交给门口调度亭。

请求的完整路径变成一条链,代表数据包的旅程:

边车模式的核心价值是生命周期解耦:店铺要装修、歇业、换老板,调度亭始终守在门口;同样,服务实例升级、迁移、扩容时,边车代理可以独立更新,通信能力的演进步长不再绑定业务发版节奏。这就像给每家店配了一位“永远在岗”的智能管家。

Request: A→Sa→Network→Sb→B\displaystyle Request:\ A \rightarrow S_{a} \rightarrow Network \rightarrow S_{b} \rightarrow B
  1. 服务 A 发起请求业务应用 A 生成一次调用,比如“订单服务”调用“支付服务”。
    A\displaystyle A
  2. 经过边车 Sa 接管请求先被同机部署的边车代理截获,A 本身不直接上网。
    Sa\displaystyle S_{a}
  3. 穿越公共网络请求在统一网络上传输,由网格负责选路。
    Network\displaystyle Network
  4. 到达对端边车 Sb对端边车代收请求并完成鉴权、限流等检查,才交给应用 B。
    Sb→B\displaystyle S_{b} \rightarrow B

双平面架构

有了调度亭和道路,还得有一个“大脑”来指挥全局。城市交通系统由此分成两部分:遍布全城的红绿灯、摄像头、道路设施负责实际运行,这是数据平面;而城市交通指挥中心负责分析路况、制定红绿灯配时、下发调度指令,这是控制平面。

服务网格的双平面架构与之完全同构。数据平面由所有边车代理组成,它们的职责是执行:按照既定规则转发每秒成千上万的业务请求。控制平面(如 Istiod)则负责决策:采集各服务的健康状态、拓扑关系,生成路由规则、安全策略,并通过 xDS 协议动态下发给每个边车。

两个平面的工作节奏差异巨大,可以用频率对比直观表达:

正是这种“高频执行、低频决策”的分工,使得控制平面可以集中精力做复杂计算,数据平面则保持极致的轻量与稳定——就像交通指挥中心可以花整整一分钟论证一条新路线的红绿灯配时,而路口的红绿灯必须在一瞬间对每辆车做出响应。

fdata≫fcontrol\displaystyle f_{data} \gg f_{control}
  1. 数据平面频率 f_data边车每秒转发的业务请求数,通常达到千级甚至十万级。
    fdata≫fcontrol\displaystyle f_{data} \gg f_{control}
  2. 控制平面频率 f_control指挥中心每秒下发的规则变更次数,通常只有几次或更少。
    fcontrol\displaystyle f_{control}
  3. 数量级差距数据平面的每一次转发都要“秒回”,控制平面的配置变更则允许秒级延迟。
    ≫\displaystyle \gg

流量治理能力

红绿灯不仅能疏导车流,还能在特殊情况下“封路”“限流”“引导绕行”。服务网格的流量治理能力同样丰富:智能路由可以根据权重把请求分配到不同版本的服务实例;负载均衡确保没有一家店铺被挤爆而旁边的店闲着;熔断则像交警发现某条路严重塌方时果断封路,让后续车辆尽快改道,而不是继续涌入堵死全城。

以熔断为例,边车代理持续统计每个目标服务的请求成功率,当失败比例超过阈值时,自动“打开熔断器”:

金丝雀发布也是网格的拿手好戏:新版本服务先接入 5% 的流量,像放几只金丝雀进煤矿试毒,验证稳定后再逐步放大流量至 100%。整个过程在控制平面调整一条权重规则即可完成,业务代码零改动。交通管理的精髓从来不是“多修路”,而是“灵活调度”。

OpenifFfailNtotal>Tthreshold\displaystyle Open \quad if \quad \frac{F_{fail}}{N_{total}} > T_{threshold}
  1. 失败请求数 F_fail时间窗口内调用目标失败的次数。
    Ffail\displaystyle F_{fail}
  2. 总请求数 N_total同一时间窗口内的全部调用次数。
    Ntotal\displaystyle N_{total}
  3. 错误率失败的占比,反映目标服务的健康程度。
    FfailNtotal\displaystyle \frac{F_{fail}}{N_{total}}
  4. 阈值 T_threshold业务方设定的熔断触发底线,如 0.5 表示一半请求失败即封路。
    >Tthreshold\displaystyle > T_{threshold}

安全与可观测性

城市越大,治安和监控越重要。服务网格内置了零信任安全模型:所有服务间通信默认不信任,必须通过 mTLS(双向 TLS)验证对方身份才能通信。就像两个店铺首次合作前,都必须出示由城市管理中心签发的数字身份证,双方同时验明正身,杜绝“伪装成快递员”的攻击。

安全性可以用双向认证的联合概率来表达:

此外,网格自动生成全链路的访问日志、指标和分布式追踪数据。每一次请求经过哪些边车、耗时多少、是否重试,都像城市交通的电子眼记录一样清晰可回溯。过去排查一个慢请求要在十几个服务日志里人肉拼接,现在通过网格的追踪数据一张图看清全链路——这就是“可观测性”对排障效率的颠覆性提升。

Psecure=Pauth(A)×Pauth(B)\displaystyle P_{secure} = P_{auth}(A) \times P_{auth}(B)
  1. 服务 A 通过认证 P_auth(A)请求方的数字证书被验证有效。
    Pauth(A)\displaystyle P_{auth}(A)
  2. 服务 B 通过认证 P_auth(B)响应方的数字证书同样被验证有效。
    Pauth(B)\displaystyle P_{auth}(B)
  3. 双向认证联合概率只有双方都通过验证,通信才被放行,单边通过不足以建立安全信道。
    Pauth(A)×Pauth(B)\displaystyle P_{auth}(A) \times P_{auth}(B)

边界划定与引入

讲了这么多能力,最关键的问题来了:哪些事归网格管,哪些事不归网格管? 答案是:网格负责服务之间的一切通信与治理,但绝不碰业务逻辑。订单金额怎么算、库存超卖怎么避免、用户画像怎么建模——这些是业务应用的职责。网格与应用的边界,就是“交通系统”与“店铺经营”的边界。

引入服务网格也不是一次“推倒重来”,而是渐进式演进:先在少量非核心服务上部署边车,验证效果后再逐步扩大范围。同时要清醒评估成本——每增加一个服务实例,就多一个边车代理进程,它消耗 CPU 和内存:

正确的落地姿势是“先算账、再动手”:当你的服务规模小、通信简单时,直连即可;当服务数量突破几十个、多语言并存、发布频繁、安全合规要求高时,服务网格的收益就远超成本——就像小村庄不必修高架桥,但大城市离不开交通指挥中心。

Overhead≈Ninstance×Csidecar\displaystyle Overhead \approx N_{instance} \times C_{sidecar}
  1. 实例数 N_instance部署边车的服务实例总数。
    Ninstance×Csidecar\displaystyle N_{instance} \times C_{sidecar}
  2. 单边车成本 C_sidecar每个边车代理占用的 CPU、内存及少量网络延迟。
    Csidecar\displaystyle C_{sidecar}
  3. 总开销随实例数线性增长网格带来的资源成本是线性的,而治理收益是数量级的。
    Overhead≈Ninstance×Csidecar\displaystyle Overhead \approx N_{instance} \times C_{sidecar}

AI 应用场景

电商大促流量洪峰治理

阶段:模型/系统上线后的流量治理与稳定性保障

解决的问题:双十一瞬间流量是平时的数十倍,传统微服务直连模式下,任一服务抖动都会引发雪崩,人工配置限流规则来不及响应。服务网格在数据平面自动执行熔断、限流、重试,控制平面实时调整权重,保证核心交易链路的可用性。

具体案例:某电商平台在大促前通过网格控制平面为“下单→支付→库存”链路设置分级熔断阈值,并配置金丝雀规则让新版支付服务先承接 5% 流量。大促期间某支付实例错误率飙升,边车自动熔断并切换到健康实例,全程无需人工介入,业务成功率保持在 99.99%。

金融系统零信任安全改造

阶段:数据安全与合规建设

解决的问题:金融监管部门要求服务间通信必须加密且可审计。传统方案在每个服务里集成 TLS 库,升级密钥体系要改动所有应用。服务网格在边车层统一启用 mTLS,所有通信自动加密,并输出完整访问日志供审计。

具体案例:某银行将 50 个核心微服务接入服务网格,开启 mTLS 双向认证后,服务间明文流量降为零;合规团队通过网格日志仪表盘一键导出任意服务对的通信记录,安全审计从按周变为按天。

多语言团队的统一治理

阶段:研发效能提升与架构标准化

解决的问题:团队同时使用 Java、Go、Node.js 开发微服务,每个语言栈都要维护一套独立的重试、超时、服务发现 SDK,治理行为不一致。服务网格把通信治理下沉到边车,所有语言的应用只需最普通的 HTTP 调用即可获得一致的治理能力。

具体案例:一家互联网公司让 Java 的订单服务与 Go 的支付服务接入同一网格,两边边车版本一致、路由规则一致。新入职的 Node.js 团队无需学习 Java SDK,直接通过网格配置即可参与灰度发布,跨语言协作效率提升 40%。

Python 演示

python83 行
import random  class Sidecar:    """边车代理:接管服务的进出流量"""     def __init__(self, name, instance_map):        self.name = name        self.instance_map = instance_map        self.fail_count = 0        self.total_count = 0        self.circuit_open = False        self.weight_index = 0     def route(self, target, weight_list):        """加权轮询选择一个目标实例"""        if self.circuit_open:            raise RuntimeError("circuit open")        self.weight_index += 1        total = sum(weight_list)        pos = self.weight_index % total        for inst, weight in zip(self.instance_map[target], weight_list):            if pos < weight:                return inst            pos -= weight        return self.instance_map[target][0]     def report(self, success):        """上报本次调用结果,统计错误率"""        self.total_count += 1        if not success:            self.fail_count += 1        if self.total_count >= 10:            error_rate = self.fail_count / self.total_count            if error_rate > 0.3:                self.circuit_open = True            self.fail_count = 0            self.total_count = 0  class ControlPlane:    """控制平面:维护并下发路由规则"""     def __init__(self):        self.routes = {}        self.weights = {}     def publish_rule(self, service, instance_list, weight_list):        self.routes[service] = instance_list        self.weights[service] = weight_list  class ServiceMesh:    """服务网格:控制平面 + 数据平面的最小实现"""     def __init__(self):        self.control = ControlPlane()        self.sidecars = {}     def register(self, service, instances, weights):        self.control.publish_rule(service, instances, weights)        self.sidecars[service] = Sidecar(service, self.control.routes)     def call(self, caller, target):        """从调用方视角发起一次远程调用"""        sidecar = self.sidecars[caller]        instance = sidecar.route(target, self.control.weights[target])        success = random.random() > 0.2        sidecar.report(success)        return {"caller": caller, "target": target,                "instance": instance, "success": success}  if __name__ == "__main__":    mesh = ServiceMesh()    mesh.register("order", ["order-v1", "order-v2"], [7, 3])    mesh.register("pay", ["pay-v1", "pay-v2", "pay-v3"], [5, 3, 2])     for i in range(30):        result = mesh.call("order", "pay")        if i % 6 == 0:            print("调用日志:", result)    print("熔断状态:", mesh.sidecars["pay"].circuit_open)
目的:用约 80 行 Python 模拟服务网格最小闭环——控制平面维护路由权重表,数据平面的边车按加权轮询选择实例,并统计错误率自动触发熔断。
  1. class Sidecar边车代理,伴随每个服务运行,处理该服务的所有出站流量。
  2. def route(self, target, weight_list)按权重选择目标实例,模拟网格的负载均衡能力。
  3. if self.circuit_open:熔断器打开时直接拒绝新请求,保护下游不被继续压垮。
  4. def report(self, success)每次调用后上报结果,边车据此统计错误率。
  5. error_rate > 0.3错误率超过 30% 即触发熔断,对应正文提到的阈值判据。
  6. class ControlPlane控制平面,保存每个服务的实例列表与权重。
  7. mesh.register(...)模拟控制平面上线服务并下发规则的过程。
  8. random.random() > 0.2模拟 20% 的随机失败,用于演示熔断的触发。

常见误区

误区我以为上了服务网格,就不需要 Spring Cloud、Dubbo 这类微服务框架了,可以全部删掉。

正解服务网格解决的是服务间通信与治理问题(流量、安全、可观测),而微服务框架还承担业务内的服务建模、配置管理、领域逻辑组织等职责。两者更像“城市交通系统”和“店铺内部管理系统”的关系:道路归交通局管,店里的货架怎么摆归店主管。实践中两者常常共存,网格取代的只是框架中的通信治理模块,而非框架本身。

为何常见:因为服务网格确实覆盖了框架的不少功能(如负载均衡、重试),容易让人误以为它能“包办一切”。

误区我以为网格装好后,熔断、限流、灰度这些能力就自动生效了,不需要额外配置。

正解服务网格提供的是“能力管道”,不是“现成策略”。就像城市修好了红绿灯,但红绿灯配时还要交通指挥中心制定并下发。你必须通过控制平面显式定义路由规则、熔断阈值、限流配额,边车才会执行。默认情况下网格只做最简单的转发,丰富的治理能力需要用配置文件或 API 主动启用。

为何常见:网格的“自动化”宣传让人误以为“零配置”即可获得全套治理,忽略了控制平面才是决策大脑。

误区为了让网格能力最大化,我给每个服务实例都加上边车,甚至一个小函数也配一个。

正解每个边车都是独立进程,要消耗 CPU 和内存,请求每多一跳边车也会增加微秒级延迟。合理的做法是:只为需要治理能力的核心服务部署边车,或者在服务网格的“注入口”上做精细控制。正如交通调度亭虽好,但不会给每个流动摊贩都配一座——成本要匹配价值。

为何常见:看到边车模式的好处后容易“用力过猛”,忽略了任何架构选型都是成本与收益的权衡。

误区我经常把业务逻辑也写进网格配置,比如把订单金额计算放进路由规则里。

正解网格的边界非常清晰:只处理服务间通信的交通问题,绝不碰业务数据。订单金额、库存扣减、用户画像这些业务逻辑一旦进入网格层,就会让基础设施变得笨重且难以维护。正确做法是:业务逻辑留在应用内,网格只关心“谁在调用谁、调用是否安全、失败了怎么办”。

为何常见:因为网格配置和策略也可以用代码表达,初学者容易把“配置能力强”误解为“业务也能接管”。

面试题

Q1. 服务网格在云原生架构中主要负责解决哪类问题?

单选题 · easy

  • A.微服务之间的通信与治理← 正确答案
  • B.数据库的读写与性能优化
  • C.前端页面的渲染与交互
  • D.容器镜像的构建与分发

答案:A。服务网格的定位是微服务通信基础设施,类似城市交通网解决的是“店与店之间怎么送货”,而不是店铺内部的经营问题。B 属于数据库层,C 属于前端层,D 属于 CI/CD 层,都不是网格的核心职责。

Q2. 数据平面的核心职责是?

单选题 · mid

  • A.执行控制平面下发的转发规则← 正确答案
  • B.维护业务数据的持久化存储
  • C.制定业务层的灰度发布策略
  • D.负责服务注册中心的日常运维

答案:A。数据平面由所有边车代理组成,职责是“执行”——按控制平面下发的规则高速转发业务请求,就像路口红绿灯按指挥中心的配时信号放行车辆。B、C、D 分别属于存储层、控制平面和注册中心,均非数据平面职责。

Q3. 控制平面向数据平面下发配置通常采用哪种机制?

单选题 · mid

  • A.基于 xDS 的标准协议族← 正确答案
  • B.基于 MySQL 的存储复制
  • C.基于 Redis 的缓存同步
  • D.基于 Nginx 的静态配置

答案:A。xDS(如 LDS、RDS、CDS)是服务网格控制平面与数据平面之间的标准配置下发协议,类似交通指挥中心通过统一信道把配时方案发送到每个路口的红绿灯控制器。B、C 面向数据存储与缓存,D 是静态配置而非动态下发协议。

Q4. 边车代理模式为微服务带来的收益有哪些?

多选题 · mid

  • A.业务代码无需关注通信治理细节← 正确答案
  • B.多语言服务获得统一的治理能力← 正确答案
  • C.通信能力与应用生命周期解耦← 正确答案
  • D.彻底消除服务间的网络传输延迟

答案:ABC。边车把通信治理从业务代码中剥离(A),所有语言的调用都经边车统一处理(B),边车独立升级不绑定应用发版(C),就像调度亭换代不影响店铺营业。但网络物理延迟不可能为零,D 违背基本物理规律。

Q5. 传统 SDK 式微服务治理的主要痛点是什么?

单选题 · easy

  • A.治理逻辑侵入业务代码且多语言难统一← 正确答案
  • B.数据库查询速度得到显著提升
  • C.前端页面加载时间大幅缩短
  • D.运维人员数量可以完全缩减

答案:A。SDK 方案把重试、熔断等逻辑写进每个业务服务,升级 SDK 就要改业务代码,且不同语言要维护多套 SDK——就像每家店自己雇维修工且各说各话。B、C 与通信治理无关,D 过于绝对且不符合实际。

Q6. 熔断器由关闭状态转为开启状态的直接触发条件是什么?

单选题 · hard

  • A.窗口内请求失败率持续超过设定阈值← 正确答案
  • B.控制平面成功下发了一张新的路由表
  • C.边车代理的内存占用率超过 50%
  • D.目标服务完成了一次无感升级发布

答案:A。熔断的核心判据是“错误率超阈值”,边车统计窗口内 N 次请求中失败比例 F/N,若超过阈值则果断开启熔断,像交警发现塌方立即封路。B、D 是正常管理操作,C 是资源指标,都不能直接触发熔断。

Q7. 服务网格提供的安全能力通常包括哪些?

多选题 · hard

  • A.服务间双向 TLS 身份认证← 正确答案
  • B.细粒度的访问控制策略← 正确答案
  • C.自动清洗业务数据中的敏感信息
  • D.全量访问日志与审计追踪← 正确答案

答案:ABD。mTLS 实现双方验明正身(A),控制平面可按服务身份下发访问控制规则(B),边车记录所有通信日志供审计(D)。而 C 属于数据脱敏产品的能力,网格关注通信安全而非业务数据内容清洗。

Q8. 金丝雀发布(灰度发布)的核心思路是什么?

单选题 · mid

  • A.让少量流量先验证新版本稳定性← 正确答案
  • B.一次性停机替换全部服务实例
  • C.将新旧版本部署到完全隔离的机房
  • D.只更新配置文件而不变更代码

答案:A。金丝雀发布借鉴煤矿用金丝雀试毒的做法:先放 5% 流量到新版本,观察无异常再逐步放量。B 是蓝绿发布的暴力变体,C 是物理隔离不解决验证问题,D 不涉及版本发布实质。

Q9. 关于服务网格与业务应用的边界,下列说法正确的是哪项?

单选题 · easy

  • A.网格只负责通信治理,不处理业务逻辑← 正确答案
  • B.网格需要接管数据库的读写操作
  • C.网格应该承担前端页面渲染任务
  • D.网格要替代业务算法的计算实现

答案:A。边界划分是网格的核心思想:通信归网格,业务归应用。就像交通系统管道路,店主管经营。B、C、D 分别把存储、展示、算法塞给网格,都会导致基础设施职责混乱。

Q10. 引入服务网格需要付出的成本通常包括哪些?

多选题 · mid

  • A.边车代理占用的额外计算资源← 正确答案
  • B.控制平面带来的运维复杂度← 正确答案
  • C.业务代码行数被迫大幅增加
  • D.团队需要学习新的概念与工具← 正确答案

答案:ABD。每个边车都是进程,消耗 CPU/内存(A);控制平面本身需要部署、监控与升级(B);团队要理解路由、熔断、mTLS 等新概念(D)。而 C 恰恰相反——网格的一大收益就是减少业务代码中的通信逻辑。