精贴总结 - 万字长文带你入门Istio
原文 - 万字长文带你入门Istio
一、个人看法
- 背景:以docker+k8s普及,支持快速部署,通过k8s允许统一管理
- 解决:1)设计分布式系统,导致开发难度提高;2)统一多语言的服务治理方案
- 目的:将分布式系统的难点,从开发层迁移到运维层统一管理,减少开发同学的开发难度,提升开发效率
- 缺点:1)对运维提出了更高的要求;2)服务治理与平台高度绑定,难迁移
- 未来:1)mesh成为一线大厂必备趋势;2)架构同学逐步从角色开发层慢慢转向运维层;3)架构同学必须懂k8s
二、文章总结
1. ServiceMesh
简介
- 轻量代理,与应用程序部署在一起组成一个服务,负责:1)服务与服务之间的通讯;2)处理分布式系统架构设计,如路由、重试,熔断、限流、监控、追踪、幂等等
- 解耦,分布式系统设计与开发代码分离
功能
2. istio简介
- 根本上来说,istio的工作原理是以sidercar的形式将envoy的扩展版作为代理部署到每个微服务中
- envoy代理之间组成数据平面,代理的配置和管理由控制面板完成
3. istio组件
数据平面
- 主要是envoy,核心是支持网络和路由层代理,同时支持7层过滤器,对http2和gRPC传输具有一流支持
- 支持流量控制、安全性
- 支持wasm扩展
控制面
- 核心控件是istiod,负责管理和控制envoy,管理流量控制和路由管理,并在运行时将其传播到SiderCar
- istiod合并了服务发现的pilot、配置galley、证书生成的citadel及用于可扩展性的mixer
4. istio工作原理
流量管理
- 帮助我们控制流量路由的关键API资源是虚拟服务和目标规则
- 虚拟服务:一个或多个按顺序评估的路由规则组成,使我们可以配置如何将请求路由到服务中
- 目标规则:帮助我们控制达到目标的流量,影子管理、流量拆分、重试、熔断限流,依赖这个来做
安全性
- 两种验证方式:对等验证、请求身份验证;对等身份验证,用于服务到服务的身份验证;请求身份验证用于最终用户身份验证
5. 思考
- mesh的缺点:1)添加运维成本;2)程序与平台强关联,导致业务和平台混合,难以移植;3)添加一层,增加延迟;4)系统复杂度增加,学习成本提高
- istio代替品:linkerd【仅支持k8s,和istio几乎类似】和consul【优点与HashiCorp其他套件,能比较好的结合,缺点,系统部署更为复杂】