故事还得从最近很火的浙江移动说起。最近,该运营商凭借一条“DCOS发力双11”的新闻成功火了一把,主要是讲他们搭建了一套基于开源Mesos + Doker技术的DCOS(数据中心操作系统),而且很魄力地将一个服务于上千万用户的重要生产系统迁移其上,同时后端搭配天玑数据 PBData数据库云平台的强劲支撑,最终完美度过了今年 “双11”秒杀的高峰压力。一时间“DCOS”这个词迅速引发业内围观。“它到底是何方神圣?”“为何功能如此强大?”如果你也对它感到好奇,就请毫不犹豫地往下看吧!
1 “嗨!DCOS,你从哪里来?”
在回答这个问题前,不妨先回顾一下国际先进互联网公司数据中心资源管理系统的发展史。早在十多年前,Google就开始使用第一代集群管理Borg技术管理数据中心。随后Twitter从Google的Borg系统中得到启发,开发了一个类似的资源管理系统帮助他们摆脱可怕的“失败之鲸”。2009年加州大学伯克利分校AMPLab首先开发出Apache Mesos,这是一款开源集群管理软件,其核心研发成员Benjamin Hindman随后将其引入Twitter,于是Twitter、Facebook、苹果等大型IT企业开始陆续打造各自特色的基于Mesos的数据中心管理方案。
2012年,围绕Mesos开展商业活动的初创公司Mesosphere诞生,而Benjamin Hindman也以Mesosphere首席架构师的身份投身其中。 正是该公司提出了基于Mesos的DCOS(数据中心操作系统),希望企业能像使用一台计算机一样使用整个数据中心。
2 认识DCOS,从Apache Mesos入手
为了更好地理解DCOS,最好先了解一些Apache Mesos的背景知识。 Mesos适合作为数据中心哪一层的抽象?
IaaS层抽象的是机器, PaaS则更多考虑部署、管理应用/服务。在交互方面,PaaS可能是和开发者直接交互,而Mesos则是以API的形式和软件程序交互。
换句话说,你可以基于Mesos之上构建一个PaaS系统(比如Marathon),同时你还可以在一个IaaS上(比如Openstack)运行Mesos。因此,当Mesos运行在一个组合系统之上,就能直接跨越底层组件去管理和计划上层工作负载。 不过Mesos现在还需要与其它分布式系统配合使用。目前已有不少分布式系统直接构建于Mesos之上,包括Apache Spark,Apache Aurora,Airbnb的Chronos以及Mesosphere的Marathon等。此外还有多个流行系统与Mesos相连并运行于其上,如Apache Hadoop,Apache Storm,Google的Kubernetes等。
Mesos亮点一:两级调度机制 Mesos以Framework的形式,提供了两级调度机制,将任务的调度和执行分离。面对各种类型的任务,在调度阶段,由Framework的 Scheduler(调度器)以资源邀约的形式向Mesos Master申请资源;在执行阶段,由Framework的Executor(执行器)执行任务。
如图所示,Mesos实现了“两级调度机制”,它可以管理多种类型的应用程序(图中只展示了Hadoop和MPI两种类型)。
深入学习:Mesos“两级调度机制”Mesos Master协调全部的Mesos Slave,并确定每个节点的可用资源,聚合计算跨节点的所有可用资源的报告,然后向注册到Master的Framework(作为Master的客户端)发出资源邀约。 Framework根据应用程序的需求,选择接受或拒绝来自Master的资源邀约。一旦接受邀约,Master即协调Framework和Slave,调度参与节点上的任务,并在容器中执行,使得多种类型的任务可在同一个节点上同时运行。
Mesos亮点二:围绕Framework建设的生态系统 在Apache Mesos的术语中,使用Mesos API在集群中调度任务的Mesos应用程序称为Framework(框架)。 Mesos另一个显著亮点就是围绕Framework建设的生态系统了。一旦将任务调度委托给Framework 应用程序,以及采用插件架构,就能直接打造Mesos问鼎数据中心资源管理的生态系统。因为每接入一种新的Framework ,Master无需为此编码,Slave模块可以复用,使得在Mesos所支持的宽泛领域中,业务迅速增长。而开发者就可以专注于他们的应用和Framework的选择。 下图为不断增长的Mesos Framework列表: