Service Mesh 是新瓶装旧酒吗?

戳蓝字“CSDN云计算”关注我们哦!

文章来源:阿里巴巴云原生,点击查看原文。

Service Mesh 是新瓶装旧酒吗?

新技术出现时所主张的价值一定会引发相应的探讨,Service Mesh 也不例外。

以往,怀疑 Service Mesh 价值的观点主要有两大类。

  • 第一类是应用的数量并没有达到一定的规模,在 ServiceMesh 增加运维和部署复杂度的情形下,认为所带来的成本和复杂度高于所获得的收益。

从根本上来看,这一类并非真正怀疑 ServiceMesh 的价值,而是主张在 Service Mesh 还没有完全成熟和普及的情形下,在未来合适的时机再考虑采纳。

当然,我在与外部客户交流时也碰到一些特例,他们即便在应用数很少的情形下,仍希望通过 ServiceMesh 去解决非 Java 编程语言(比方说 Go)的分布式链路追踪等服务治理问题,虽说这些能力在 Java 领域有相对成熟的解决方案,但在非 Java 领域确实偏少,所以很自然地想到了采用 Service Mesh。

  • 第二类怀疑 Service Mesh 价值的,是应用的数量具有相当的规模且对分布式应用的规模问题也有很好的认知,但由于在发展的过程中已经积累了与 ServiceMesh 能力相当的那些(非体系化的)技术,造成初识 Service Mesh 时有“老酒换新瓶”的感觉而不认可其价值。阿里巴巴过去也曾属于这一阵营。

阿里巴巴在分布式应用的开发和治理方面的整体解决方案的探索有超过十年的历程,且探索过程持续地通过 双11 这样的严苛场景做检验和孵化,采用单一的 Java 语言打造了一整套的技术。

即便如此,应对分布式应用的规模问题依然不轻松,体现于因为缺乏顶层设计而面临体系性不足,加之对技术产品自身的用户体验缺乏重视,最终导致运维成本和技术门槛都偏高。

在面临这些阵痛之际,云原生的概念逐渐清晰地浮出了水面。

云原生主张技术产品在最为严苛的场景下仍能提供一定质量的服务而体现良好弹性,同时也强调技术产品本身应当具有良好的易用性,以及将来为企业需要多云和混合云的 IT 基础设施提供支撑(即:帮助实现分布式应用的可移植性)。

云原生的概念不仅很好地契合了阿里巴巴集团在技术发展上亟待解决的阵痛,也迎合了阿里巴巴将云计算作为集团战略、让云计算普惠社会的初衷。

在这一背景下,阿里巴巴做出了全面云原生化的决定,ServiceMesh 作为云原生概念中的关键技术之一,当然也包含在其中。

Service Mesh 给阿里巴巴带来的价值

Service Mesh 所带来的第一个变化体现于:服务治理手段从过去的框架思维向平台思维转变。

这种转变并非后者否定前者,而是前后者相结合去更好地发挥各自的优势。两种思维的最大区别在于,平台思维不仅能实现应用与技术基础设施更好的解耦,也能通过平台的聚集效应让体系化的顶层设计有生发之地。

框架思维向平台思维转变在执行上集中体现于“轻量化”和“下沉”两个动作。

  • 轻量化是指将那些易变的功能从框架的 SDK 中移出,结果是使用了 SDK 的应用变得更轻,免除了因易变功能持续升级所带来的低效;也彻底让应用的开发者无需关心这些功能,让他们能更好地聚焦于业务逻辑本身;

  • 从框架中移出的功能放到了 ServiceMesh 的 Sidecar 中实现了功能下沉。

Service Mesh 作为平台性技术,将由云厂商去运维和提供相应的产品,通过开源所构建的全球事实标准一旦被所有云厂商采纳并实现产品化输出,那时应用的可移植性问题就能水到渠成地解决。

功能下沉在阿里巴巴落地 Service Mesh 的过程中也看到了相应的价值。

阿里巴巴的电商核心应用基本上都是用 Java 构建的,在 Mesh 化之前,RPC 的服务发现与路由是在 SDK 中完成的,为了保证 双11 这样的流量洪峰场景下的消费者用户体验,会通过预案对服务地址的变更推送做降级,避免因为频繁推送而造成应用进程出现 FullGC。

Mesh 化之后,SDK 的那些功能被放到了 Sidecar(开发语言是 C++)这一独立进程中,这使得 Java 应用进程完全不会出现类似场景下的 Full GC 问题。

软件设计的质量主要体现在“概念”和“关系”两个词上。

同样功能的一个系统,不同的概念塑造与切分将产生完全不同的设计成果,甚至影响到最终软件产品的工程质量与效率。当概念确定后,关系也随之确立,而关系的质量水平体现在解耦的程度上。

ServiceMesh 使得应用与技术基础设施之间的关系变得更松且稳定,通过流量无损的热升级方案,使得应用与技术基础设施的演进变得独立,从而加速各自的演进效率。软件不成熟、不完善并不可怕,可怕的是演进起来太慢、包袱太重。

阿里巴巴在落地 Service Mesh 的过程中,体会到了松耦合所带来的巨大工程价值。当应用被 Mesh 化后,接下来的技术基础设施的升级对之就透明了,之前因为升级工作所需的人力配合问题可以通过技术产品化的手段完全释放。

另外,以往应用进程中包含了业务逻辑和基础技术的功能,不容易讲清楚各自对计算资源的消耗,ServiceMesh 通过独立进程的方式让这一问题得以更好地隔离而实现量化,有了量化结果才能更好地对技术做优化。

Service Mesh 所带来的第二个变化在于:技术平台的建设从面向单一编程语言向面向多编程语言转变。

对于初创或小规模企业来说,业务应用的开发采用单一的编程语言具有明显优势,体现于因为个体掌握的技术栈相同而能带来良好的协作效率,但当企业的发展进入了多元化、跨领域、规模更大的更高阶段时,多编程语言的诉求就随之产生,对于阿里巴巴这样的云厂商来说更是如此(所提供的云产品不可能过度约束客户所使用的编程语言)。

多编程语言诉求的背后是每种编程语言都有自己的优势和适用范围,需要发挥各自的优势去加速探索与创新。

 

从技术层面,这一转变意味着:

  • 第一,技术平台的能力需要尽可能地服务化,避免因为服务化不彻底而需要引入 SDK,进而带来多编程语言问题(即因为没有相应编程语言的 SDK 而无法使用该编程语言);

  • 第二,在无法规避 SDK 的情形下,让 SDK 变得足够的轻且功能稳定,降低平台化和多编程语言化的工程成本,支持多编程语言 SDK 最好的手段是采用 IDL。

 

从组织层面,这一转变意味着平台技术团队的人员技能需要多编程语言化。一个只有单一编程语言的团队是很难做好面向多编程语言的技术平台的,不只是因为视角单一,还因为无法“吃自己的狗食”而对多编程语言问题有切肤之痛。

Service Mesh 带来的发展机遇

在这两个变化之下,我们来聊一聊 Service Mesh 所带来的发展机遇。

 

  • 首先,Service Mesh 创造了一次以开发者为中心去打造面向未来的分布式应用开发平台的机会;

在 ServiceMesh 出现之前,各种分布式服务治理技术产品的发展,缺乏强有力的抓手去横向拉通做体系化设计和完成能力复用,因而难免出现概念抽象不一致和重新造轮子的局面,最终每个技术产品有自己的一套概念和独立的运维控制台。

当多个运维控制台交到开发者手上时,他们需要做大量的学习,去理解每个运维控制台的概念以及它们之间的关系,背后所带来的困难和低效是很容易被人忽视的。

 

本质上,Service Mesh 的出现是解决微服务软件架构之下那些藏在应用与应用之间的复杂度的。它的出现使得所有的分布式应用的治理问题被放到了一起去考虑。换句话说,因为 ServiceMesh 的出现,我们有机会就分布式应用的治理做一次全局的设计,也有机会将各种技术产品整合到一起而避免重复建设的问题。

未来的分布式应用开发平台一定是基于 Service Mesh 这一基础技术的。

为此,需要借这个契机从易用性的角度重新梳理应给开发者塑造的心智。易用性心智的确立,将使得开发者能在一个运维控制台上做最少的操作,通过为他们屏蔽背后的技术实现细节,而减轻他们在使用时的脑力负担,以及降低操作失误带来安全生产事故的可能性。

理论上,没有 ServiceMesh 之前这些工作也能做,但因为没有具体的横向技术做抓手而无法落地。

 

  • 其次,Service Mesh 给其他技术产品创造了重新思考云原生时代的发展机会;

有了 ServiceMesh 后,以前很多独立的技术产品(比如,服务注册中心、消息系统、配置中心)将变成 BaaS(Backend as a Service)服务,由 ServiceMesh 的 Sidecar 负责与它们对接,应用对这些服务的访问通过 Sidecar 去完成,甚至有些 BaaS 服务被 Sidecar 终结而完全对应用无感。

这些变化并非弱化了那些 BaaS 服务的重要性。相反,因为其重要性而需要与 ServiceMesh 做更好的整合去为应用提供服务,与此同时探索做一定的能力增强。

比方说,ServiceMesh 所支持的应用版本发布的灰度功能(包括蓝绿发布、金丝雀发布、A/B 测试),并非每一个 BaaS 服务在 Mesh 化后就能很好地支持这一功能,而是需要做相应的技术改造才行。

请注意,这里主要讲的是应用的灰度能力,而非 BaaS 服务自身的灰度能力。当然,并不妨碍探索通过 Service Mesh 让 BaaS 服务自身的灰度工作变得简单且低风险。

未来很多技术产品的竞争优势将体现于它能否与 Service Mesh 形成无缝整合。

无缝整合的核心驱动力,源于用户对技术产品的易用性和应用可移植性的需要。基于这一认识,阿里巴巴正在将 RocketMQ/MetaQ 消息系统的客户端中的重逻辑剥离到 Envoy 这一 Sidecar 中(思路依然是“下沉”),同时基于 Service Mesh 所提供的能力做一定的技术改造,以便 RocketMQ/MetaQ 能很好地支撑应用的灰度发布。

类似这样的思考与行动,相信未来会在更多的技术产品上出现。

  • 再次,Service Mesh 给技术基础设施如何与业务基础技术更好地协同提供了一次探索机会;

每一种业务(比如电商)都会构建基于所在领域的基础技术,这类技术我们称之为业务基础技术。

当阿里巴巴希望将某一业务的基础技术搬到外部去服务客户时,面临业务基础技术如何通过服务化去满足客户已选择的、与业务基础技术不同的编程语言的问题,否则会出现基于 Java 构建的业务基础技术很难与 Go 所编写的应用协同。

在 ServiceMesh 致力于解决服务化问题的过程中,能否通过一定的技术手段,让业务基础技术的能力通过插件的形式“长”在 ServiceMesh 之上是一个很值得探索的点。当业务基础技术以插件的形式存在时,业务基础技术无需以独立的进程存在而取得更好的性能,且这一机制也能被不同的业务复用。

阿里巴巴的 ServiceMesh 技术方案所采用的 Sidecar 开源软件 Envoy 正在积极地探索通过 Wasm 技术去实现流量处理的插件机制,将该机制进一步演变成为业务基础技术插件机制是值得探索的内容。

下图示例说明了业务基础技术的插件机制。

图中两个彩色分别代表了不同的业务(比如一个代表电商,另一个代表物流),两个业务的基础技术并非开发了两个独立的应用(进程)然后做发布和运维管理,而是基于 Wasm 所支持的编程语言实现了业务技术插件,这一点可以理解为用多编程语言的方式解决业务服务化问题,而非强制要求采用与 Sidecar 一样的编程语言。

插件通过 Service Mesh 的运维平台进行管理,包含安装、灰度、升级、监控等能力。

由于插件是“长”在 Service Mesh 之上的,插件化的过程就是业务技术服务化的过程。

另外,Service Mesh 需要提供一种选择能力,让业务的应用开发者或运维者选择自己的机器上需要哪些插件(可以理解为插件市场)。

另一个值得关注的点是:插件的运维和管理能力以及一定的质量保证手段由 Service Mesh 平台提供,但运维、管理和质量保证的责任由各插件的提供者承担。这种划分将有效地杜绝所有插件的质量由 Service Mesh 平台去承担而带来的低效,分而治之仍是改善很多工程效率的良方。

  • 最后,Service Mesh 给探索面向未来的异地多活、应用永远在线的整体技术解决方案打开了一扇大门。

服务之间的互联互通,服务流量的控制、观测和安全加固是微服务软件架构下所要解决的关键问题,这些问题与规模化下的服务可用性和安全性紧密相关。

未来,通过 Service Mesh 的流量控制能力能做很多改善应用发布和运维效率的文章,那时才能真正看到一个灵动、称手的云平台。

Service Mesh 的“三位一体”发展思路

阿里巴巴作为云计算技术的供应商,在探索 Service Mesh 技术的道路上,不只是考虑如何让云原生技术红利在阿里巴巴内部兑现,同时还思考着如何将技术红利带给更多的阿里云客户。

基于此,阿里巴巴就 Service Mesh 的整体发展思路遵循“三位一体”,即阿里巴巴内部、阿里云上的相应商业产品和开源软件将采用同一套代码。

就我们与阿里云客户交流的经验来看,他们乐于尽最大可能采用非云厂商所特有的技术方案,以免被技术锁定而在未来的发展上出现掣肘。另外,他们只有采纳开源的事实标准软件才有可能达成企业的多云和混合云战略。

基于客户的这一诉求,我们在 Service Mesh 的技术发展上特别重视参与开源事实标准的共建。在 Istio 和 Envoy 两个开源项目上,我们都会致力于将内部所做的那些优化反哺给开源社区。

未来,我们将在 Service Mesh 领域坚定而扎实地探索,也一定会将探索成果和思考持续地分享给大家。


福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

推荐阅读:

  • 华为将正式起诉美国联邦通信委员会;谷歌技术故障导致美国三大航空公司网站短暂宕机;英特尔拟20亿美元买以色列AI芯片公司……

  • 假如计算机是中国人发明的,那代码应该这么写

  • 微软张若非:搜索引擎和广告系统,那些你所不知的AI落地技术

  • 华为生产不含美国芯片的手机!

  • 2020年,区块链开发者还有哪些期待?

  • 华为云TaurusDB计算存储分离架构:让数据“身”分离,“心”凝聚

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mars 算法实践——人脸识别

Mars 是一个基于矩阵的统一分布式计算框架,在之前的文章中已经介绍了 Mars 是什么, 以及 Mars 分布式执行 ,而且 Mars 已经在 GitHub 中开源。当你看完 Mars 的介绍可能会问它能做什么,这几乎取决于你想做什么,因为 Ma…

2018年自然语言处理最值得关注的研究、论文和代码

2018年对于自然语言处理(NPL)是很有意义的一年,见证了许多新的研究方向和尖端成果。Elvis Saravia 是计算语言学专家,也是2019 计算语言学会年度大会北美分部的项目委员之一。他总结了2018年 NLP 的重要进展,包括增强学…

【惊天】京东任命周伯文担任京东云与AI事业部负责人 全面负责AI、云计算、IoT三大技术领域!

昨日,京东集团爆出大消息,宣布设立京东云与AI事业部,整合原京东云、人工智能、IoT三大事业部的架构与职责,由京东集团副总裁周伯文博士担任负责人,直接向京东集团董事局主席兼CEO刘强东先生汇报。 对此周伯文博士表示…

如何基于OceanBase构建应用和数据库的异地多活

如何基于OceanBase构建应用和数据库的异地多活 前言 OceanBase是一个通用的分布式的关系型数据库,有很多独特的特点。比如数据库的多租户、高可用、极致弹性伸缩能力。如果把OceanBase当作单库使用,就没有把OceanBase的分布式优势发挥到极致。 本文主要…

Perhaps you are running on a JRE rather than a JDK?

解决方案 https://gblfy.blog.csdn.net/article/details/102893885

12亿行代码,阿里巴巴这一年的技术报告和梦想报告

78年前,图灵用代码编译出的情报破解系统,让二战至少提前2年结束,挽救了2000万人的生命;50年前,登月科学家敲下的一行关键代码,启动了阿波罗号的着陆,成就了人类的一大步;30年前&…

为什么鲜有炫富的程序员?看看中国各阶级收入统计表

网上那些口口声声随随便便就能年入百万的,听听就行。作为开发者,可以不参加双11,但是花钱最多的地方就是买电子产品和“买课”。他们的炫富就是:你根本不知道有多贵的机械键盘,为了赚钱和幸福,又买了多少大…

路径规划之 A* 算法

算法介绍 A*(念做:A Star)算法是一种很常用的路径查找和图形遍历算法。它有较好的性能和准确度。本文在讲解算法的同时也会提供Python语言的代码实现,并会借助matplotlib库动态的展示算法的运算过程。 A*算法最初发表于1968年&a…

王思聪究竟上了多少次热搜?

戳蓝字“CSDN云计算”关注我们哦!作者 | 朱小五责编 | 阿秃王思聪又又又上了微博热搜——然而这次却不是关于娱乐圈。最近几天,王思聪与他的“限消令”接连登上热搜榜,引发吃瓜群众们广泛热议。知乎的段子手们也纷纷发挥自己的想象力。小五本…

2018年,自然语言处理很全的应用与合作

2018年见证了 NLP 许多新的应用发展。Elvis Saravia 是计算语言学专家,也是2019 计算语言学会年度大会北美分部的项目委员之一。他在一份报告中总结出,NLP 不仅在聊天机器人和机器学习中有所突破,也在医疗健康、金融、法律和广告等行业中有崭…

如何把springboot项目部署到tomcat上

文章目录一、 企业发布场景1. 首次发布2. 非首次发布3. 全量发布和增量发布概念和区别二、springboot部署tomcat2.1. 创建Web初始化类2.2. 修改打包方式2.3. 项目发布目录2.4. 启动tomcat2.5. 浏览器验证一、 企业发布场景 1. 首次发布 项目上线第一次会采用全量发布 【编译】…

OceanBase迁移服务:向分布式架构升级的直接路径

2019年1月4日,OceanBase迁移服务解决方案在ATEC城市峰会中正式发布。蚂蚁金服资深技术专家师文汇和技术专家韩谷悦共同分享了OceanBase迁移服务的重要特性和业务实践。 蚂蚁数据库架构的三代升级史 在过去的十多年时间里,蚂蚁在整个基础数据库架构上一…

被嫌弃的互联网的 “一生”(上)

戳蓝字“CSDN云计算”关注我们哦!作者 | 小灰责编 | 阿秃在人类的历史长河中,我们这一代人是最幸运的一代,因为我们生活在一个智慧飞扬的时代。这个时代最伟大的发明是什么?或许每个人心中都有不同的答案。在小灰看来,…

Mars 是什么、能做什么、如何做的——记 Mars 在 PyCon China 2018 上的分享

最近,在 PyCon China 2018 的北京主会场、成都和杭州分会场都分享了我们最新的工作 Mars,基于矩阵的统一计算框架。本文会以文字的形式对 PyCon 中国上的分享再进行一次阐述。 听到 Mars,很多第一次听说的同学都会灵魂三问:Mars …

Failed to bind properties under mybatis-plus.configuration.result-maps[0]

Failed to bind properties under mybatis-plus.configuration.incomplete-result-maps[0].assistant.configuration.mapped-statements[0].parameter-map.parameter-mappings[0] to org.apache.ibatis.mapping.ParameterMapping解决方案: 鉴于Spring Boot 2.2.0 和…

为什么要学Python 编程?(附Python学习路线)

为何程序员多数会选择 Python 作为入门级语言?在此,估计不少开发者都会予以反驳,自己明明就没有选择 Python,不能一概而论。下面,我们就用数据一窥如今最流行的编程语言。今年的 3 月份,国外招聘网站 Hacke…

“资源添加到Web应用程序[]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间”

解决办法&#xff1a; 在 /conf/context.xml 的 前添加以下内容&#xff1a; <Resources cachingAllowed"true" cacheMaxSize"100000" />

报告!这群阿里工程师在偷偷养猪

今天下午&#xff0c;期盼已久的阿里巴巴技术脱贫大会就要开始了。 很多人都知道&#xff0c;我们在1年前就投入100亿元人民币成立阿里巴巴脱贫基金。从教育到健康&#xff0c;再到女性、生态和电商扶贫&#xff0c;这五个方向分别由五位阿里合伙人直接牵头。 很多人不知道的…

七大新品集中亮相,腾讯云AI大数据全线升级!

近日腾讯云在北京举行大数据AI新品发布会。会上&#xff0c;腾讯云带来了在大数据与AI领域的最新研究成果&#xff0c;包括AI换脸甄别技术AntiFakes、腾讯星图以及企业画像平台等七大重磅新品&#xff0c;并对AI、大数据产品进行全线升级&#xff0c;致力于为用户带来更精细化的…

解决CentOS7本机时间与实际时间相差8小时的问题

查看当前日期时间&#xff1a; timedatectl删除原来的时间日期配置 rm -rf /etc/localtime链接指向新的时间日期配置 ln -sv /usr/share/zoneinfo/Universal /etc/localtime设置完成后查看当前时间日期&#xff1a; 如果不生效请重启 reboot