文章目录
- Istio
- Service Mesh
Istio
Istio: 以服务网格形态用于服务治理的开放平台和基础设施
- 本质: 以非侵入式治理服务之间的访问和调用
- 服务治理: 流量管理、可观测性、安全性
- 可同时管理多类基础设施(多种网络方案)
如: Istio和Kubernetes架构的结合
- Istio通过Kubernetes的域名访问机制实现服务发现
- Istio的所有组件都可以容器形态部署在Kubernetes集群中
- Istio管理Kubernetes时, 将SVC的定义转换为Istio的服务模型
- Istio的所有规则和策略配置均以Kubernetes的
CRD
实现(Kubernetes存储配置)
Istio对Kubernetes限制:
- Pod必须有
app
(用途)和version
(版本)两个Label - 服务不能在同一个端口上使用不同的协议
- 端口命名格式:
protocol<-suffix>
- Protocol可为: tcp、http、http2、https、grpc、tls等
- 未命名或未按规范命名, 则Istio会进行协议探测(探测失败就TCP处理)
(PS: 以下介绍均默认以Kubernetes架构为基础做分析)
Service Mesh
服务网格(Service Mesh): 管理、连接和调解分布式服务之间通信的架构
- 由于访问链路上多引入跳转, 所以代理务必轻量和高性能以降低时延影响
- 服务网格代理本身也需消耗额外的资源(用于执行治理动作)
服务网格的特点:
- 云原生: 适用于云原生场景
- 基础设施: 处理服务间通信的基础设施
- 网络代理: 轻量级网络代理执行治理逻辑
- 应用透明: 服务感知不到代理的存在(原方式工作)
服务网络不同形态之间对比:
形态 | 业务逻辑侵入 | 业务代码侵入 | 业务进程侵入 |
---|---|---|---|
治理逻辑和业务代码耦合 | Y | Y | Y |
治理逻辑和业务代码解耦 | N | N | Y |
治理逻辑和业务进程解耦 | N | N | N |