TOC
1. 什么是 Istio?
- Istio 有助于减少部署的复杂性,并减轻开发团队的压力。部署的复杂性,主要是微服务的增加所带来的。开发团队的什么压力呢?主要是传统的业务开发有时候不得不关注基础的监控,日志,跟踪等遥测能力,而让业务开发变得复杂。服务网格可以把这些东西剥离出来并下沉成框架能力。
- 它是一个平台,具有很强的扩展性,集成不同的日志、遥测或策略系统。具有多样特性,对外提供统一的方式来保护(安全)、连接(流量管理)和监视(遥测)微服务。
2. 什么是服务网格?
针对这个问题,我总结过一篇详细的介绍过。简单的讲就是在微服务的时代背景下,微服务的维护,管理,通信等需求变得异常复杂。
这些需求通常包括:服务发现、负载平衡、故障恢复、度量和监视, A/B 测试、探测器展示、速率限制、访问控制和端到端身份验证等等。
而服务网格就将这些需求和业务剥离出来并下沉成基础设施层,用于处理服务间通讯;以保证请求在这些拓扑之间安全,快速,可靠的穿梭;其实现通常有一系列的轻量级的网络代理组成,它们与应用程序部署在一起,但是应用程序不需要知道它们的存在。
3. 为什么使用 Istio?
- 它是一个完整的服务网格解决方案来满足微服务应用程序的各种需求。
- 对业务服务采用非侵入的集成方式,对已有业务更友好。即不用修改代码或者很少的代码修改就可以支持。
- 更重要是功能上能够支持
3.1 HTTP、 gRPC、 WebSocket 和 TCP 流量的自动负载平衡。
3.2 使用丰富的路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制。
3.3 一个可插拔的策略层和配置 API,支持访问控制、速率限制和配额。
3.4 集群内所有通信的自动度量、日志和跟踪,包括集群的进入和出口。
3.5 集群中具有强基于身份的身份验证和授权的安全服务对服务通信。
- Istio 具有很强的扩展性,支持wasm插件,可以满足不同的遥测需求。4. Istio 核心功能
这个是istio的主要功能。是其特性所在,也是服务网格必备功能。在官网的入口也能一目了然。
- 流量管理(3.1/3.2/3.3)
- 安全(3.4)
- 可观测性(3.5)
- 平台支持(可移植性)
- 集成和定制(3.3)
这一部分每个子条目内容比较多,后面各个单独分析。
5. Istio的框架图
个人的一点思考:生活中我们住过酒店宾馆,我们每个个体都是一个独立的业务,我们只关注自己的思考和行为,管理好自己的行李箱,付费后拎包入住即可。不需要关心房子的水电气床等基础设施,因为酒店管理员已经帮你做好所有基础的东西包括安保。(不要杠关心酒店环境好坏哈,如果要杠的话环境好坏就好比机器配置)
服务网格就是让服务中的流量,日志,追踪,遥测等成为类似房子水电气安保一样的基础设施,微服务只需拎包入住,只关心自己的业务开发即可。如此,框架和业务各自聚焦。这是一方面,另外一个层次,还体现服务治理,运维和开发的剥离。
参考资料:官文istio的介绍