云计算相关话题已经写了3篇,准备再写一篇,给这个系列做一个阶段性的结尾,最后选择了Mesos这个社区里又一个明星产品作为结尾。
回顾Mesos的历史,其实Mesos并不是为Docker而生的,Mesos 始于加州大学伯克利分校UC Berkeley的下一代容器集群管理器项目,并应用了从云计算级别的分布式基础架构中习得的经验和教训。它产生的初衷是为spark做集群管理。而且,Mesos有自己的容器隔离,后来,随着Docker的崛起,Mesos就开始支持Docker容器了。有了Docker助力,大家就开始去尝试Mesos了。
Mesos 独有的独立管理各种工作负载的能力,包括 Java 这样的传统应用程序、无状态 Docker 微服务、批处理作业、实时分析和有状态的分布式数据服务。Mesos 广泛的工作负载覆盖来自于其两级架构,从而实现了“应用感知”调度。通过将应用程序特定的操作逻辑封装在“Mesos 框架”中来实现应用程序感知调度。
资源管理策略Dominant Resource Fairness(DRF), 这是Mesos的核心,也是我们把Mesos比作分布式系统Kernel的根本原因。通俗讲,Mesos能够保证集群内的所有用户有平等的机会使用集群内的资源,这里的资源包括CPU,内存,磁盘等等。
Mesos Master资源管理器,提供这些底层基础设施的框架部分,同时保持隔离。这种方法允许每个工作负载有自己专用的应用程序调度器,它了解其对部署、缩放和升级的具体操作需求。应用程序调度程序也独立地被开发、管理和更新,这让Mesos保持高度可扩展性,支持新的工作负载,或者随着时间的推移增加更多的操作能力。
很多朋友拿Kubernetes和Mesos进行对比,Mesos更侧重底层资源的管理,Kubernetes侧重业务层的调度,容器服务编排,服务发现等。其实Kubernetes也可以运行在Mesos上,也可以选择两者结合。Mesos相当于一堆积木,通过组装实现自己的业务模型,而Kubernetes已经是组装好的积木,直接拿来用就好了。
如果我们想构建一个可靠的平台,用以运行多任务关键工作负载,包括Docker容器和分布式数据服务(例如Spark、Kafka、Cassandra),并希望所有这些都可以在云或数据中心上可移植,那么,Mesos就是最适合的。