Service Mesh:一种新模式,而非新技术?

Stella981
• 阅读 523

Marco Palladino

Service Mesh从何而来?

在过去几个月里,Service Mesh是行业内毋庸置疑的焦点。关于Service Mesh、关于软件架构未来的文章观点,围绕着不同的技术供应商而高度分化,不过有一点共通的事,对于如何在企业中使用API的快速转换,以及这对于我们流量的拓扑意味着什么。

服务API主要是作为将组织外部开发人员与内部系统连接起来的边缘接口,以及将这些内部系统(微服务)绑定到功能整体的“粘合剂”存在的。因此,面向微服务体系结构不可避免会出现数据中心内部通信增加的情况。tongguo的不可避免的结果之一是数据中心内的 内部通信将增加。Service Mesh作为一种潜在的解决方案出现了,它通过提供一个不同的框架来部署现有技术,从而解决了东西部流量增加带来的挑战。

Service Mesh:一种新模式,而非新技术?

Service Mesh是一种模式,而非技术

正如微服务是一种模式而不是一种特定的技术一样,Service Mesh也是一种模式。区分这两者听起来比实际要复杂得多。如果我们从面向对象编程(OOP)的角度来考虑这个问题,一个模式描述的是接口,而不是实现。

Service Mesh:一种新模式,而非新技术?

在微服务的背景下,Service Mesh部署模式能够通过sidecar代理,更好地管理东西流量。当我们拆分系统并使用微服务构建新产品时,我们流量的拓扑结构也正在从外部为主转向内部流量的持续增长。数据中心里的东西通流量增长,缘于我们用网络调用替换过去的函数调用,这意味着我们的微服务必须通过网络来相互通信。但我们都知道,网络有可能是不可靠的。

通过使用不同的部署模式,Service Mesh希望解决东西流量增加带来的挑战。虽然对于传统的南北流量来说,100ms的中间件处理延迟虽然并不理想,但也不是不能接受,不过在东西流量的微服务架构体系中,这样的延迟就不能容忍了。原因是服务之间从东到西的流量增加会增加延迟,当跨不同服务的API请求链被执行和返回时,可能会导致700ms的延迟。

为了减少这种延迟,引入了与微服务进程一起运行的sidecar代理,以删除网络中的额外跳转。Sidecar代理,对应于我们请求执行路径上的数据平面,也提供了更好的弹性,因为我们不再有单点故障。值得注意的是,sidecar代理承担了为我们的微服务的每个实例都有一个代理实例的成本,这需要一个很小的占用空间,以最小化资源损耗。

从功能的角度来看,API管理产品已经提供了多年来所提供的Service Mesh。诸如可观察性,网络错误处理,健康检查等功能是API管理的标志。这些功能本身并不构成任何新颖的功能,但作为一种模式,Service Mesh引入了在我们的体系结构中部署这些功能的新方法。

Service Mesh:一种新模式,而非新技术?

传统的API管理方案已经跟不上了

为什么大多数传统的API管理解决方案不允许这种新的部署选项?因为他们“出生在一个单一的世界”。

事实证明,Docker和Kubernetes出现之前构建的API管理解决方案本身就是一个整体,并没有被设计成在新兴的容器生态系统中有效工作。传统API管理解决方案所提供的重量级运行时和较慢的性能在传统的边缘API用例中是可以接受的,但是在微服务体系结构中,延迟会随着时间的推移而通过增加东西方向的流量活动而增加。从本质上讲,传统的API管理解决方案最终都过于重量级、难以自动化,并且太慢,无法有效地协调与微服务固有的不断增加的通信。

Service Mesh:一种新模式,而非新技术?

由于开发人员理解这一点,在容器出现之前诞生的遗留API管理解决方案引入了他们所谓的“微网关”来处理东西流量,避免重写他们现有的、臃肿的、单一的网关解决方案。问题是,这些微网关虽然更轻量,但仍然需要遗留解决方案与它们一起运行,以便执行策略强制。这不仅意味着在堆栈中保持原来的重型依赖关系,还意味着每个请求之间的延迟增加。这就不难理解,为什么Service Mesh感觉上像是一个全新的类别,因为过去的API管理方案已经无法支持需求了。

总结

当我们在feature-set背景下理解Service Mesh时,我们会发现它与传统API管理解决方案在南北流量方面所做的工作并没有太大的不同。大多数网络和可见性功能在南北流量和东西流量用例中都是有用的,改变的是部署模式,它使我们能够将网关/代理作为轻量级、快速的sidecar容器运行,而不是底层的特性集。

Service Mesh提供的特性集是API管理解决方案多年来一直提供的特性集的一个子集,特别是在使网络可靠、服务发现和可观察性方面。Service Mesh的创新之处在于它的部署模式,它能够运行与轻量级sidecar进程/容器相同的特性集。我们的行业常常会混淆——有时还会推动——一种特定模式等同于底层技术的观点,就像很多关于Service Mesh的讨论一样。

关于Rainbond

Rainbond是一款以应用为中心的开源PaaS,由好雨基于Docker、Kubernetes等容器技术自主研发,可作为公有云或私有云环境下的应用交付平台、DevOps平台、自动化运维平台和行业云平台,或作为企业级的混合云多云管理工具、Kubernetes容器管理工具或Service Mesh微服务架构治理工具。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这