7月7日,时速云企业级容器 PaaS 技术沙龙第 10 期在上海成功举办,时速云容器架构负责人魏巍为你们详细讲解了 Service Mesh 中表明性的实践方案、并以 Istio 为例详细讲解了 Service Mesh 中的技术关键点,包括 Istio 控制平面、Istio 数据平面等。如下内容根据魏巍分享整编,但愿对你们了解 Service Mesh 有所帮助。java
魏巍:你们下午好,刚才几位讲师讲了 K8S 的存储、PaaS 在企业的落地实践等,咱们接下来要讲的是企业有了 PaaS 平台、而且在平台上部署了各类各样的服务以后,这些服务该如何治理、服务与服务之间的关系,以及该以何种方式去维护等问题,而最近两年兴起的 Service Mesh,可以更加便捷的管理这些服务。nginx
Service Mesh 是一个专用的基础设施层,目的是解决系统架构微服务化后的服务间通讯和治理问题。Service Mesh 从实践上来讲有不少方案,但这些方案都有共同的特色,好比说像这里提到的宏观架构抽象,它都会划分为 Control Plane 和 Data Plane,这种总体架构设计。后端
第二个特色,Service Mesh 基原本说是一组轻量级的与应用逻辑服务部署在一块儿的服务代理,它会用代理的方式去实现路由、断路器、服务发现等,而且这些对应用服务都是透明的,固然这是在 K8S 上。若是说不是基于 Service Mesh 作的微服务架构,还能够基于 SpringCloud 作微服务架构,可是SpringCloud有自身的局限性,它主要用于以 java 为主的领域。微信
Istio、Conduit、Nginmesh 都是 Service Mesh 中比较火的实践方案。Istio 是 Google 和 IBM 联合 Lyft 的合做开源项目,是当前最主流的 Service Mesh 方案;Conduit 各方面的设计理念与 Istio 很是相似,其使用 Rust 从新编写了 sidecar,控制面由 Go 编写的 Conduit Control Plane 接管;NginMesh 并无本身独立实现一整套 Service Mesh,只是用 nginx替代了 Istio 中 Envoy。网络
Istio 架构
在 Istio、Conduit、 Nginmesh 这几个实践方案中,Istio 的影响最大,因此咱们今天主要讲解一下 Istio。负载均衡
Istio 逻辑上分为控制平面(Control Plane)和数据平面(Data Plane)。运维
控制平面由 Pilot 、Mixer 、Citadel 组成,控制平面的每个组件都负责一些特定的功能。数据平面由一组智能代理(Envoy)组成,代理部署为 sidecar,其控制微服务之间全部的网络通讯。ide
Istio 控制平面微服务
Istio 控制平面包括如下组件:
Pilot:Pilot 负责 Envoy 配置、全生命周期管理。能够为 Envoy sidecar 提供服务发现,为流量管理功能实现了灵活的路由(如 A/B 测试、金丝雀发布)和弹性(如:超时、重试、熔断等),它还能够将高级别的路由规则转换为 Envoy 特定的配置并在运行时将配置传播到 sidecar 中。
Mixer:Mixer 是一个平台独立的组件,其主要负责对后端系统的抽象、对接、策略配置等,并从 Envoy 代理和其它服务中收集测量数据。
抽象一点说,Mixer 提供:
后端抽象:Mixer 把 Istio 组件和 Mesh 中的服务从基础设施细节中隔离开来。
中间媒介:Mixer 让运维人员可以对全部 Mesh 和基础设施后端之间的交互进行控制。
Mixer 在某种程度上起到一种桥梁的做用。Envoy 提供 request 级别的属性数据,这些数据交由 Mixer 进行评估和处理,Mixer 中的各类适配器 (adapter)基于这些属性数据,来实现日志记录、监控指标采集展现、配额管理、ACL 检查等功能。
Citadel:提供服务间认证和终端用户认证功能,内置身份和证书管理,而且在网络策略以外,提供服务级别的策略控制。
Istio数据平面
Envoy 是 Istio 的数据平面。Envoy 是一个高性能轻量级代理,用于控制服务网格中服务的全部入站和出站流量。Envoy 提供了不少内置功能,如动态服务发现、负载均衡、TLS 会话终结、HTTP/2& gRPC 流量代理、熔断器、健康检查等功能。
Envoy 被部署为 sidecar,与对应的微服务一块儿部署在一个 Kubernetes Pod 中。每一个微服务实例经过各自的 sidecar 来实现发送和接受请求;微服务和微服务之间不直接通讯,而是经过 sidecar 的代理转发来实现通讯。 sidecar 直接造成调用网络,就像一个“网格”同样。使用 sidecar 代理模型代码无需从新构建或重写代码。
注:关注时速云微信订阅号,回复:7.7上海PPT,便可下载讲师分享PPT。