为了了解工具或技术的出现方式或原因,可以先研究一下它试图解决的问题的根源,以及如果没有这项新技术,世界将是什么样子。

微服务痛点

微服务已经在业界有大量的落地案例,它的架构旨在将大型的单体应用程序分解为通过HTTP协议相互通信的小型单元。

但服务治理方面的挑战也随之而来:

  • 在众多的微服务中识别根本的故障原因
  • 不同的开发语言与框架的治理能力差异
  • 治理逻辑与业务逻辑耦合造成的复杂性

MVC架构微服务架构 微服务架构istio_数据

什么是服务网格

服务网格是处理服务之间通信的专用基础设施层。它负责通过复杂的服务拓扑可靠地传递请求,服务网格通常被实现为一系列轻量级网络代理,这些代理以边车的方式与应用程序一起部署,对应用程序是透明且无侵入的。

MVC架构微服务架构 微服务架构istio_微服务_02

什么是Istio

Istio 是 Google、IBM、Lyft 共同开源的服务网格解决方案,希腊语为起航的意思,用于对微服务进行管理、监控、护航。

微服务架构解决了一些问题,但也引入了其他的问题,类似传统的服务治理需要对代码侵入并且语言绑定,这将给整体带来较高的架构复杂度及增加异常的风险。

但有了Istio,可以轻松的对已有的应用进行添加治理功能,让应用程序和治理逻辑解耦,降低架构的复杂度和减轻开发团队的负担。

MVC架构微服务架构 微服务架构istio_微服务_03

Istio核心功能
  • 流量管理

控制服务之间的流量和API调用流,使调用更可靠,并在不利条件下使网络更健壮。

  • 身份安全

为网状网络中的服务提供可验证的身份,并提供保护服务流量的能力,使其在不同程度的可信赖性网络上流动。

  • 策略管理

将策略应用于服务之间的交互,确保强制执行访问策略,并在消费者之间公平分配资源。策略更改是通过配置网格进行的,而不是通过更改应用程序代码来进行的。

  • 可观察性

了解服务之间的依赖性以及服务之间的流量的性质和流,从而提供快速识别问题的能力。

MVC架构微服务架构 微服务架构istio_微服务_04

Istio架构形态
  • 数据平面

组件为Envoy,代理控制服务间的通讯且可以收集网络流量、拓扑信息等遥测功能。

  • 控制平面

组件为Istiod,负责配置和管理数据平面,提供控制平面及数据平面的编程抽象层。

MVC架构微服务架构 微服务架构istio_应用程序_05