浅谈ISTIO服务网格

开发 架构
微服务作为一种软件的架构风格,已经在软件服务领域风行多年。微服务本身的架构也在演进、迭代,service mesh就是下一代微服务的发展的方向。甚至可以说,service mesh是微服务时代的TCP/IP协议。Istio就是一个与K8S深度结合的service mesh服务平台。

Part 02、istio到底做了什么工作

Buoyant的CEO William Morgan,也就是Service Mesh这个词的发明人,对Service Mesh的定义为:“服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格保证请求在这些拓扑中可靠地穿梭。在实际应用当中,服务网格通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但对应用程序透明。”

从上面的定义来看,我们可以总结以下service mesh或者说istio的几个特点:

1、 通过代理,保证服务与服务、服务与基础设施间以及内外部请求的可靠性,这样的可靠不仅仅是代表网络拓扑的联通性,还要考虑请求的负载均衡以及网络问题下的熔断。

2、 是集群的设施,对服务透明,不需要服务的强依赖,因此对服务的语言、框架也没有特殊的要求。当istio变更和升级时候,也不需要服务随同升级。

3、 网络控制和监控粒度的细化。比如按照之前的灰度方式,基本上都是通过服务或者是网关服务进行流量的分流,使用istio则通过基础服务的代理配置分流的规则,从而保证研发对流量的深度控制。

Part 02、istio的实现框架

Istio服务网格可以划为控制平面和数据平面,数据平面是代理组件以及服务通过代理进行的请求,控制平面则对数据平面的组件进行发现、配置、管控,是这个istio的大脑,不难看出,控制面实际上是一种中心化的设计。

图片

图1 istio部署视图

宏观上可以看作是代理组件之间在进行数据的请求,而每个代理节点注册到控制平面,有控制平面管控和调节代理节点(实际是代理节点所在的服务)的路由。

图片

图2 istio具体组件


控制平面主要组件包括Pilot, Mixer、Galley和Citadel

Mixer:顾名思义,在应用和控制层组件间形成中间层,从而实现不同架构的后端应用与组件间的解耦,路由组件的上报信息直接发向Mixer,由Mixer来适配和转发。

Pilot: 是Istio实现流量管理的核心组件,它主要的作用是配置和管理Envoy代理。

Citadel:是安全相关的组件,主要负责密钥和证书的管理。

Galley:配置管理组件,负责配置的获取和处理。

Part 03、istio实现请求的可视化

Istio tracing可以用来做什么呢?

1、服务依赖分析

2、性能/延迟优化

3、平均时延的统计

4、请求慢的原因分析

Istio利用Envoy的分布式跟踪功能提供开箱即用的跟踪集成,我们可以选用Jaeger的追踪平台来实现。

具体来讲,一个请求在服务间或者服务调用过程中,对相关的请求都在头部添加一个id,通过Envoy收集相同id的来判断是否在一个请求流程中。

图片

图3 trace原理

Jaeger组件收集到数据流信息后经过聚合,可以图形化展示接口调用的记录以及单个接口具体的流程。

图片

图4 服务流量聚合


图片

图5 某个请求具体信息

实际上,收集请求的过程并非是透明且对应用无感知的,而是会对istio造成一定的影响,因此我们可以选用较少的流量比例进行采样。

责任编辑:庞桂玉 来源: 移动Labs
相关推荐

2022-07-01 18:36:17

云服务网络

2020-11-04 08:00:57

虚拟机stio网格

2020-11-15 23:48:57

服务网格微服务网络网络技术

2019-08-29 08:00:00

微服务架构服务网格

2021-11-08 10:17:48

gRPC Istio网格

2022-05-16 08:00:00

服务网格架构Kuma

2020-01-07 09:25:02

服务网格微服务Kubernetes

2022-08-09 08:00:00

服务网格云原生工具

2018-08-28 18:11:40

华为云

2020-07-13 07:00:03

微服务服务网格架构

2020-08-26 05:45:40

服务网格DevOps开发

2021-08-27 11:42:51

Nacos云原生阿里云

2021-04-02 22:00:50

服务网格微服务

2020-10-21 13:31:53

服务网格开源微服务

2021-04-25 08:48:36

Traefik mes服务网格Kubernetes集

2022-07-06 08:25:17

服务网格Kubernetes

2022-09-06 10:46:34

服务网格可观测性微服务

2019-07-18 12:41:52

数字化服务网格微服务

2020-11-30 13:50:13

服务网格微服务数据

2022-08-02 16:37:32

服务网格网络服务
点赞
收藏

51CTO技术栈公众号