连载中 18/20

服务网格:Sidecar 到底解决了什么

2026-08-31 · 963 阅读 · 0 评论 · 0 赞

治理逻辑写在每个服务里

前面的系列里,服务间通信的治理能力——负载均衡、熔断重试、链路追踪、灰度路由——全部以客户端 SDK 的形态长在每个服务里。SDK 模式在 Java 单语言团队里运转良好,但有三个隐藏税:重复建设(每个服务都带一套);齐步走——SDK 升级要所有服务配合,几十个服务的团队推进一次全量升级按月计;语言壁垒——Go、Python 服务要用同一套治理,只能再各写各的。

Sidecar:把流量劫持出来

服务网格的解法:在每个服务旁边部署一个代理(Sidecar),通过 iptables 或 CNI 把服务的进出流量全部劫持到代理——业务进程只管业务,治理逻辑全部下沉到代理层。所有 Sidecar 由控制平面统一指挥:路由规则、熔断策略、证书轮换,下发一次全局生效。业务代码回归纯粹,SDK 升级变成基础设施升级。

// Istio 金丝雀:VirtualService 按 5% 放量到 v2
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: inventory
spec:
  hosts: [inventory]
  http:
    - route:
        - destination: { host: inventory, subset: v1 }
          weight: 95
        - destination: { host: inventory, subset: v2 }
          weight: 5
// 业务代码零改动:路由在 Sidecar 层完成

Mesh 给了什么

四样硬通货:流量治理——金丝雀、故障注入(主动往链路里注入延迟与错误做混沌演练)、超时重试,配置化下发;零信任安全——服务间 mTLS 自动加密与身份认证,不用改一行业务代码;统一可观测——指标、日志、链路在代理层天然汇聚,跨语言一致;策略统一——配额、审计、限流集中在控制平面。

账单:什么时候不需要它

Mesh 的成本同样真实:每个 Pod 多一个代理,内存与 CPU 常驻,链路多两跳,延迟加零点几毫秒;控制平面本身是要运维的分布式系统;排障时业务与网络层之间隔了一层代理,问题定位更绕。单语言、服务几十个以内、SDK 能齐步走的团队,Mesh 是过度设计——它的甜蜜点在跨语言、服务过百、治理需求爆炸的平台化阶段。务实的路线是渐进:先 SDK 管好 Java 主力域,跨语言或异构域的子集先上 Mesh,尝到甜头再扩大。

到这里,治理的正向建设讲完了——但架构的成熟度是靠事故喂出来的。下一篇是本系列的事故集锦:六个真实故障复盘

503

10 年全栈工程师 · 503咖啡馆主理人

#服务网格#Istio#Sidecar#零信任#流量治理

评论 (0)

相关推荐

连载中 12/20

排查四件套:jstack、jmap、jstat、jcmd 的实战分工

jstack 看线程在干什么,jmap 看堆里装了什么,jstat 看运行时在变什么,jcmd 是统一入口。四把刀各管一段,配合着用没有查不动的现场。

#jstack#jmap#jstat#jcmd#排查工具
2026-09-16 · 4 阅读 · 0 评论 · 0 赞
连载中 11/20

GC 日志:把回收过程翻译成人话

一行 GC 日志里塞着七种信息:谁触发的、收了哪、停了多久、活了哪些。加上 -Xlog 配置,再加上日志分析工具,GC 不再是只能盯监控曲线的黑盒。

#GC日志#Xlog#日志分析#GC监控#Full GC排查
2026-09-16 · 13 阅读 · 0 评论 · 0 赞
连载中 10/20

ZGC:亚毫秒停顿是怎么炼成的

百 G 大堆停顿不到一毫秒,靠的是把搬家全部挪到并发阶段——着色指针让引用自带状态,读屏障让搬运中的对象依然可访问。代价是吞吐与内存,收益是停顿与堆大小解耦。

#ZGC#着色指针#读屏障#亚毫秒停顿#分代ZGC
2026-09-15 · 8 阅读 · 0 评论 · 0 赞