Mesos是什么
问题1. 集群部署主要在VM或者在物理层静态的进行资源划分, 如下图, 划分每3台主机作为一个集群运行各自的应用
此时从时间维度观察3个集群的资源利用情况, 如下图
可以观察到整个时间轴上, 整体资源利用率并不很高, 但是假设9台机器组成共享资源池, 每个应用在执行过程中从资源池中申请需要的资源并执行, 此时整体资源利用率相对提高
问题2. 分布式系统通过联合调度进行任务的执行,由协调器(负责协调在集群中执行想要运行的代码)和Worker(具体的功能代码)组成
在分布式系统中, 协调器与具体业务功能无关且各系统的协调器功能类似, 是否可以将协调器进行抽象并统一负责协调所有集群的任务执行, 实现一个分布式的协调系统
Mesos是一个分布式的集群管理框架, 宗旨为尝试和提高集群的利用率和性能、提供通用的分布式系统框架.
Mesos框架本身只负责资源的分配, 而不负责资源的调度, 每个业务功能的调度器和mesos master API进行通信, mesos master根据剩余资源调度mesos slave执行相应的任务
好处:
- 可以在一批机器上部署执行多个分布式系统, 动态划分(解决静态资源划分问题)和共享资源, 并且不用为每个分布式实现一套协调功能
- 提供统一的分布式功能集(故障检测、分布式任务、任务启动、任务监控、结束任务、清理任务等)
架构
说明:
- mesos由framework、master、slave组成, fromework由调度器和执行器组成, 使用zookeeper来维护集群的高可用性和配置信息
- mesos提供资源的抽象提供双层调度系统, master主要负责从slave收集资源并根据资源分配算法以resource offer(list<slaveid, cpu, mem, port等>)的方式提供的框架的调度器, 调度器接收resource offer并决定如何使用, 可以选择接受或者拒绝资源, 当全责接收资源时则发送TaskInfo(<list<slaveid, cpu, mem, port等>)信息给master,master经过检查下发给slave并由slave调用TaskInfo中指定的执行器来执行具体的任务。 流程图如下图:
Mesos用来干什么
先看下Mesos架构图:
将Mesos生态组件和Linux操作系统对比:
可以用来构建分布式的操作"系统", 即数据中心操作系统(DCOS), mesosphere公司使用mesos构建了Mesosphere DCOS
版本
预言使用版本为: 0.24.0 (9月2日)
目前最新release版为: 0.24.1 (9月25日)
目前最新rc版为: 0.25.rc2 (10月6日)
每10天一个测试版, 每20天一个修正版本, 每40天一个子版本
开发语言&协议
开发语言: C++
协议: Apache License Version 2.0
Mesos扩展模块开发: C++ 若想使用Python,Java,GO等其他语言,需要使用C++实现代理
框架开发: Python, Java, Go等