服务网格(Service Mesh)认识

一、什么是服务网格?

服务网格(Service Mesh)是专门处理服务间通信的基础设施层,通过透明注入的方式,将服务治理能力(服务发现、负载均衡、流量控制、可观测性等)从业务代码中剥离,实现"业务逻辑"与"通信治理"的解耦。

二,核心特征或用途包括:

解决微服务之间通信的共性问题,业务代码只关心业务服务,不用写网络治理代码,

流量管理 :灰度发布,金丝雀,流量镜像,路由,超时,重试,熔断,限流

透明性 :对业务代码无侵入,无需修改应用即可获得治理能力;

分布式 :由数据平面(代理集群)和控制平面组成的分布式系统;

可观测性 :内置指标 metrics、日志logging、调用链tracing 能力;

安全性 :提供服务间mTLS通信加密、身份认证等安全保障,授权策略;

故障注入 :模拟延时,报错,做混沌工程测试;

负载均衡 :多种负载均衡策略(轮询,最小链接,一致性哈希);

服务网格解决了传统微服务架构中"烟囱式治理"的痛点,特别适合多语言异构系统(如Java、Go 、Python混合架构)的统一治理。

三、服务网格核心架构流程

流程说明:客户端请求首先经过本地Sidecar代理,依次完成服务发现(从控制平面获取服务列表)、负载均衡(选择目标实例)、流量控制(熔断、限流等);请求到达目标服务的Sidecar后转发至业务服务,响应按原路返回。同时,Sidecar实时采集流量指标上报控制平面,控制平面通过动态配置调整治理策略。

四、服务网格通信时序

五,架构和实现原理

ServiceMesh采用 Sidecar (边车代理)模式,

数据面Data Plane:Sidecar 代理进程和业务Pod/容器部署在同一个主机,接管业务所有进出网络流量,业务服务之间不互相调用,请求先经过Sidecar;

控制面Control Plane:独立组件,不转发流量,下发配置规则给所有的 Sidecar,统一管理策略;

经典代表:istIO最主流,底层 Sidecar 使用C++编写的 Envoy;

六,开发语言

Envoy 数据面代理,istIO 默认,C++编写

istIO 控制面组件,Go编写

Linkerd 控制面 Go 编写, 数据面 Rust 编写;

Kuma 控制面 Go 编写, 数据面C++编写(基于Envoy)

七,部署方法(以最常用的 Istio + Kubernetes为例)

1,前置环境,

Kubernetes(k8s),istioctl客户端工具。

2,安装 istio

#下载 istioctl

curl -L https://istio.io/downloadIstio | sh -

cd istio-xxx

export PATH= PWD/bin:PATH #注意:PWD和后一个PATH前面有英文的美元符号,

#安装 istio控制面 istiod 到 k8s

istioctl install --set

profile=default -y

3,命名空间开启 Sidecar 自动注入

#给命名空间打标签,新建Pod会自动注入 Sidecar

kubectl label namespace demo-ns

istio-injection=enabled

4,部署业务应用

正常部署微服务yaml,Pod 启动时自动注入 istio-proxy(Envoy)容器,无需改业务代码;

5,下发治理规则,

通过 CRD 资源配置流量策略:VirtualService,DestinationRule,AuthorizationPolicy

八,优点,

1,无入侵 ,对业务代码无侵入,无需修改应用即可获得治理能力,java、golang,python任何语言微服务都可接入;

2,能力统一 ,所有微服务复用同一套流量治理,安全,监控能力,不用每个服务重复开发熔断,加密,trace;

3,解耦 ,业务开发只关注业务,运维/架构统一管控服务通信策略;

4,标准化,统一的可观测数据,统一安全策略,多语言微服务体系治理更简单;

九,缺点,

1,性能开销 ,所有请求都经过 Sidecar 代理,增加网络延迟,cpu/内存开销大,高吞吐场景需要做性能压测;

2,复杂度高 ,组件多,istiod,envoy,CRD资源,学习成本高,排障难度大;

3,运维成本上升 ,需要额外维护面板,Sidecar 版本升级,资源占用量大,

4,小体量项目不划算 ,少量微服务,如果引入ServiceMesh反而会过度设计,复杂了;

部分内容参考博主:https://blog.csdn.net/weixin_43290370/article/details/151576522

相关推荐
zs宝来了5 个月前
Consul 服务网格原理:Gossip 协议与 Raft 一致性
服务发现·consul·服务网格·gossip协议·raft一致性
人间打气筒(Ada)6 个月前
go实战案例:如何通过 Service Meh 实现熔断和限流
java·开发语言·golang·web·istio·service mesh·熔断限流
猿小羽8 个月前
深入理解 Microservice Control Proxy(MCP) 的 AI 实战指南
微服务·ai·推荐系统·service mesh·microservice·mcp·ai 实战
无心水8 个月前
【分布式利器:腾讯TSF】11、腾讯TSF微服务框架深度对比:全面解析TSF vs Spring Cloud vs Dubbo vs Service Mesh
分布式·spring cloud·微服务·dubbo·springcloud·service mesh·分布式利器
Coder_Boy_8 个月前
基于SpringAI的在线考试系统-DDD(领域驱动设计)核心概念及落地架构全总结 (2)
java·人工智能·spring boot·架构·serverless·ddd·服务网格
无心水8 个月前
【分布式利器:腾讯TSF】8、Service Mesh云原生演进:Java应用零侵入接入腾讯TSF全解析
分布式·云原生·envoy·service_mesh·service mesh·分布式利器·腾讯tsf
Light601 年前
领码方案|微服务与SOA的世纪对话(3):方法论新生——DDD、服务网格与AI Ops的融合之道
运维·人工智能·微服务·ddd·soa·服务网格·ai ops
虫师c1 年前
云原生微服务:Kubernetes+Istio 魔法学院实战指南
微服务·云原生·kubernetes·istio·服务网格
Light601 年前
领码方案|微服务与SOA的世纪对话(1):从“大一统”到“小而美”
微服务·ddd·soa·服务网格·ai ops