Menu

服务网格让微服务通信变得有序、可控,是现代云原生架构不可或缺的基石。

概述

Service Mesh(服务网格)是用于处理服务间通信的专用基础设施层,它通过一组轻量级网络代理来实现服务间的可靠通信,这些代理与应用程序代码一起部署,但对应用程序本身透明。

服务网格是用于处理服务间通信的专用基础设施层。它负责通过包含现代云原生应用程序的复杂服务拓扑来可靠地传递请求。
—— William Morgan,Buoyant CEO

随着微服务架构的普及和服务规模的增长,服务网格解决了以下核心问题:

核心特征

架构特点

功能能力

主流实现方案

Istio

Linkerd

Envoy Proxy

技术原理

架构模式

服务网格采用数据平面 + 控制平面的经典架构模式:

数据平面(Data Plane)

控制平面(Control Panel)

工作模式

工作流程(以 Istio 为例)

  1. 路由决策:根据配置规则确定请求目标(生产/测试/预发布环境)
  2. 服务发现:通过 Kubernetes Service 或其他服务注册中心获取目标实例
  3. 负载均衡:基于延迟、健康状态等指标选择最优实例
  4. 请求转发:将请求发送到选定实例,记录响应数据
  5. 故障处理:检测失败实例,自动重试或故障转移
  6. 实例管理:动态添加/移除不健康实例
  7. 超时控制:主动终止超时请求,避免资源浪费
  8. 数据收集:收集指标、日志和分布式追踪数据

服务网格的演进历程

服务治理技术的发展经历了以下阶段:

  1. 原始阶段:主机直连,无中间层
  2. 网络层抽象:TCP/IP 协议栈出现
  3. 应用内治理:在应用程序内集成控制逻辑
  4. 库化方案:专用的服务治理库
  5. 外部化代理:独立的服务治理组件
  6. 服务网格时代:平台级的服务间通信基础设施

使用场景与价值

适用场景

核心价值

服务网格与传统方案对比

方面 传统方案 服务网格
复杂性 每个服务单独实现 统一平台化管理
维护成本 分散维护,成本高 集中管理,成本低
技术栈 绑定特定语言/框架 语言无关
可观测性 需要单独实现 自动提供
安全性 手动配置,易出错 自动化,一致性好

参考资源

官方文档

深入学习

社区资源


Menu