Kubernetes的焦点优势是为应用措施开拓人员提供强大的东西来编排无状态的Docker容器。固然有多个打算将项目标范畴扩展到更多的事情负载(如阐明和有状态的数据处事),但这些打算仍然处于很是早期的阶段,尚有待调查。
Apache Mesos最初是UCBerkeley为建设下一代集群打点器而降生的项目,并从如谷歌的Borg和Facebook的Tupperware中吸取履历教导。可是Borg和Tupperware是单体架构,而且是和物理基本设施绑定的封源专有技能。Mesos引入了模块化架构,回收开源的要领,且其设计完全独立于底层基本架构。基于这些因素,Mesos很快被Twitter、Apple(Siri)、Yelp、Uber、Netflix以及很多领先的科技公司所回收,以支持他们在微处事、大数据和及时阐明到弹性伸缩的一切实践。
作为一个集群打点器,Mesos的架构是为了办理一组很是差异的挑战:
1.将数据中心资源整合成一个单一的池,以简化资源设置,同时在私有或民众云之间提供一致的应用措施和操纵体验;
2.在沟通的基本设施上利用差异的事情负载,好比阐明、无状态微处事、漫衍式数据处事和传统应用措施,以提高操作率,低落本钱和空间;
3.特定应用措施的任务(如陈设、自修复、扩展和进级)配置为自动化day-two 操纵;提供高可用的容错基本设施;
4.在不修改集群打点器或现有应用措施的环境下,提供常绿的可扩展性来运行新的应用措施和技能;
5.将应用措施和底层基本设施弹性扩展到数万个节点。
Mesos的奇特之处还在于,可以单独打点各类差异的事情负载——包罗传统的应用措施,如Java、无状态Docker微处事、批处理惩罚功课、及时阐明和有状态的漫衍式数据处事。Mesos遍及的事情负载包围来自于它的两级架构,它支持“应用感知”的调治。应用感知调治是通过将应用措施特定操纵逻辑封装到“Mesos框架”(雷同于运行中的runbook)来完成的。
Mesos Master资源打点器,提供这些底层基本设施的框架部门,同时保持断绝。这种要领答允每个事情负载有本身专用的应用措施调治器,它相识其对陈设、缩放和进级的详细操纵需求。应用措施调治措施也独立地被开拓、打点和更新,这让Mesos保持高度可扩展性,支持新的事情负载,可能跟着时间的推移增加更多的操纵本领。
以一个团队如何打点进级为例。无状态应用措施可以从“蓝/绿”陈设要领中获益;当旧的应用措施还在利用的时候,另一个完整版本的应用措施已经spun up,当旧的应用措施被销毁时,流量切换到新的应用措施。可是,进级像HDFS或Cassandra这样的数据事情负载需要一次脱机,维护当地数据量以制止数据丢失,执行特定序列的进级,并在进级之前和之后对每个节点范例执行非凡查抄和呼吁。这些步调中的所有环节针对特定的应用措施或处事,甚至是特定版本举办的。这使得用通例容器编排调治器打点数据处事变得很是坚苦。
Mesos具备按需打点每个事情负载的本领,使得很多公司将Mesos作为一个统一的平台,并通过其将微处事和数据处事团结运行。运行数据麋集型应用措施的一个通用参考架构是“SMACK仓库”。
清晰时刻
留意:我们在描写Apache Mesos的进程中,没有提及任何干于容器编排的内容。那么,为什么人们老是会将Mesos与容器编排接洽起来呢?容器编排是一个可以在Mesos模块化架构上运行的事情负载的例子,它利用的是构建在Mesos上的一个专门的编排“框架”Marathon。Marathon最初是为了在cgroup容器中编排应用措施(如JARs、tarball、ZIP文件)而开拓的,而且在2014年成为第一批支持Docker容器的容器编排之一。
因此,当人们拿Docker、Kubernetes和Mesos较量时,他们实际上是在比拟Kubernetes、Docker Swarm和Mesos上运行的Marathon。
为什么这很重要?因为Mesos基础不体贴上面跑的是什么。Mesos可觉得Java应用处事器、Docker容器编排、Jenkins CI Jobs, Apache Spark analytics, Apache Kafka streaming以及更多的共享基本设施提供集群处事。Mesos甚至可以运行Kubernetes或其他容器编排,尽量还没有对外集成。
Mesos的另一个思量(以及为什么它对很多企业架构师有吸引力)是它在运行任务要害事情负载时的成熟度。Mesos已经在大局限出产情况下运行(数万台处事器)高出7年,这就是为什么它比市场上其他技能更成熟,更靠得住的原因。
这一切意味着什么?