一、Service Mesh介绍
服务网格(Service Mesh)是处理服务间通信的基础设施层。它负责构成现代云原生应用程序的复杂服务拓扑来可靠的交付请求。在实践中,Service Mesh通常以轻量级网络代理阵列的形式实现,这些代理与应用程序代码部署在一起,对应用程序来说无需感知代理的存在。
如果用一句话来解释什么是Service Mesh,可以将它比作是应用程序或者说微服务间的TCP/IP,负责服务之间的网络调用、限流、熔断和监控。对于编写应用程序来说一般无须关心TCP/IP这一层(比如说通过HTTP协议的RESTful应用),同样使用Servcie Mesh也就无须关心服务之间的那些原本通过服务框架实现的事情了,比如Spring Cloud、Netflix OSS和其他中间件,现在只要交给Service Mesh就可以了。目前两款流行的Service Mesh开源软件Istio和Linkerd都可以直接在Kubernetes中进行集成,其中Linkerd已经成为CNCF中的项目。
Service Mesh有如下几个特点:
1)应用程序间通信的中间层
2)轻量级网络代理
3)应用程序无感知
4)解耦应用程序的重试、超时、监控、追踪和服务发现

二、Service Mesh的工作机制
下面将以Istio为例子来讲解Service Mesh是如何工作的
1、Sidecar(Istio中使用Envoy作为sidecar代理)将服务请求路由到目的地址、根据请求的参数判断是到生产环境、测试环境还是staging环境中的服务(服务可能同时部署在这三个环境中),是路由到本地环境还是公有云环境,所有的这些路由信息可以动态配置,可以是全局配置也可以为某些服务单独配置,这些配置是由服务网格的控制平面推送给各个sidecar的。
2、当Sidecar确认了目的地址

本文介绍了Service Mesh的概念,将其比喻为应用程序间的TCP/IP,负责服务间的通信、限流、熔断和监控。重点阐述了Istio这个流行的Service Mesh开源软件,包括其工作机制、主要特性和原理。Istio由Envoy代理、Mixer、Pilot和Citadel等组件构成,提供服务发现、流量管理、策略执行和安全通信等功能。
最低0.47元/天 解锁文章
7642





