当前位置: 首页 > 科技观察

浅谈ISTIOServiceMesh

时间:2023-03-18 00:22:34 科技观察

Part02.istio是做什么的?BuoyantCEOWilliamMorgan也是ServiceMesh一词的发明者,他将ServiceMesh定义为:“ServiceMesh是一个基础设施层,用于处理服务之间的通信。云原生应用具有复杂的服务拓扑,服务网格确保“请求在这些拓扑中可靠地传输。在实际应用中,服务网格通常由一系列轻量级网络代理组成,它们与应用程序一起部署,但对应用程序是透明的。”从上面的定义,我们可以总结出servicemesh或者istio的以下几个特点:1.通过代理,服务与服务,服务与服务,保证了基础设施和内外请求的可靠性,这种可靠性不仅代表了网络的连通性网络拓扑,还要考虑请求的负载均衡和网络问题下的断路器。2.是集群设施,对服务透明,不需要对服务强依赖,所以对服务的语言和框架,当istio发生变化和升级时,不需要服务也随之升级3.网络控制和监控粒度的细化,比如按照之前的灰度方式,流量基本是通过服务或网关服务,使用istio通过基础服务的代理配置分发规则,从而实现确保交通研发的深度控制。Part02、istio的实现框架Istio服务网格可以分为控制平面和数据平面。数据平面是代理组件,服务通过代理请求。控制平面发现、配置和控制数据平面的组件。这就是istio的大脑,不难看出控制面其实是集中式设计。图1istio部署视图宏观上可以看成是代理组件之间的数据请求,每个代理节点都注册到控制平面,控制平面控制和调整代理节点的路由(实际上是代理所在的服务节点位于)。图2istio的具体组件控制面的主要组件有Pilot、Mixer、Galley和CitadelMixer:顾名思义就是在应用层和控制层组件之间形成一个中间层,从而实现后台之间的解耦-端应用程序和不同架构的组件,路由组件上报的信息直接发送给Mixer,由Mixer适配转发。Pilot:是Istio的核心组件,实现流量管理。它的主要功能是配置和管理Envoy代理。Citadel:是一个安全相关的组件,主要负责密钥和证书的管理。Galley:负责配置获取和处理的配置管理组件。Part03.Istiotrace可以用什么来实现请求的可视化?1.服务依赖分析2.性能/延迟优化3.平均延迟统计4.慢请求原因分析Istio使用Envoy的分布式跟踪功能提供开箱即用的跟踪集成。完成。具体来说,当请求在服务之间或者服务调用过程中时,会在相关请求的header中添加一个id,Envoy会收集相同的id来判断是否在一个请求过程中。图3trace原理Jaeger组件收集数据流信息并聚合,以图形方式展示接口调用记录和单个接口的具体流程。图4服务流量聚合图5一次请求的具体信息实际上,收集请求的过程对应用来说是不透明和无感知的,但是会对istio产生一定的影响,所以我们可以选择较小比例的流量进行采样。