直接回答:服务网格把服务间通信的横切能力——mTLS 加密认证、流量管理(金丝雀、熔断、重试)、可观测性(指标/追踪/访问日志)——从应用代码下沉到数据平面代理(sidecar 或 eBPF 节点级),多语言栈统一获得这些能力而无需每个服务重复造。代价同样清晰:架构复杂度陡增(控制平面本身要运维)、每个请求多一跳代理(延迟与 CPU 开销)、团队学习曲线陡峭、故障排查链路变长。
展开解析:引入的合理门槛:服务数量几十上百、多语言并存、有强合规要求(零信任 mTLS)或复杂的发布策略需求。小团队单体加几个服务上网格是过度设计——K8s 原生 Service 加 ingress 加 Prometheus 已够用。形态选择:sidecar(Istio 传统模式)隔离好但资源翻倍;sidecarless(Istio ambient、Cilium)用节点级代理降开销,功能与隔离粒度有取舍;Linkerd 以简单著称。落地建议增量推进:先只开可观测(mTLS 的遥测立竿见影),再逐步开流量策略,别一口吃成全量 mTLS 加复杂路由。常见事故:sidecar 资源限制太紧导致代理 OOM 拖垮业务、配置推送风暴、证书轮换故障——网格自身的高可用也是工程。
追问方向:mTLS 在服务网格中的身份来源(SPIFFE)?eBPF 能替代 sidecar 吗?网格与 API 网关的边界?
(约 450 字)