怎么理解Service Mesh

技术怎么理解Service Mesh这篇文章主要讲解了“怎么理解Service Mesh”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Service Mesh”吧

本文主要讲解“如何理解服务网格”。本文的解释简单明了,易学易懂。请跟随边肖的思路,一起学习学习《如何理解服务网格》!

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

抽象如下:

怎么理解Service  Mesh

时代1:原始通信时代

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

怎么理解Service  Mesh

时代2:TCP时代

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

怎么理解Service  Mesh

第三代:第一代微服务

TCP出现后,机器之间的网络通信不再是难题,以GFS/BigTable/MapReduce为代表的分布式系统蓬勃发展。此时,分布式系统特有的通信语义再次出现,如融合策略、负载均衡、服务发现、认证授权、配额限制、跟踪监控等。因此,服务可以根据业务需求实现一些所需的通信语义。

怎么理解Service  Mesh

时代4:第二代微服务

为了避免每个服务都需要自己实现一套分布式系统通信的语义功能,随着技术的发展,出现了一些面向微服务架构的开发框架,如Twitter的Finagle、脸书的Proxygen、Spring Cloud等。这些框架实现了分布式系统通信所需的各种通用语义功能,如负载均衡和服务发现等。从而在一定程度上屏蔽了这些通信细节,使开发人员能够用更少的框架代码开发健壮的分布式系统。

怎么理解Service  Mesh

时代5:第一代Service Mesh

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

首先,虽然框架本身屏蔽了分布式系统通信的一些通用功能实现细节,但是开发人员要花费更多的精力去掌握和管理复杂的框架本身。在实际应用中,跟踪和解决框架中的问题并不容易。

其次,开发框架通常只支持一种或几种特定的语言。回顾文章开头对微服务的定义,一个重要的特点就是语言独立性,但是那些用没有框架支持的语言编写的服务很难集成到面向微服务的架构体系中,也很难根据本地情况用多种语言实现架构体系中的不同模块。

第三,框架以lib库的形式与服务捆绑在一起,复杂项目依赖时库版本的兼容性非常困难。同时,框架库的升级不能对服务透明,服务会因为与业务无关的lib库升级而被迫升级。

于是,以Linkerd、特使、Ngixmesh为代表的代理模式(sidecar模式)应运而生。这是第一代的Service Mesh,将分布式服务的通信抽象为单一层,在该层实现分布式系统所需的负载均衡、服务发现、认证授权、监控跟踪、流量控制等功能。作为等同于服务的代理服务,它与服务一起部署,以接管服务流

怎么理解Service  Mesh

如果我们从全局的角度来看,我们将得到下面的部署图:

h">

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

怎么理解Service Mesh

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

时代6:第二代Service Mesh

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

怎么理解Service Mesh

只看单机代理组件(数据面板)和控制面板的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

(0)

相关推荐

  • Python数据结构与算法中的散列是什么

    技术Python数据结构与算法中的散列是什么本篇内容主要讲解“Python数据结构与算法中的散列是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python数据结构与算法

    攻略 2021年11月29日
  • 苹果电脑如何切换输入法,Mac下如何切换输入法

    技术苹果电脑如何切换输入法,Mac下如何切换输入法1、如果你只有二个输入法苹果电脑如何切换输入法,一个英文输入法和一个中文输入法,(五笔或拼音),那我们可以用键盘快捷键来切换就行了,按下command键,再按一下空格键,

    生活 2021年10月28日
  • RecylerView动画组件RecylerViewAnimators是什么意思

    技术RecylerView动画组件RecylerViewAnimators是什么意思这篇文章主要介绍了RecylerView动画组件RecylerViewAnimators是什么意思,具有一定借鉴价值,感兴趣的朋友可以参

    攻略 2021年12月3日
  • mysql存储过程中游标怎么用

    技术mysql存储过程中游标怎么用这篇文章将为大家详细讲解有关mysql存储过程中游标怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DELIMITER $$USE `cms`$$

    攻略 2021年11月2日
  • 动词ing形式,动词的ing形式如何变

    技术动词ing形式,动词的ing形式如何变动词ing形式如何变动词ing形式:1、一般情况下直接+ing;如:flying;
    2、以不发音的e结尾(或辅音字母+e结尾)的单词,去掉e+ing;如:make-making,

    生活 2021年10月26日
  • Golang如何打包配置文件

    技术Golang如何打包配置文件这篇文章主要介绍了Golang如何打包配置文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。背景最近在写一个涉及到管理阿里

    攻略 2021年12月11日