Mesos 已死,容器永生

简介: “回顾过去,我认为 Mesos 的失败是种必然。”

4 月 7 日,Apache 宣布开始投票进程,准备将曾火极一时的 Mesos 项目移至[Attic](https://zh.wikipedia.org/wiki/Apache_Attic
)下,保存为“只读”状态。Attic 是 Apache 软件基金会为已终止项目提供的一种解决方案,此举意味着 Mesos 正式进入项目“退休”阶段。

4b7e3088ba55bdea1b20fdc91af9a179.png

Mesos 诞生于 2009 年,最初是伯克利大学的一个研究项目。它曾为分布式资源管理做出过一系列前沿贡献,据 Mesosphere/D2IQ 联合创始人回忆,“我们提出的 Mesos 是一套可跨越多个不同集群计算框架(类似于 Hadoop 与 MPI)实现商用集群共享的平台。”它的诞生甚至比 YARN 还早了几年,并于 2010 年很快被应用到 Twitter,成为 Twitter 自定义 PaaS 的实现基础,管理着 Twitter 超过 30,0000 台服务器上的应用部署。随后其他公司纷至沓来,比如 Airbnb、eBay 和 Netflix 等等,Mesos 也因此火极一时。

但很遗憾的是,现在已经到了它退役的时候。不过短短数年,我们再次见证了一个知名技术项目的兴起和衰落。

响应时代的召唤

Mesos 项目起源于 Google 的数据中心资源管理系统 Borg,目的是弄清楚是否必须重建 Google 的超大规模计算专有架构。

d228719b311e9dce3efef6596fa81f1c.png

同时,作为世界上最成功的社交媒体巨头之一,创立于 2006 年的 Twitter 也以其庞大的生产集群规模(万级别节点)而备受关注。Twitter 每天需要管理几亿条推文,急需开发一个类似的资源管理系统来帮助他们摆脱可怕的“失败之鲸”(如上图所示)。后来他们注意到加州大学伯克利分校 AMPLab 正在开发的名为 Mesos 的项目,这个项目的负责人是 Ben Hindman,Ben 是加州大学伯克利分校的博士研究生。后来 Ben Hindman 加入了 Twitter,负责开发和部署 Mesos。

Mesos 的两级调度架构很好的解决了 Twitter 面临的可伸缩性和性能上的挑战,“失败之鲸”逐渐成为往事。Twitter 的这个 PaaS 平台解决方案,后来以 Apache Aurora 的名号转为开源。

28a2e3c28ac7c98fac8a316ef16f9a7b.png

在海量数据的挑战下,Twitter 基础设施架构的演进过程,一直以来都是全世界技术公司眼中的标杆案例。在 2010 年之后,大量企业跟进了 Mesos,包括 Uber、Airbnb、eBay、Netflix,以及国内的携程、去哪儿等一众企业。

可能是计算机历史上最短的技术战争

Mesos 的创造者 Ben Hindman 等于 2013 年建立了名叫 Mesosphere 的初创公司,旨在打造一套生产级商业化 Mesos 平台。最终成果是一套名为 DC/OS(数据中心操作系统)的管理平台,号称将成为集群服务器的主控系统。他们还打造了 Marathon,这款工作负载编排平台明显是将 Kubernetes 设定成了竞争对手。Mesosphere 的目标是将数据中心改造成具有凝聚力的计算复合体,并在中心内部提供一套新型运营环境。

但谁也没想到,几年后 Docker 成为了改变游戏规则的人。在 2015 年的短短几个月里,Docker 公司凭借一款非凡的新型工具彻底颠覆了服务器工作负载自动化市场。从那时起,数据中心基础设施不再单纯侧重于服务器,而是以工作负载为中心——强调负载的可移植性、灵活性与安全完整性。

2015 年 6 月 22 日,作为回馈开源社区热情支持的一份谢礼,Docker 将基于 Linux 的软件容器包装格式捐赠给 Linux 基金会,并正式定名为开放容器倡议(OCI)。但就在同一周,谷歌闪电出手,将 Kubernetes 项目的管理权移交给了另一个 Linux 基金会项目:云原生计算基金会(CNCF)。

之后,Docker 公司当初想培养的这片市场就已经被很多人称为“Kubernetes 生态系统”。在当时的工作流编排领域,主要有三家竞争参与者:Kubernetes,也源自谷歌内部原名为“Borg”的项目;Docker Swarm,已经开始与商业 Docker Enterprise 产品共同交付的集群管理器;Apache Mesos,用于“非镜像工作负载”(包括 Hadoop 与 Spark 大数据系统等)的服务器集群调度与管理方案。

起初,Mesos 代理负责在各组件之间分配工作负载。但不久之后,Kubernetes 也在这一领域有所建树。Mesosphere 的一部分技术人员认为这两款编排工具完全可以并行存在,也有人觉得可以把 Kubernetes 环境作为 Mesos 模板的工作场景。

但想象总是美好的。

面对 Kubernetes 无可匹敌的市场优势地位,仅仅两年,Kuberneters 就胜局已定。经历了计算发展史上最“高效”的对抗之后,Docker 与 Mesosphere 也只能认怂、转而寻求新的发展方向。

Mesosphere 于 2019 年 8 月正式更名为 D2IQ(内部员工将其称为「Day 2-IQ」),推进品牌重塑。他们继续开发所谓“Mesosphere DC/OS”产品。但 Mesosphere 所提供的诸如 Marathon 等上层解决方案在其产品线路的位置已经被 Ksphere 取代。Ksphere 是一款用于管理及分配容器化工作负载的组件,其中也包括仍然沿用原名的 Mesphere Kubernetes Engine(MKE)。Mesosphere 于 2020 年 10 月停止支持 Mesos / Marathon。

“Mesos 的失败是种必然”

如果真的存在技术“生态系统”,那么这座代表生态的高山从来就容不下二虎。超市的商品陈列可以兼容不同品牌,但跟这种商品不同的是,计算机技术领域就没有哪两种产品能够长期保持双头垄断地位。

技术专家张磊在2016年容器技术年终盘点文章里总结道:

“社区”两个字,竟成了 Mesos 生态的命门。在 Docker 公司煞费苦心在社区争取每一个用户和粉丝、Google 公司放下身段把 Github 作为一线阵地,用 Kubernetes 全力输出技术理念的时候,一旦错失了先机,哪怕有一身本事如 Mesos 项目,也只能望用户而心叹。这正是目前 Mesos 生态系统在容器圈子表现的不够强势的重要原因。当然,既然实力强劲,Mesos 生态在工业界中的案例还是数不甚数,除了 Marathon 框架,Mesosphere 公司重点维护的 DC/OS 项目其实能够提供并不逊于 Kubernetes 的各项容器编排和管理能力,不可谓不强大。但是社区表现不力,使得 Mesos 生态错失了成为容器圈的“buzz word”(热词)的机会。

2019 年,曾作为 Mesos“代言人”的 Twitter 华丽丽的宣布其基础设施将从 Mesos 全面转向 Kubernetes:“我们认为,使用 Kubernetes 项目作为 Twitter 公司基础设施向前演进的核心依赖,将会是一个正确的选择”。

昨天,Apache 提交“将 Mesos 移至 Attic”的进程之后,众多开发者对 Mesos 的开发时光予以了怀念。

作为 Mesos 项目的 PMC 成员,Ben Hindman在 Hackernews 上总结说:

“回顾过去,我认为 Mesos 的失败是种必然,原因有以下几点:

  • Kubernetes 拥有后发优势,承载着谷歌十多年来在构建此类系统方面积累起的丰富经验与知识。Mesos 则源自技术研究,随后虽然得到了 Twitter 的实际应用,但负责项目的工程师们(包括我本人)并不具备构建集群管理系统的经验。我们在探索当中学到了很多,回头来看,如果能有第二次机会、我们肯定会认真调整设计思路。
  • Mesos 这个项目做得有点‘小气’,导致社区变得支离破碎。为了正常使用,新用户们不得不付出大量重复劳动。很明显,大多数用户只想运行服务、作业与 cron 作业,但 Mesos 的设计思路并不是这样。大家必须得从一系列生态系统调度程序(包括 Aurora、Marathon、Chronos 以及 Singularity 等)中进行选择,或者自主构建某些内容。
  • Mesosphere 是一家靠风险投资支持的初创企业,后来则由 Twitter 接手赞助项目发展。正因为如此,我们必须找到一种能够产生收益的商业模式,这就导致我们与用户乃至其他供应商之间产生了紧张关系、甚至是严重的不信任感。相反,谷歌/k8s 不要求任何直接产出,反而可以不断投入大量资金与丰富的人才资源,由此带来的技术成果单靠增强谷歌自己的云计算业务就足以值回票价。”

他总结道:“即使没有出现 k8s,Mesos 也很可能被其他开箱即用类方案所压制。必须承认,Mesos 很难像其他开源项目那样建立起供应商与贡献者团结一致的友好氛围。随着时间推移,Mesos 也许会朝着这个方向发展,但目前还看不到希望。”

曾担任 Mesosphere 架构师和技术总监的 Yujie 博士也跟帖表示:

“Ben 说得很对。我也是 Mesos 项目的长期 PMC 与提交者之一。纵观整段历程,我吸取的教训之一,就是如果从初始设计论文来看,Mesos 的两级式资源分配机制完全就是为运行批量工作负载(例如 spark、mpi 等)所设计。使用它来运行长期服务实际上是后来才做出的改变。我们最终发现,由于第二级调度程序缺少集群的完整视图且第一级调度程序没有足够的信息做出正确决策,我们需要对第一级调度算法进行大量调整才能确保公平性。而其中乐观型解决方案在本质上,其实就是对 Kubernetes 模型的复制。

Kubernetes 成功的另一个原因,可能在于 golang 生态系统。在 Mesos 中,由于采用独特的线程模型,我们耗费了大量精力在 C++中构建基础 HTTP 层。如果能够重新选择,真希望能把这些时间花在开发点真实有用的功能上。”

容器技术的快速发展,得益于开源软件社区的成功。如今,Mesos 社区已经逐渐淡去,但容器还依然处于技术世界的中心,正所谓“Mesos 已死,容器永生”。

延伸阅读:
https://www.infoq.cn/article/interpretation-of-2016-container
https://news.ycombinator.com/item?id=26713082

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
关系型数据库 MySQL 数据库
n8n自动化工具部署与使用
n8n是一款开源的工作流自动化工具,类似于IFTTT。它的优点是开源、可以自托管、下载安装方便、易于使用,可以互联上百种服务。n8n基于节点能够将任何工具连接在一起,轻松部署不同类型的任务。它可以做很多事情,比如:从数据库中获取数据后下载为excel然后通过邮件发送给其他人。
11668 1
|
消息中间件 数据可视化 NoSQL
XXL-Job搭建(传统方式&Docker方式)与使用(Linux环境下)
XXL-Job搭建(传统方式&Docker方式)与使用(Linux环境下)
8180 0
XXL-Job搭建(传统方式&Docker方式)与使用(Linux环境下)
|
设计模式 Java 程序员
Java 设计模式之工厂模式:对象创建的艺术(含 UML 图解)
本文详解Java工厂模式三大形态:简单工厂、工厂方法与抽象工厂,结合UML图解与代码实例,剖析其核心思想——“创建与使用分离”。通过计算器、日志系统、电子设备等案例,深入讲解各模式的实现原理、适用场景及优缺点,并对比选择策略。最后揭示工厂模式在JDK和主流框架中的实际应用,帮助开发者掌握对象创建的艺术,提升代码扩展性与可维护性。(238字)
1150 5
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
1551 0
|
云安全 弹性计算 安全
高危预警:用友 U8 Cloud 漏洞成勒索攻击新入口
近期,用友U8 Cloud多个高危漏洞遭 exploited,导致阿里云客户遭遇勒索攻击。涉及反序列化、远程命令执行及文件上传漏洞,影响2.0至5.1全系列版本。攻击者可任意执行代码、加密数据勒索。建议立即修补、备份并启用安全防护措施。
|
Java 应用服务中间件 Apache
在IntelliJ IDEA中使用Maven配置Tomcat环境
此配置方法具有较高的实用性,简单易懂。遵循以上步骤,您将能顺利在IntelliJ IDEA中使用Maven配置Tomcat环境,从而进行Web项目的开发和调试。
2079 18
|
人工智能 安全 数据安全/隐私保护
大模型安全撬壳计划(二) 参加大模型安全撬壳计划的一点心得
本文分享了作者在参与LLM及多模模型实践中的经验与心得,涵盖代码编写、多轮对话处理、本地模拟交互、越狱方法等内容,并提供了多个实用代码示例与策略建议。同时总结了对模型评分与文档支持的改进建议,适合对LLM应用与对抗攻击感兴趣的开发者与研究者参考。
2377 0
|
存储 安全 算法
警惕勒索病毒的最新变种.weax,您需要知道的预防和恢复方法。
在数字化时代,数据安全至关重要。.weax勒索病毒以其强大的加密能力和传播手段,使用户面临严重数据损失。感染后,文件被加密、扩展名更改,导致无法访问。普通恢复工具对此无能为力。若不幸中招,建议检查备份恢复数据,或寻求专业技术支持(如技术服务号shuju315)。此外,可尝试查找对应解密工具,但需确保来源可靠。预防与技术支持相结合,是应对勒索病毒的关键。
2916 9
|
存储 自然语言处理 测试技术
Llama3.1-8B模型中文版!OpenBuddy发布新一代跨语言模型
7月23日,Meta发布了新一代开源模型系列:Llama3.1。其中405B参数的版本刷新了开源模型性能的上限,在多种指标上的测试成绩接近GPT-4等闭源模型的水平,甚至在部分基准测试中展现出来了超越头部闭源模型的潜力。
EMQ
|
Ubuntu NoSQL 物联网
如何在 Ubuntu 上安装 EMQX MQTT 服务器
本文将以EMQX开源版为例,介绍如何在Ubuntu系统中搭建一个单节点的MQTT服务器,并对搭建过程中容易遇到的常见问题进行逐一演示。
EMQ
3126 1
如何在 Ubuntu 上安装 EMQX MQTT 服务器