为了了解工具或技术的出现方式或原因,可以先研究一下它试图解决的问题的根源,以及如果没有这项新技术,世界将是什么样子。
微服务已经在业界有大量的落地案例,它的架构旨在将大型的单体应用程序分解为通过HTTP协议相互通信的小型单元。
微服务痛点
但服务治理方面的挑战也随之而来:
- 在众多的微服务中识别根本的故障原因
- 不同的开发语言与框架的治理能力差异
- 治理逻辑与业务逻辑耦合造成的复杂性
什么是Istio?
Istio 是 Google、IBM、Lyft 共同开源的服务网格解决方案,希腊语为起航的意思,用于对微服务进行管理、监控、护航。
微服务架构解决了一些问题,但也引入了其他的问题,类似传统的服务治理需要对代码侵入并且语言绑定,这将给整体带来较高的架构复杂度及增加异常的风险。
但有了Istio,可以轻松的对已有的应用进行添加治理功能,让应用程序和治理逻辑解耦,降低架构的复杂度和减轻开发团队的负担。
什么是服务网格?
服务网格是处理服务之间通信的专用基础设施层。它负责通过复杂的服务拓扑可靠地传递请求,服务网格通常被实现为一系列轻量级网络代理,这些代理以边车的方式与应用程序一起部署,对应用程序是透明且无侵入的。
服务网格旨在表示网络代理像格子一样提供服务间的通讯能力
Istio核心功能
- 流量管理
控制服务之间的流量和API调用流,使调用更可靠,并在不利条件下使网络更健壮。
- 身份安全
为网状网络中的服务提供可验证的身份,并提供保护服务流量的能力,使其在不同程度的可信赖性网络上流动。
- 策略管理
将策略应用于服务之间的交互,确保强制执行访问策略,并在消费者之间公平分配资源。策略更改是通过配置网格进行的,而不是通过更改应用程序代码来进行的。
- 可观察性
了解服务之间的依赖性以及服务之间的流量的性质和流,从而提供快速识别问题的能力。
Istio 架构形态
- 数据平面
组件为Envoy,代理控制服务间的通讯且可以收集网络流量、拓扑信息等遥测功能。
- 控制平面
组件为Istiod,负责配置和管理数据平面,提供控制平面及数据平面的编程抽象层。
在Istio1.4及之前的版本,为Mixer、Pilot、Citadel、Galley等组件构成控制平面,但由Mixer性能处于严重的瓶颈并且架构复杂度高等原因,在1.5开始回归单体架构。