Mesos Architecture

本文介绍了Mesos架构及其资源分配原理。Mesos通过主进程管理集群中的客户端进程,并利用框架来运行任务。主进程根据策略为每个框架提供资源,而框架选择如何使用这些资源。此外,还详细阐述了资源分配流程及如何实现数据本地化。

这里写图片描述

The above figure shows the main components of Mesos. Mesos consists of a master daemon that manages agent daemons running on each cluster node, and Mesos frameworks that run tasks on these agents.

上面的图形展示了Mesos的主要部件。Mesos由一个管理每个集群节点客户端进程的主进程以及在这些客户端运行任务的Mesos框架组成。

The master enables fine-grained sharing of resources (CPU, RAM, …) across frameworks by making them resource offers. Each resource offer contains a list of <agent ID, resource1: amount1, resource2: amount2, ...> (NOTE: as keyword ‘slave’ is deprecated in favor of ‘agent’, driver-based frameworks will still receive offers with slave ID, whereas frameworks using the v1 HTTP API receive offers with agent ID). The master decides how many resources to offer to each framework according to a given organizational policy, such as fair sharing or strict priority. To support a diverse set of policies, the master employs a modular architecture that makes it easy to add new allocation modules via a plugin mechanism.

master可以在框架之间进行细粒度的资源分配满足它们的资源需求。每个资源需求是由一个列表

A framework running on top of Mesos consists of two components: a scheduler that registers with the master to be offered resources, and an executor process that is launched on agent nodes to run the framework’s tasks (see the App/Framework development guide for more details about framework schedulers and executors). While the master determines how many resources are offered to each framework, the frameworks' schedulers select which of the offered resources to use. When a framework accepts offered resources, it passes to Mesos a description of the tasks it wants to run on them. In turn, Mesos launches the tasks on the corresponding agents.

一个运行在mesos上面的框架由两部门组成:一个用来向master注册并索取资源供应的调度,以及一个运行在代理节点运行框架任务(获取更多信息,请参考App/Framework开发指南)的执行进程。虽然master决定了资源怎么分配给每个框架,每个框架的调度会选择master提供的资源应该怎么来进行使用。当一个框架接受了提供的资源,框架会向mesos传递它想运行在这些资源上面运行任务的描述。反过来,mesos启动对应代理节点的任务。

Example of resource offer

The figure below shows an example of how a framework gets scheduled to run a task.

下面的图片展示了一个框架是如何被调度去运行一个任务。

这里写图片描述

Let’s walk through the events in the figure.

让我们穿越图片。

Agent 1 reports to the master that it has 4 CPUs and 4 GB of memory free. The master then invokes the allocation policy module, which tells it that framework 1 should be offered all available resources.

代理1向master报告,它有4个CPU和4GB的空闲内存。master这个时候调用分配策略模块,告诉它框架1可以被分配所有可用的资源。

The master sends a resource offer describing what is available on agent 1 to framework 1.
The framework’s scheduler replies to the master with information about two tasks to run on the agent, using <2 CPUs, 1 GB RAM> for the first task, and <1 CPUs, 2 GB RAM> for the second task.

master发送一个资源通知描述了啥可以在代理1上的框架1。框架调度回复master关于两个任务运行的代理信息,使用<2CPU,1GB RAM>用于第一个任务,使用<1CPU,2GB RAM>用于第二个任务。

Finally, the master sends the tasks to the agent, which allocates appropriate resources to the framework’s executor, which in turn launches the two tasks (depicted with dotted-line borders in the figure). Because 1 CPU and 1 GB of RAM are still unallocated, the allocation module may now offer them to framework 2.
In addition, this resource offer process repeats when tasks finish and new resources become free.

最后,master把任务发送给代理,代理分配合适的资源给框架的执行者,执行者接下来执行了两个任务(在图片中用虚线边界进行了描述)。由于1CPU和1GB的内存还是未分配状态,分配模块也许现在会提供给框架2。
另外,这个资源通知过程一直在重复,直到任务结束和新资源变成空闲。

While the thin interface provided by Mesos allows it to scale and allows the frameworks to evolve independently, one question remains: how can the constraints of a framework be satisfied without Mesos knowing about these constraints? For example, how can a framework achieve data locality without Mesos knowing which nodes store the data required by the framework? Mesos answers these questions by simply giving frameworks the ability to reject offers. A framework will reject the offers that do not satisfy its constraints and accept the ones that do. In particular, we have found that a simple policy called delay scheduling, in which frameworks wait for a limited time to acquire nodes storing the input data, yields nearly optimal data locality.

虽然mesos提供的细微的接口允许它进行扩展以及框架可以独立的扩展,有一个问题:如何在mesos没有知道这些限制的情况下,使得框架的限制得到满足?例如,一个框架需要有数据本地化需求,如何在mesos不知道哪些节点存储了这些数据的情况下,使得框架的需求得到满足?mesos的回答很简单,简单的赋予光甲有能力拒绝提供的资源。一个框架会拒绝没有满足限制,接受满足限制的提供。尤其是,我们找到了一个简单的策略叫做延迟调度,框架使用一定的限制时间等待节点装在输入的数据,达到最佳的数据本地化。

You can also read much more about the Mesos architecture in this technical paper.

你可以在科技白皮书阅读关于mesos架构更多的咨询。

计及源荷不确定性的综合能源生产单元运行调度与容量配置优化研究(Matlab代码实现)内容概要:本文围绕“计及源荷不确定性的综合能源生产单元运行调度与容量配置优化”展开研究,利用Matlab代码实现相关模型的构建与仿真。研究重点在于综合能源系统中多能耦合特性以及风、光等可再生能源出力和负荷需求的不确定性,通过鲁棒优化、场景生成(如Copula方法)、两阶段优化等手段,实现对能源生产单元的运行调度与容量配置的协同优化,旨在提高系统经济性、可靠性和可再生能源消纳能力。文中提及多种优化算法(如BFO、CPO、PSO等)在调度与预测中的应用,并强调了模型在实际能源系统规划与运行中的参考价值。; 适合人群:具备一定电力系统、能源系统或优化理论基础的研究生、科研人员及工程技术人员,熟悉Matlab编程和基本优化工具(如Yalmip)。; 使用场景及目标:①用于学习和复现综合能源系统中考虑不确定性的优化调度与容量配置方法;②为含高比例可再生能源的微电网、区域能源系统规划设计提供模型参考和技术支持;③开展学术研究,如撰写论文、课题申报时的技术方案借鉴。; 阅读建议:建议结合文中提到的Matlab代码和网盘资料,先理解基础模型(如功率平衡、设备模型),再逐步深入不确定性建模与优化求解过程,注意区分鲁棒优化、随机优化与分布鲁棒优化的适用场景,并尝试复现关键案例以加深理解。
内容概要:本文系统分析了DesignData(设计数据)的存储结构,围绕其形态多元化、版本关联性强、读写特性差异化等核心特性,提出了灵活性、版本化、高效性、一致性和可扩展性五大设计原则。文章深入剖析了三类主流存储方案:关系型数据库适用于结构化元信息存储,具备强一致性与高效查询能力;文档型数据库适配半结构化数据,支持动态字段扩展与嵌套结构;对象存储结合元数据索引则有效应对非结构化大文件的存储需求,具备高扩展性与低成本优势。同时,文章从版本管理、性能优化和数据安全三个关键维度提出设计要点,建议采用全量与增量结合的版本策略、索引与缓存优化性能、并通过权限控制、MD5校验和备份机制保障数据安全。最后提出按数据形态分层存储的核心结论,并针对不同规模团队给出实践建议。; 适合人群:从事工业设计、UI/UX设计、工程设计等领域数字化系统开发的技术人员,以及负责设计数据管理系统架构设计的中高级工程师和系统架构师。; 使用场景及目标:①为设计数据管理系统选型提供依据,合理选择或组合使用关系型数据库、文档型数据库与对象存储;②构建支持版本追溯、高性能访问、安全可控的DesignData存储体系;③解决多用户协作、大文件存储、历史版本管理等实际业务挑战。; 阅读建议:此资源以实际应用场景为导向,结合具体数据库类型和表结构设计进行讲解,建议读者结合自身业务数据特征,对比分析不同存储方案的适用边界,并在系统设计中综合考虑成本、性能与可维护性之间的平衡。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值