首先,看到Service Mesh这个词,相信很多同学都听说过这个词,但是具体它是干什么的,每个人就各有各的理解了。我第一次系统地了解Service Mesh的时候,也是通过帮同事买课返现,意外地看到这个名词,旺盛的好奇心迫使我点了进去。然后,不多时,我便一头雾水的走了出来。啊这,里面的弯弯绕绕比盥洗室之主还复杂啊!于是乎,在经过一段时间的学习,对Service Mesh有所了解之后,我决定写下这篇文章与大家分享我的理解。
一、什么是Service Mesh
开门见山,先站在前辈的肩膀上给出定义:
Service Mesh这个词的发明人,Buoyant的CEO William Morgan 如此解释:服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格保证请求在这些拓扑中可靠地穿梭。在实际应用当中,服务网格通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但对应用程序透明。
Service Mesh,中文名叫作服务网格,用于处理服务间通信的基础设施层,通常是一组与应用一起部署,但对应用透明的轻量级网络代理。简单来说就是将可以配置的代理层和服务部署在一起,作为微服务基础设施层接管服务间的流量,并提供通用的服务注册发现、负载均衡、身份验证、精准路由、服务鉴权等基础功能。
Service Mesh与传统基础设施层不同之处在于,它形成了一个分布式的互连代理网络,以sidecar形式部署在服务两侧,服务对于代理无感知,且服务间所有通信都由代理进行路由。它最重要的变革,就是引入了数据面和控制面的概念,通过sidecar模式(原意是摩托车的边车,用到软件架构中,就是Sidecar应用是连接到父应用,并为其扩展或增强功能)将原本在SDK中的代码独立出来,用控制面代替配置中心的部分功能&#x