一、Service Mesh 概念
Service Mesh又译作“服务网格”,作为服务间通信的基础设施层。
云原生应用有着复杂的服务拓扑,Service Mesh保证请求可以在这些拓扑中可靠的穿梭。在实际应用中,Service Mesh通常是由一系列轻量级的网络代理组成的,它们与应用程序一起部署,但应用程序不需要知道它们的存在。Service Mesh 实际上就是处于 TCP/IP 之上的一个抽象层,它假设底层的 L3/L4 网络能够点对点地传输字节。
Service mesh 有如下几个特点:
应用程序间通讯的中间层;
轻量级网络代理;
应用程序无感知;
解耦应用程序的重试、超时、监控、追踪和服务发现;
二、 原理
Service Mesh 基本原理:
可以将它比作是应用程序或者说微服务间的TCP/IP,负责服务之间的网络调用、限流、熔断和监控。对于编写应用程序来说一般无须关心 TCP/IP 这一层(比如通过 HTTP 协议的 RESTful 应用),同样使用Service Mesh也就无须关心服务之间的那些原来是通过应用程序或者其他框架实现的事情,比如 Spring Cloud、OSS,现在只要交给Service Mesh就可以了。
三、 方案
目前社区Service Mesh的开源解决方案有:Buoyant 公司推出的 Linkerd 和 Google、IBM 等厂商牵头的 Istio。Linkerd 更加成熟稳定些,Istio 功能更加丰富、设计上更为强大,社区相对也更加强大一些。所以普遍认为 Istio 的前景会更好,但是毕竟还处于项目的早期,问题还很多。
1、Istio 介绍
Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。Istio为希腊语,意思是”起航“。
istio架构分为控制层和数据层
(1)数据层:由一组智能代理(Envoy)作为sidecar部署,协调和控制microservices之间的网络通信。
(2)控制层:负责管理和配置代理路由流量,以及在运行时执行的政策。
2、Istio架构各个组成部分。
Envoy:Istio使用Envoy代理的扩展版本,该代理是以C++开发的高性能代理,用于调解service mesh中所有服务的所有入站和出站流量。
Mixer:负责在service mesh上执行访问控制和使用策略,并收集Envoy代理和其他服务的遥测数据。
Istio-Manager:用作用户和Istio之间的接口,收集和验证配置,并将其传播到各种Istio组件。
Istio-auth:提供强大的服务间和最终用户认证,使用相互TLS,内置身份和凭据管理。
网友评论