本文主要讲解“如何理解服务网格”。本文的解释简单明了,易学易懂。请跟随边肖的思路,一起学习学习《如何理解服务网格》!
时代0:开发人员想象中,不同服务间通信的方式
抽象如下:
时代1:原始通信时代
然而,现实远比想象的复杂。实际上,通信需要底层能够传输字节码和电子信号的物理层。在TCP协议出现之前,服务需要处理网络通信面临的一系列流量控制问题,如丢包、乱序、重试等。因此,在服务实现中,除了业务逻辑之外,还混合了网络传输问题的处理逻辑。
时代2:TCP时代
为了避免每个服务都需要自己实现一套相似的网络传输处理逻辑,出现了TCP协议,解决了网络传输中的一般流量控制问题,下移技术栈,将其与服务实现分离,成为操作系统网络层的一部分。
第三代:第一代微服务
TCP出现后,机器之间的网络通信不再是难题,以GFS/BigTable/MapReduce为代表的分布式系统蓬勃发展。此时,分布式系统特有的通信语义再次出现,如融合策略、负载均衡、服务发现、认证授权、配额限制、跟踪监控等。因此,服务可以根据业务需求实现一些所需的通信语义。
时代4:第二代微服务
为了避免每个服务都需要自己实现一套分布式系统通信的语义功能,随着技术的发展,出现了一些面向微服务架构的开发框架,如Twitter的Finagle、脸书的Proxygen、Spring Cloud等。这些框架实现了分布式系统通信所需的各种通用语义功能,如负载均衡和服务发现等。从而在一定程度上屏蔽了这些通信细节,使开发人员能够用更少的框架代码开发健壮的分布式系统。
时代5:第一代Service Mesh
第二代微服务模型看似完美,但开发人员很快发现它也有一些本质问题:
首先,虽然框架本身屏蔽了分布式系统通信的一些通用功能实现细节,但是开发人员要花费更多的精力去掌握和管理复杂的框架本身。在实际应用中,跟踪和解决框架中的问题并不容易。
其次,开发框架通常只支持一种或几种特定的语言。回顾文章开头对微服务的定义,一个重要的特点就是语言独立性,但是那些用没有框架支持的语言编写的服务很难集成到面向微服务的架构体系中,也很难根据本地情况用多种语言实现架构体系中的不同模块。
第三,框架以lib库的形式与服务捆绑在一起,复杂项目依赖时库版本的兼容性非常困难。同时,框架库的升级不能对服务透明,服务会因为与业务无关的lib库升级而被迫升级。
于是,以Linkerd、特使、Ngixmesh为代表的代理模式(sidecar模式)应运而生。这是第一代的Service Mesh,将分布式服务的通信抽象为单一层,在该层实现分布式系统所需的负载均衡、服务发现、认证授权、监控跟踪、流量控制等功能。作为等同于服务的代理服务,它与服务一起部署,以接管服务流
如果我们从全局的角度来看,我们将得到下面的部署图:
h">
如果我们暂时略去服务,只看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这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/91876.html