Service Mesh介绍,Istio概述

Service Mesh


Service Mesh 的中文译为 “服务网格” ,是一个用于处理服务和服务之间通信的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求,并为服务通信实现了微服务所需的基本组件功能,例如服务发现、负载均衡、监控、流量管理、访问控制等。在实践中,

服务网格通常实现为一组和应用程序部署在一起的轻量级的网络代理,但对应用程序来说是透明的。

右图,绿色方块为应用服务,蓝色方块为 Sidecar Proxy,应用服务之间通过 Sidecar Proxy 进行通信,整个服务通信形成图中的蓝色网络连线,图中所有蓝色部分就形成一个网络,这个就是服务网格名字的由来。

                                                Service Mesh 部署网络结构图

Sidecar指的是和应用服务部署在一起的一个代理程序,要是访问你的应用要走proxy才能访问到,只能走sidecar去通信,不能走应用和应用之间去通信,因为应用所有的流量都被proxy所接管了。

服务网格的本质是将业务程序给接管起来,然后由自己的proxy代理去负责数据的转发。

上面蓝色的方块都会有一个控制心去统一管理蓝色的方块,比如在控制中心可以给它发送一个配置,让这些proxy去生效。

还可以去做访问控制,指定某个应用不能访问某个应用,这样proxy就不会转发了。

管理员只是负责配置中心,来配置整个服务网格内的一些流量的管控,等等一系列这些功能。

Service Mesh特点 


 Service Mesh有以下特点:

治理能力独立(Sidecar 去负责应用的流量,它们之间通信也是通过sidecar)
应用程序无感知(以边车的形式与服务绑定的,使用的时候不需要修改应用程序的代码,sidecar可以直接管理到它了)
服务通信的基础设施层(管理服务的通信设施)
解耦应用程序的重试/超时、监控、追踪和服务发现

servicemesh可以看作nginx代理后端的应用之上更为高级的一种模式,这个模式就是增加控制系统,这些控制系统可以将所有的代理统一的去管理起来,就不像传统单体应用的代理。

因为流量都经过sidecar,被它接管了,那么可以做非常多的功能。

service mesh设计的目标和实现的原理其实就是来自于proxy,和一个控制中心去管理。

Istio概述


Isito是Service Mesh的产品化落地,是目前最受欢迎的服务网格,功能丰富、成熟度高。

Linkerd是世界上第一个服务网格类的产品。
连接(Connect)
- 流量管理
- 负载均衡
- 灰度发布
安全(Secure)
- 认证
- 鉴权
控制(Control)
- 限流
- ACL
观察(Observe)
- 监控
- 调用链

Istio版本变化


在Istio1.5版本发生了一个重大变革,彻底推翻原有控制平面的架构,将有原有多个组件整合为单体结构 “istiod”,同时废弃了Mixer 组件,如果你正在使用之前版本,必须了解这些变化。

之前有很多的组件,在部署的时候要部署7,8个组件,但是又不知道组件之间什么关系,怎么去通信的,有些组件可能很容易就挂掉了。

listio是基于kubernetes上面一个服务网格治理平台,早期追求架构的纯粹性,一个控制面很多组件,好多组件从架构来说非常清晰,设计的非常好,后面就陷入了困境,一个控制面很多组件,当你做系统升级的时候,这个升级就陷入了困境,先升级哪个组件,后升级哪个组件,中间是否会有业务中断,这就会造成很多的困扰。

所以做个取舍,比如一些组件是一个团队维护的,那就合并好了,将一些组件变为一个组件了,这样升级的风险降低了,维护成本降低,这里面没有绝对的原则,完全看你的业务场景。
 

重构之后,服务端控制面板这就有istiod,之前老版本有4个组件,现在只要一个组件。

Istio架构与组件


Istio服务网格在逻辑上分为数据平面和控制平面。

控制平面: 使用全新的部署模式:istiod,这个组件负责处理Sidecar注入、证书分发、配置管理等功能,替代 原有组件,降低复杂度,提高易用性。(将proxy进行管理,对采集的进出流量进行分析,提供监控,日志,链路追踪方面的)(将原有的组件整合到一个组件里面来)
  • Pilot:策略配置组件,为Proxy提供服务发现、智能路由、错误处理等。 (管理proxy) 
  • Citadel:安全组件,提供证书生成下发、加密通信、访问控制。
  • Galley:配置管理、验证、分发。

数据平面: 由一组Proxy组成,这些Proxy负责所有微服务网络通信,实现高效转发和策略。使用envoy实现, envoy是一个基于C++实现的L4/L7 Proxy转发器,是Istio在数据平面唯一的组件。

 (指的是微服务的那一端,就是服务部署的那一端,比如部署一个Pod,这就属于数据平面,他会在数据平面里面植入一个proxy)(proxy负责所有微服务网络通信,微服务之间通信都会走这个proxy,或者微服务访问外部也要走这个proxy,负责转发和配置相关的策略)

可以看到改版之后架构清晰明了,减少了更多的成本。

Istio基本概念


Istio 有 4 个配置资源,落地所有流量管理需求:(各种各样功能是根据这些配置资源实现的)

  • VirtualService(虚拟服务):实现服务请求路由规则的功能。
  • DestinationRule(目标规则):实现目标服务的负载均衡、服务发现、故障处理和故障注入的功能。
  • Gateway(网关):让服务网格内的服务,可以被全世界看到。
  • ServiceEntry(服务入口) :允许管理网格外的服务的流量。(用的较少)

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/125554289