一、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代理)将服务请求路由到目