电子发烧友网 > 通信网络 > 正文

什么是Service Mesh?Service Mesh的演化形态

2020年03月04日 11:01 ? 次阅读

Service Mesh作为下一代微服务技术的代名词,初出茅庐却深得人心一鸣惊人,大有一统微服务时代的趋势。

那么,到底什么是Service Mesh?

一言以蔽之:Service Mesh是微服务时代的TCP协议。有了这样一个感性的初步认知,我们再来看到底什么是Service Mesh。

提到Service Mesh,就不得不提微服务。根据维基百科的定义:微服务(Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块(Small Building Blocks)为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关(Language-Independent /Language agnostic)的API集相互通信。

目前业界跟微服务相关的开发平台和框架更是不胜枚举:Spring Cloud、Service Fabric、Linkerd、Envoy、IsTIo等等这些纷繁的产品和Sevice Mesh有什么样的关联?哪些属于Service Mesh的范畴?

为了理清这些繁复的产品和概念,我们先来了解下微服务和Service Mesh技术的历史发展脉络。

了解清楚了技术的主要脉络,就能清晰的知道上述的各个平台、框架属于技术脉络中的哪个结点,其间的关系也就一目了然。

Phil Cal?ado的文章

这里借用文章的脉络,结合自己的理解并予以简化,试图说清楚ServiceMesh的概念和这项技术诞生的历史必然性。

时代0:开发人员想象中,不同服务间的通信

抽象表示如下:

时代1:原始通信时代

然而现实远比想象的复杂,在实际情况中,通信需要底层能够传输字节码和电子信号的物理层来完成,在TCP协议出现之前,服务需要自己处理网络通信所面临的丢包、乱序、重试等一系列流控问题,因此服务实现中,除了业务逻辑外,还夹杂着对网络传输问题的处理逻辑。

时代2:TCP时代

为了避免每个服务都需要自己实现一套相似的网络传输处理逻辑,TCP协议出现了,它解决了网络传输中通用的流量控制问题,将技术栈下移,从服务的实现中抽离出来,成为操作系统网络层的一部分。

时代3:第一代微服务

在TCP出现之后,机器之间的网络通信不再是一个难题,以GFS/BigTable/MapReduce为代表的分布式系统得以蓬勃发展。

这时,分布式系统特有的通信语义又出现了,如熔断策略、负载均衡、服务发现、认证和授权、quota限制、trace和监控等等,于是服务根据业务需求来实现一部分所需的通信语义。

时代4:第二代微服务

为了避免每个服务都需要自己实现一套分布式系统通信的语义功能,随着技术的发展,一些面向微服务架构的开发框架出现了,如Twitter的Finagle、Facebook的Proxygen以及Spring Cloud等等。

这些框架实现了分布式系统通信需要的各种通用语义功能:如负载均衡和服务发现等,因此一定程度上屏蔽了这些通信细节,使得开发人员使用较少的框架代码就能开发出健壮的分布式系统。

时代5:第一代Service Mesh

第二代微服务模式看似完美,但开发人员很快又发现,它也存在一些本质问题:

其一,虽然框架本身屏蔽了分布式系统通信的一些通用功能实现细节,但开发者却要花更多精力去掌握和管理复杂的框架本身,在实际应用中,去追踪和解决框架出现的问题也绝非易事;

其二,开发框架通常只支持一种或几种特定的语言,回过头来看文章最开始对微服务的定义,一个重要的特性就是语言无关,但那些没有框架支持的语言编写的服务,很难融入面向微服务的架构体系,想因地制宜的用多种语言实现架构体系中的不同模块也很难做到;

其三,框架以lib库的形式和服务联编,复杂项目依赖时的库版本兼容问题非常棘手,同时,框架库的升级也无法对服务透明,服务会因为和业务无关的lib库升级而被迫升级。

因此以Linkerd,Envoy,Ngixmesh为代表的代理模式(边车模式)应运而生,这就是第一代Service Mesh,它将分布式服务的通信抽象为单独一层,在这一层中实现负载均衡、服务发现、认证授权、监控追踪、流量控制等分布式系统所需要的功能,作为一个和服务对等的代理服务,和服务部署在一起,接管服务的流量,通过代理之间的通信间接完成服务之间的通信请求,这样上边所说的三个问题也迎刃而解。

如果我们从一个全局视角来看,很容易就会得到如下部署图:

如果我们暂时略去服务,只看Service Mesh的单机组件组成的网络:

相信现在,大家已经理解何所谓Service Mesh,也就是服务网格了。它看起来确实就像是一个由若干服务代理所组成的错综复杂的网格。

时代6:第二代Service Mesh

第一代Service Mesh由一系列独立运行的单机代理服务构成,为了提供统一的上层运维入口,演化出了集中式的控制面板,所有的单机代理组件通过和控制面板交互进行网络拓扑策略的更新和单机数据的汇报。这就是以IsTIo为代表的第二代Service Mesh。

只看单机代理组件(数据面板)和控制面板的Service Mesh全局部署视图如下:

至此,见证了6个时代的变迁,大家一定清楚了Service Mesh技术到底是什么,以及是如何一步步演化到今天这样一个形态。

现在,我们再回过头来看Buoyant的CEO William Morgan,也就是Service Mesh这个词的发明人,对Service Mesh的定义:

服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格保证请求在这些拓扑中可靠地穿梭。

在实际应用当中,服务网格通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但对应用程序透明。这个定义中,有四个关键词:

基础设施层+请求在这些拓扑中可靠穿梭:这两个词加起来描述了Service Mesh的定位和功能,是不是似曾相识?没错,你一定想到了TCP;

网络代理:这描述了Service Mesh的实现形态;

对应用透明:这描述了Service Mesh的关键特点,正是由于这个特点,Service Mesh能够解决以Spring Cloud为代表的第二代微服务框架所面临的三个本质问题。

总结一下,Service Mesh具有如下优点

屏蔽分布式系统通信的复杂性(负载均衡、服务发现、认证授权、监控追踪、流量控制等等),服务只用关注业务逻辑;

真正的语言无关,服务可以用任何语言编写,只需和Service Mesh通信即可;

对应用透明,Service Mesh组件可以单独升级。

当然,Service Mesh目前也面临一些挑战

Service Mesh组件以代理模式计算并转发请求,一定程度上会降低通信系统性能,并增加系统资源开销;

Service Mesh组件接管了网络流量,因此服务的整体稳定性依赖于Service Mesh,同时额外引入的大量Service Mesh服务实例的运维和管理也是一个挑战;

历史总是惊人的相似。为了解决端到端的字节码通信问题,TCP协议诞生,让多机通信变得简单可靠;微服务时代,Service Mesh应运而生,屏蔽了分布式系统的诸多复杂性,让开发者可以回归业务,聚焦真正的价值。

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

《计算机体系结构—网络篇4》之TTL、TCP/IP协议族详述、ARP欺骗、DNS劫持

点击右方"佳嵌"图标,可以看所有课程。我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程&n
发烧友学院发表于 2018-12-08 00:00? 3238次阅读
《计算机体系结构—网络篇4》之TTL、TCP/IP协议族详述、ARP欺骗、DNS劫持

TCPIP协议运输层的详细资料说明

运输层向它上面的应用层提供通信服务. 两个主机进行通信就是两个主机中的应用进程互相通信. 从运输层的....
发表于 2020-02-24 16:04? 252次阅读
TCPIP协议运输层的详细资料说明

TCP IP协议有什么样的状态

首先介绍一下TCP连接建立与关闭过程中的状态。TCP连接过程是状态的转换,促使状态发生转换的因素包括....
发表于 2020-02-24 14:31? 210次阅读
TCP IP协议有什么样的状态

TCP粘包到底是什么

TCP是一种流式连接,对小包会进行封包缓存发送,大包会出现分包发送。接收端就会发现接收到的数据和发送....
发表于 2020-02-17 17:45? 398次阅读
TCP粘包到底是什么

单播与组播、广播及任播有什么区别

每次只有两个实体相互通信,发送端和接收端都是唯一确定的。 在IPv4网络中,0.0.0.0到2....
发表于 2020-02-16 21:20? 322次阅读
单播与组播、广播及任播有什么区别

WebSocket有什么优点

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011....
发表于 2020-02-15 15:53? 402次阅读
WebSocket有什么优点

TCP和UDP的通信详细资料总结

Socket的英文原义是“孔”或“插座”。在编程中,Socket被称做套接字,是网络通信中的一种约定....
发表于 2020-02-15 14:40? 344次阅读
TCP和UDP的通信详细资料总结

TCP与UDP协议的工作原理是怎么样的

TCP是一种可靠的,面向连接的全双工传输层协议。 TCP连接的建立是一个三次握手的过程。
发表于 2020-02-15 11:45? 362次阅读
TCP与UDP协议的工作原理是怎么样的

TCP协议是不是快被UDP协议淘汰了

TCP 协议可以说是今天互联网的基石,作为可靠的传输协议,在今天几乎所有的数据都会通过 TCP 协议....
发表于 2020-02-07 15:39? 503次阅读
TCP协议是不是快被UDP协议淘汰了

工业级物联网网关是什么?有什么功能及应用领域详细...

TG452 系列 Gateway 是一款工业级物联网无线网关,设计完全满足工业级标准和工业用户的需求....
发表于 2020-02-07 12:13? 574次阅读
工业级物联网网关是什么?有什么功能及应用领域详细...

计算机防火墙的原理作用及能不能阻止黑客的入侵说明

所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的....
发表于 2020-02-06 14:43? 582次阅读
计算机防火墙的原理作用及能不能阻止黑客的入侵说明

选择嵌入式设计软件需要考虑什么问题

无论您身在哪个行业,竞争都非常艰难。 同样,开发嵌入式软件有时会承受很大的压力,不仅要使工作比以往更....
发表于 2020-02-05 15:06? 520次阅读
选择嵌入式设计软件需要考虑什么问题

为什么Linux服务器会被黑

安全是IT行业一个老生常谈的话题了,从之前的“棱镜门”事件中折射出了很多安全问题,处理好信息安全问题....
发表于 2020-02-03 12:54? 908次阅读
为什么Linux服务器会被黑

使用websocket技术实现后端向前端的推送消...

在手机上相信都有来自服务器的推送消息,比如一些及时的新闻信息,这篇文章主要就是实现这个功能,只演示一....
发表于 2020-01-20 17:43? 453次阅读
使用websocket技术实现后端向前端的推送消...

采用LabVIEW实现Modbus通讯协议的方式

针对Modbus的串口和TCP两种不同的方式,在LabVIEW中通常可以通过以下几种方法实现Modb....
发表于 2020-01-16 17:22? 981次阅读
采用LabVIEW实现Modbus通讯协议的方式

智能小区到底是什么?智能小区的系统架构详细说明

智能小区概述 智能小区其实是智能大厦、智能住宅和国内小区特点相结合而衍生出来的。随着智能化技术走向小....
发表于 2020-01-12 11:08? 852次阅读
智能小区到底是什么?智能小区的系统架构详细说明

STM32F103:RTOS设备通过TCP模组上云

[quote]简介: 本实践案例介绍使用物联网平台提供的C语言设备端SDK,将搭载实时操作系统(RTOS)的微控制单元...
发表于 2020-01-02 16:44? 461次阅读
STM32F103:RTOS设备通过TCP模组上云

如何能成为一名网络工程师必须具有那些技能

我自己就是网络工程师出身,我认为网络工程师最重要的技能是扎实的基础和非常开放的思维,微观知识扎实,宏....
发表于 2019-12-15 11:18? 1354次阅读
如何能成为一名网络工程师必须具有那些技能

TCP通信协议-Labview上位机

现在用单片机进行信息采集,通过GPRS模块上传到PC,用Labview做上位机,TCP通信协议,想请教一下,TCP通...
发表于 2019-12-10 08:58? 394次阅读
TCP通信协议-Labview上位机

工业以太网标准和环境要求

工业中的通讯要求与办公环境有着天壤之别。要考虑到通讯中的每一方面,比如网络中的主动和被动元件,终端设....
发表于 2019-12-06 09:44? 1872次阅读
工业以太网标准和环境要求

如何使用sim900模块将数据发送到TCP服务器

因此,运行此命令后,您的本地主机将被转发到 ngrok 生成的一个随机IP,因此您需要在 AT + ....
发表于 2019-11-18 09:25? 624次阅读
如何使用sim900模块将数据发送到TCP服务器

tcp协议的主要功能_tcp协议的特点

传输控制协议(TCP,TransmissionControlProtocol)是一种面向连接的、可靠....
发表于 2019-11-08 15:15? 1734次阅读
tcp协议的主要功能_tcp协议的特点

TCP与UDP的区别

TCP(TransmissionControlProtocol,传输控制协议)是面向连接的协议,也就....
发表于 2019-11-08 15:09? 275次阅读
TCP与UDP的区别

为什么探索者F40网络通信试验两端无法相互发送数据?

向各位请教一下:     因为项目要使用探索者的网口,由电脑发送数据给ARM板的网口,我用了板子默认的综...
发表于 2019-11-08 00:41? 155次阅读
为什么探索者F40网络通信试验两端无法相互发送数据?

为什么lwip做反复tcp数据交换后lwip一定会挂掉?

RT,使用不跑系统的原子的lwip程序修改而来的时序。 一直在执行一个流程  TCP建立---通讯一次----tcp...
发表于 2019-11-07 20:39? 109次阅读
为什么lwip做反复tcp数据交换后lwip一定会挂掉?

请问LWIP的TCP链接失败原因在哪里?

TCP建立阶段的三次握手,在最后一步失败了 成功的应该是这样的 网上查了下,说是EMAC使能就好了,可是我找不...
发表于 2019-11-07 20:34? 103次阅读
请问LWIP的TCP链接失败原因在哪里?

DSP6748出现下面错误是什么原因?

我现在是要把MMCSD_Fats的程序添加到TCP_client中,出现了这个错误,我把头文件Mmcsd_evmInit.h都添加到了...
发表于 2019-11-07 08:20? 110次阅读
DSP6748出现下面错误是什么原因?

LAN840功能与DP838 48相同吗?

嗨,我想升级一个6年的现有以太网产品和谐。该应用程序是从BelkelyTCPIpHyServer示例应用程序中克隆的。现有的...
发表于 2019-11-06 07:32? 119次阅读
LAN840功能与DP838 48相同吗?

如何使TCP连接成功之后,只发送数据,禁止接收数据?

首先求助一个问题:LWIP+UCOSII:怎样使TCP连接成功之后,只发送数据,禁止发送数据?其次,最近在做一个...
发表于 2019-11-05 02:34? 86次阅读
如何使TCP连接成功之后,只发送数据,禁止接收数据?

嵌入式Web服务器有什么功能?

通过以太网进行传输已经成为一种经济、有效的数据传输方式。越来越多的工业测控设备需要配置网络接入功能,不仅需要通...
发表于 2019-11-04 07:26? 130次阅读
嵌入式Web服务器有什么功能?

配置静态IP地址时,没有TCP连接可以建立,对ping没有响应

嗨,MCC版本:3.26.2MPLABX版本:3.51操作系统和版本:Win 7 Prof,SP1编译器版本:XC8 1.37设备名称:...
发表于 2019-11-04 07:03? 90次阅读
配置静态IP地址时,没有TCP连接可以建立,对ping没有响应

ABB机器人如何建立外部TCP

ABB机器人如何建立外部TCP,一般情况下我们的工具是安装在机械手法兰盘上的,工件装在本体之外。工具....
发表于 2019-11-02 05:56? 1644次阅读
ABB机器人如何建立外部TCP

浅谈IP地址分配与中继设备

TCP/IP协议是在OSI参考模型出现之间就被开发的,并广泛部署在计算机网络中。但是,后来由于概念混....
发表于 2019-09-28 02:42? 322次阅读
浅谈IP地址分配与中继设备
舟山惭遗文化传媒有限公司 传奇私服 银河极速赛车注册官网 江苏快3二同号复遗漏 江苏11选5 河北11选5 北京11选5 <潢川县>| <五华县>| <蒲城县>| <盐津县>| <呈贡县>| <黄龙县>| <柘城县>| <望都县>| <三都>| <四川省>| <宁德市>| <库车县>| <景宁>| <剑阁县>| <利津县>| <沁水县>| <应用必备>| <龙江县>| <阿图什市>| <西畴县>| <广宁县>| <成安县>| <青州市>| <龙海市>| <城步>| <方城县>| <濮阳市>| <柞水县>| <莎车县>| <常宁市>| <英山县>| <巧家县>| <浦县>| 传奇私服||www.mygayzette.com 传奇私服||www.8e86.net 传奇私服||www.szxdljk.com 传奇私服||www.cdfeipinhuishou.com 传奇私服||www.abo4.com 传奇私服||www.fishfinderswithgps.com 传奇私服||www.fskdzs.com 传奇私服||www.fcgccl.com 传奇私服||www.loveqqt.com 传奇私服||www.zgzckj.com 传奇私服||www.shen-zhou.com 传奇私服||www.hsingmaw.com 传奇私服||www.jinfengcheng.com 传奇私服||www.cychemical.com 传奇私服||www.liao126.com 传奇私服||www.gzsndm.com 传奇私服||www.xatrtz.com 传奇私服||www.meihaoguoji.com 传奇私服||www.huizhouyl.com 传奇私服||www.xinkeyazhu.com 传奇私服||www.hbzswj.com 广东快乐十分www.nanhaixuelang.com 传奇私服www.diancw.com 传奇私服www.etkxw.com 传奇私服www.hsysgs.com <文本链> <文本链> <文本链> <文本链> <文本链>