CN103530189B - 一种面向流式数据的自动伸缩及迁移的方法及装置 - Google Patents
一种面向流式数据的自动伸缩及迁移的方法及装置 Download PDFInfo
- Publication number
- CN103530189B CN103530189B CN201310455128.2A CN201310455128A CN103530189B CN 103530189 B CN103530189 B CN 103530189B CN 201310455128 A CN201310455128 A CN 201310455128A CN 103530189 B CN103530189 B CN 103530189B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- resource
- physical node
- resource utilization
- migrated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种面向流式数据的自动伸缩及迁移方法,包括以下步骤:调度管理器包括收集模块、调度模块和监控模块,所述调度模块根据待调度作业的信息生成包括多个处理单元的处理单元队列;调度模块将所有处理单元分别分配给对应的物理节点,执行器在处理单元所在的物理节点上创建一个linux容器;收集模块通过监控linux容器的资源利用率得到处理单元的资源利用率;监控模块调整处理单元的资源配额;监控模块将处理单元迁移到其它的资源利用率低的物理节点上。本发明根据实际负载动态调整资源,避免资源浪费,提高了资源利用率,并提出一种处理单元迁移方法,在物理节点负载明显不均衡时,迁移特定的处理节点,实现了面向流式数据的动态负载均衡。
Description
技术领域
本发明涉及涉及计算机并行计算领域,特别涉及一种面向流式数据的自动伸缩及迁移的方法及装置。
背景技术
近年来,随着实时搜索、广告推荐、社交网络、日志在线分析等应用的不断发展,一种新的数据形态——流式数据正在兴起。流式数据是指一组大量、快速、不间断的事件序列。在不同场景下,流式数据可以是实时查询、用户点击、在线日志、流媒体等多种数据形式。流式应用注重实时交互,过高延时的响应会严重影响其功能或用户体验。由于流式数据的重要性和独特性,一批流式数据处理系统应用而生,例如Yahoo!的S4系统。
事件是流式数据的基本组成单位,以键-值(key-value)形式出现。处理单元是处理事件的基本单位,有特定的事件类型和键,专门处理具有相应类型和键的事件。处理单元接收流式数据,对其中的事件进行处理,然后输出事件或者直接发布结果。
流式数据具有实时性强、数据量大、动态波动等特点。流式数据出现较大幅度的动态波动,会对系统造成两个层面的影响。其一,数据动态波动会直接改变处理单元的实际负载;其二,由于处理单元部署在物理节点上,使用其CPU、内存、网络带宽等物理资源,数据动态波动将间接改变物理节点的负载。如何根据负载变化自动调整处理单元的资源配额、实现动态负载均衡是流式数据处理的重要挑战。但是,现有流式数据处理系统没能解决好这些问题,主要表现在以下两个方面:
1、处理单元的资源配额不能适应不断变化的实际负载。在流式数据处理系统中,部署在同一物理节点的多个处理单元会共同使用机器上的物理资源。为了避免处理单元间出现资源竞争、影响性能的现象,现有系统对处理单元进行资源隔离,分配固定的资源配额。但是,流式数据经常随时间推移发生较大幅度的波动,导致处理单元实际负载的变化,最初分配给处理单元的资源配额不能适应动态变化的资源需求。
2、不支持处理单元迁移。在初次部署处理单元时,现有系统会根据相关策略将其调度到负载较低的物理节点上,实现静态负载均衡。但是流式数据经常动态波动,间接导致物理节点的负载发生变化。假如因为数据波动导致物理节点过载,影响相关处理单元的性能,则系统需要通过迁移处理单元来实现动态负载均衡。
发明内容
本发明所要解决的技术问题是提供一种能够适应不断变化的实际负载、支持处理单元转移的面向流式 数据的自动伸缩及迁移的方法及装置。
本发明解决上述技术问题的技术方案如下:一种面向流式数据的自动伸缩及迁移方法,包括以下步骤:
步骤1:调度管理器包括收集模块、调度模块和监控模块,所述调度模块定时从存储待调度作业的调度队列中实时获取待调度作业,并根据待调度作业的信息生成包括多个处理单元的处理单元队列;
步骤2:调度管理器中的调度模块将所有处理单元分别分配给对应的物理节点,执行器在启动处理单元时,先在该处理单元所在的物理节点上创建一个linux容器,然后在linux容器内部启动处理单元,所述调度管理器与每个执行器分别设置于不同的物理节点上;
步骤3:收集模块通过监控linux容器的资源利用率得到处理单元的资源利用率,收集模块将收集到的处理单元的资源利用率发送给监控模块;
步骤4:监控模块判断所述资源利用率是否大于预定的扩容阈值,或者小于预定的缩容阈值,根据判断结果调整处理单元的资源配额;
步骤5:监控模块判断所述资源利用率是否满足处理单元的迁移条件,如果满足,将处理单元迁移到其它的资源利用率低的物理节点上,休眠预定时间,转入步骤3,当所有处理节点处理完毕,结束。
本发明的有益效果是:本发明提出一种处理单元的资源配额自动伸缩方法,根据处理单元的资源利用率,感知处理单元的实际负载变化,适时提高或减少资源配额。该方法根据实际负载动态调整资源,避免资源浪费,提高了资源利用率。并提出一种处理单元迁移方法,在物理节点负载明显不均衡时,迁移特定的处理节点,实现了面向流式数据的动态负载均衡。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述资源利用率包括CPU的资源利用率、内存的资源利用率和网络带宽的资源利用率。
进一步,所述步骤4进一步包括:
步骤4.1:监控模块获取处理单元的资源利用率;
步骤4.2:如果资源利用率大于预定的扩容阈值,则增加该处理单元的资源配额;
步骤4.3:如果资源利用率小于预定的缩容阈值,则减少该处理单元的资源配额。
进一步,所述步骤5中监控模块判断所述资源利用率是否满足处理单元的迁移条件进一步包括:
步骤5.1-1:从CPU、内存和网络带宽中依次选择一种资源,作为判定资源;
步骤5.1-2:根据所述判定资源的资源利用率,对物理节点从大到小排序,得到排序列表;
步骤5.1-3:在排序列表中选出第一个物理节点和最后一个物理节点;
步骤5.1-4:如果第一个物理节点的资源利用率大于80%且最后一个物理节点的资源利用率小于50%,则认为满足迁移条件,保存判定资源和两个物理节点的信息,方法结束;
步骤5.1-5:如果还有CPU、内存和网络带宽作为备选资源待选,则转至步骤5.1-1,否则认为不满足迁移条件。
进一步,所述步骤5中将处理单元迁移到其它的资源利用率低的物理节点上进一步包括:
步骤5.2-1,保存所述步骤5.1-4中的第一个物理节点和最后一个物理节点,分别记为源物理节点和目的物理节点;
步骤5.2-2,根据所述的判定资源的资源利用率,对源物理节点上的处理单元从大到小排序;
步骤5.2-3,在所述排序列表中选择第一个处理单元,记为待迁移处理单元;
步骤5.2-4,通知与待迁移处理单元通信的处理单元,停止向其发送事件,将事件在与待迁移处理单元通信的处理单元上缓存,并保存待迁移处理单元的中间结果;
步骤5.2-5,在源物理节点上关闭待迁移处理单元,然后在目的物理节点上启动待迁移处理单元,恢复该处理单元的中间状态;
步骤5.2-6,将该处理单元新的通信地址告知之前与待迁移处理单元通信的处理单元,与待迁移处理单元通信的处理单元重新向该处理单元发送事件。
进一步,一种面向流式数据的自动伸缩及迁移装置,包括调度管理器,收集模块,调度模块,监控模块和执行器;
所述调度管理器,设置于高配置的物理节点上,包括收集模块、调度模块和监控模块;
所述调度模块,用于定时从存储待调度作业的调度队列中实时获取待调度作业,并根据待调度作业的信息生成包括多个处理单元的处理单元队列,将所有处理单元分别分配给对应的物理节点;
所述执行器,设置于与调度管理器不同的物理节点上,用于在启动处理单元时,先在该处理单元所在的物理节点上创建一个linux容器,然后在 linux容器内部启动处理单元;
所述收集模块,用于通过监控linux容器的资源利用率得到处理单元的资源利用率,将收集到的处理单元的资源利用率发送给监控模块,执行监控模块;
所述监控模块,用于判断所述资源利用率是否大于预定的扩容阈值,或者小于预定的缩容阈值,根据判断结果调整处理单元的资源配额,判断所述资源利用率是否满足处理单元的迁移条件,如果满足,将处理单元迁移到其它的资源利用率低的物理节点上,休眠预定时间,重新执行收集模块,当所有处理节点处理完毕,结束。
进一步,所述资源利用率包括CPU的资源利用率、内存的资源利用率和网络带宽的资源利用率。
进一步,所述监控模块进一步用于获取处理单元的资源利用率,如果资源利用率大于预定的扩容阈值,则增加该处理单元的资源配额;如果资源利用率小于预定的缩容阈值,则减少该处理单元的资源配额。
进一步,所述监控模块进一步用于,从CPU、内存和网络带宽中依次选择一种资源作为判定资源,根据所述判定资源的资源利用率,对物理节点从大到小排序,得到排序列表,在排序列表中选出第一个物理节点和最后一个物理节点,如果第一个物理节点的资源利用率大于80%且最后一个物理节点的资源利用率小于50%,则认为满足迁移条件,保存判定资源和两个物理节点的信息,方法结束,如果还有CPU、内存和网络带宽作为备选资源待选,则重新从CPU、内存和网络带宽中依次选择一种资源作为判定资源,否则认为不满足迁移条件
进一步,所述监控模块进一步用于,保存所述第一个物理节点和最后一个物理节点,分别记为源物理节点和目的物理节点,根据所述的判定资源的资源利用率,对源物理节点上的处理单元从大到小排序,在所述排序列表中选择第一个处理单元,记为待迁移处理单元,通知与待迁移处理单元通信的处理单元,停止向其发送事件,将事件在与待迁移处理单元通信的处理单元上缓存,并保存待迁移处理单元的中间结果,在源物理节点上关闭待迁移处理单元,然后在目的物理节点上启动待迁移处理单元,恢复该处理单元的中间状态,将该处理单元新的通信地址告知之前与待迁移处理单元通信的处理单元,与待迁移处理单元通信的处理单元重新向该处理单元发送事件。
附图说明
图1为本发明方法步骤流程图;
图2为本发明装置结构图;
图3为本发明资源配额自动伸缩方法的流程图;
图4为本发明处理单元迁移条件判断流程图;
图5为本发明实施例的处理单元迁移流程图。
附图中,各标号所代表的部件列表如下:
1、调度管理器,2、收集模块,3、调度模块,4、监控模块,5、执行器。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,为本发明方法步骤流程图;图2为本发明装置结构图;图 3为本发明资源配额自动伸缩方法的流程图;图4为本发明处理单元迁移条件判断流程图;图5为本发明实施例的处理单元迁移流程图。
实施例1
一种面向流式数据的自动伸缩及迁移方法,包括以下步骤:
步骤1:调度管理器包括收集模块、调度模块和监控模块,所述调度模块定时从存储待调度作业的调度队列中实时获取待调度作业,并根据待调度作业的信息生成包括多个处理单元的处理单元队列;
步骤2:调度管理器中的调度模块将所有处理单元分别分配给对应的物理节点,执行器在启动处理单元时,先在该处理单元所在的物理节点上创建一个linux容器,然后在linux容器内部启动处理单元,所述调度管理器与每个执行器分别设置于不同的物理节点上;
步骤3:收集模块通过监控linux容器的资源利用率得到处理单元的资源利用率,收集模块将收集到的处理单元的资源利用率发送给监控模块;
步骤4:监控模块判断所述资源利用率是否大于预定的扩容阈值,或者小于预定的缩容阈值,根据判断结果调整处理单元的资源配额;
步骤5:监控模块判断所述资源利用率是否满足处理单元的迁移条件,如果满足,将处理单元迁移到其它的资源利用率低的物理节点上,休眠预定时间,转入步骤3,当所有处理节点处理完毕,结束。
所述资源利用率包括CPU的资源利用率、内存的资源利用率和网络带宽的资源利用率。
所述步骤4进一步包括:
步骤4.1:监控模块获取处理单元的资源利用率;
步骤4.2:如果资源利用率大于预定的扩容阈值,则增加该处理单元的资源配额;
步骤4.3:如果资源利用率小于预定的缩容阈值,则减少该处理单元的资源配额。
所述步骤5中监控模块判断所述资源利用率是否满足处理单元的迁移条件进一步包括:
步骤5.1-1:从CPU、内存和网络带宽中依次选择一种资源,作为判定资源;
步骤5.1-2:根据所述判定资源的资源利用率,对物理节点从大到小排序,得到排序列表;
步骤5.1-3:在排序列表中选出第一个物理节点和最后一个物理节点;
步骤5.1-4:如果第一个物理节点的资源利用率大于80%且最后一个物理节点的资源利用率小于50%,则认为满足迁移条件,保存判定资源和两个物理节点的信息,方法结束;
步骤5.1-5:如果还有CPU、内存和网络带宽作为备选资源待选,则转至步骤5.1-1,否则认为不满足迁移条件。
所述步骤5中将处理单元迁移到其它的资源利用率低的物理节点上进一步包括:
步骤5.2-1,保存所述步骤5.1-4中的第一个物理节点和最后一个物理节点,分别记为源物理节点和目的物理节点;
步骤5.2-2,根据所述的判定资源的资源利用率,对源物理节点上的处理单元从大到小排序;
步骤5.2-3,在所述排序列表中选择第一个处理单元,记为待迁移处理单元;
步骤5.2-4,通知与待迁移处理单元通信的处理单元,停止向其发送事件,将事件在与待迁移处理单元通信的处理单元上缓存,并保存待迁移处理单元的中间结果;
步骤5.2-5,在源物理节点上关闭待迁移处理单元,然后在目的物理节点上启动待迁移处理单元,恢复该处理单元的中间状态;
步骤5.2-6,将该处理单元新的通信地址告知之前与待迁移处理单元通信的处理单元,与待迁移处理单元通信的处理单元重新向该处理单元发送事件。
一种面向流式数据的自动伸缩及迁移装置,包括调度管理器1,收集模块2,调度模块3,监控模块4和执行器5;
所述调度管理器1,设置于高配置的物理节点上,包括收集模块2、调度模块3和监控模块4;
所述调度模块3,用于定时从存储待调度作业的调度队列中实时获取待调度作业,并根据待调度作业的信息生成包括多个处理单元的处理单元队列,将所有处理单元分别分配给对应的物理节点;
所述执行器5,设置于与调度管理器1不同的物理节点上,用于在启动处理单元时,先在该处理单元所在的物理节点上创建一个linux容器,然后在linux容器内部启动处理单元;
所述收集模块2,用于通过监控linux容器的资源利用率得到处理单元的资源利用率,将收集到的处理单元的资源利用率发送给监控模块4,执行监控模块4;
所述监控模块4,用于判断所述资源利用率是否大于预定的扩容阈值,或者小于预定的缩容阈值,根据判断结果调整处理单元的资源配额,判断所述资源利用率是否满足处理单元的迁移条件,如果满足,将处理单元迁移到其它的资源利用率低的物理节点上,休眠预定时间,重新执行收集模块2,当所有处理节点处理完毕,结束。
所述资源利用率包括CPU的资源利用率、内存的资源利用率和网络带宽的资源利用率。
所述监控模块4进一步用于获取处理单元的资源利用率,如果资源利用率大于预定的扩容阈值,则增加该处理单元的资源配额;如果资源利用率小于预定的缩容阈值,则减少该处理单元的资源配额。
所述监控模块4进一步用于,从CPU、内存和网络带宽中依次选择一种资源作为判定资源,根据所述判定资源的资源利用率,对物理节点从大到小排序,得到排序列表,在排序列表中选出第一个物理节点和最后一个物理节点,如果第一个物理节点的资源利用率大于80%且最后一个物理节点的资源利用率小于50%,则认为满足迁移条件,保存判定资源和两个物理节点的信息,方法结束,如果还有CPU、内存和网络带宽作为备选资源待选,则重新从CPU、内存和网络带宽中依次选择一种资源作为判定资源,否则认为不满足迁移条件。
所述监控模块4进一步用于,保存所述第一个物理节点和最后一个物理节点,分别记为源物理节点和目的物理节点,根据所述的判定资源的资源利用率,对源物理节点上的处理单元从大到小排序,在所述排序列表中选择第一个处理单元,记为待迁移处理单元,通知与待迁移处理单元通信的处理单元,停止向其发送事件,将事件在与待迁移处理单元通信的处理单元上缓存,并保存待迁移处理单元的中间结果,在源物理节点上关闭待迁移处理单元,然后在目的物理节点上启动待迁移处理单元,恢复该处理单元的中间状态,将该处理单元新的通信地址告知之前与待迁移处理单元通信的处理单元,与待迁移处理单元通信的处理单元重新向该处理单元发送事件。
该系统包括多个执行器和一个资源管理器。其中执行器是运行于物理节点上的守护进程,除资源管理器所在的物理节点以外,系统管理的每个物理节点上都运行着一个执行器。
在具体实施中,执行器可以在该物理节点上启动和关闭处理单元。启动处理单元时,执行器将先在物理节点上创建一个指定资源容量的Linux容器,然后在Linux容器内部启动处理单元需要执行的任务。处理单元与Linux容器一一对应,每个处理单元都放置在一个Linux容器之中。Linux容器可以为其中的进程分配指定资源,由于流式数据处理模型通常伴以高流量通信,所以本系统分配的资源类型比较全面,包括CPU、内存、网络带宽等。这样,每个处理单元都在Linux容器内部,使用系统分配的指定资源,相互独立运行,实现了资源隔离,避免了资源竞争,提升了处理单元的整体性能和运行稳定性。
同时,执行器还用于监控处理单元的运行状态和资源使用状况,由于每个Linux容器内部只有一个处理单元,因此监控处理单元可以转化为监控 Linux容器的资源使用状况。执行器定时向资源管理器的收集模块发送心跳。每次需要发送心跳时,执行器会汇总其管理的处理单元的资源使用状况和物理节点总体的资源使用状况,将其组织为心跳,发送给收集模块。心跳间隔可以通过配置文件进行设置和管理。
在流式数据处理系统中,处理单元间会传递事件序列,因此本发明需要支持处理单元相互间进行通信,系统为此提供了名字空间机制。系统为每个处理单元分配一个全局唯一的标识(ID),处理单元在初始化时只需记录与之通信的处理单元ID以及相应的业务逻辑关系。系统的名字空间会维护处理单元标识(ID)到其通信地址(IP地址与端口)的映射关系。处理单元首次与其他处理单元通信时,需要先访问名字空间,获取其通信地址,再与之通信。当处理单元动态迁移时,会更新名字空间中相应处理单元表示到其通信地址的映射关系。
图2为本发明装置结构示意图。资源管理器是系统的核心管理者,包括收集模块、调度模块和监控模块三个部分。为避免程序内部进程过多,影响程序性能和稳定性,系统以进程的形式实现三个模块,模块之前通过远程过程调用(Remote Procedure Call)进行通信。三个模块理论上可以部署在不同物理节点,但为减少通信开销,实际运行中应部署在同一物理节点上。
收集模块维护全局资源信息,包括每个执行器所在物理节点的IP地址、通信端口以及每种资源的总量、可用量等,调度模块以上述资源信息为基础进行调度。在调度模块启动、关闭相应的处理单元之后,收集模块根据该处理模块的资源需求和部署节点,会更新全局资源信息。此外,收集模块接收各个执行器定时发送的心跳,其中包括执行器所在物理节点的资源使用状况及处理单元的资源使用状况,主要包括物理节点和处理单元的状态和各种资源的资源利用率,收集模块将此信息提供给监控模块,用于判断系统是否需要进行动态迁移。
调度模块定时从调度队列中获取待调度任务,根据任务信息生成处理单元,在获取收集模块全局资源信息的基础上,使用处理单元调度方法,调度、启动处理单元;此外根据系统的运行需求或系统管理员的指令,调度模块可以控制、动态迁移处理单元。系统管理员或者外部程序通过客户端与整个系统进行交互,具体方式是通过客户端与调度模块交互,交互内容包括提交任务或指定指令。
监控模块用于监控各个处理单元、物理节点的资源使用状况,会定时判断是否满足资源配额自动伸缩或处理单元迁移的条件,如果满足则发送对应指令。
本发明实施例中具有两类配置文件,分别供资源管理器和执行器使用。其中资源管理器的配置文件包括调度模块、收集模块、监控模块的通信地址、资源分配策略选项、Linux容器配置信息等,三个模块启动时需要获取配置文件内容进行初始化。执行器配置文件包括执行器通信端口、资源管理中收集模块的通信地址、本物理节点绑定网卡等信息,执行器在启动时也需要通过获取配置文件内容进行初始化,并向收集模块发送心跳,进行注册。
图3为本发明实施例的资源配额自动伸缩方法的流程图,用于在感知处理单元的实际负载的基础上,判断原有资源配额与实时负载是否匹配,如果不匹配,则自动为该处理单元添加或减少资源配额。该方法步骤如下:
步骤4.1,获取处理单元的资源利用率;
步骤4.2,如果资源利用率是否大于“扩容阈值”,如果大于,则增加该处理单元的资源配额;
步骤4.3,如果资源利用率是否小于“缩容阈值”,如果小于则减小该处理单元的资源配额。
上述资源配额自动伸缩方法用于判断单个处理单元是否需要伸缩,在本发明实施例中,系统会对所有处理单元循环使用该方法进行处理,判断所有处理单元是否需要伸缩。系统在对所有处理单元进行处理后,会睡眠一段时间,然后再一次对所有单元进行处理。这段睡眠时间不宜过长,也不宜过短。睡眠时间过长,则对于在睡眠时间内发生的负载变化,系统无法及时处理;睡眠时间过短,将会导致在单位时间内系统处理次数过大,给系统增加了负担。经过一系列测试表明,睡眠时间定为5分钟是一个相对较优的选择,可以在及时处理负载变化和不增加系统负担中间获得一个较好的折中点。
在本发明实施例中,系统通过获取Linux容器的资源利用率来判断处理单元的资源利用率。由于Linux容器内部只存在处理单元,所以可以认定 Linux容器的资源利用率与处理单元的资源利用率基本相当。当Linux容器内部的资源利用率过高时,可以认定处理单元负载过高;类似地,当Linux 容器内部的资源利用率过低时,可以认定处理单元负载过低,可以适当减少其资源配额。
资源配额自动伸缩方法直接适用于内存、网络带宽两种资源的自动伸缩。在本发明实施例中,处理单元属于多线程程序,可以在多个CPU上并行,因此该方法也适用于CPU资源的自动伸缩。如果在其他系统的实际应用中,处理单元不是多线程程序,不能在多个CPU上并行,则此方法不适用于CPU 的自动伸缩,但仍可适用于内存、网络带宽的自动伸缩。
资源配额自动伸缩方法添加或减少资源配额时,不需要暂停或停止处理单元。因此本方法在调整资源配置时并不影响处理单元的正常运行。
资源配额自动伸缩方法的“扩容阈值”和“缩容阈值”可以进行配置,增加、减少资源配额的幅度也可以进行配置,但需要与“扩容阈值”、“缩容阈值”的配置相适应。在本发明实施例中,“扩容阈值”和“缩容阈值”分别设置为90%和40%,增加资源配额的幅度设置为在原资源配额的基础上增加一倍,减少资源配额的幅度设置为原资源配额减少一半。举例来说,一个处理单元的初始内存资源需求是1G内存,运行一段时间后,系统发现该处理单元所在Linux容器的内存利用率为94%,超过“扩容阈值”90%,认为其负载过高,决定为其扩容,然后将该Linux容器的内存资源配额增加到2G。
图4为本发明实施例的处理单元迁移条件判断流程图,该方法步骤如下:
步骤5.1-1:从CPU、内存和网络带宽中依次选择一种资源,作为判定资源;
步骤5.1-2:根据所述判定资源的资源利用率,对物理节点从大到小排序,得到排序列表;
步骤5.1-3:在排序列表中选出第一个物理节点和最后一个物理节点;
步骤5.1-4:如果第一个物理节点的资源利用率大于80%且最后一个物理节点的资源利用率小于50%,则认为满足迁移条件,保存判定资源和两个物理节点的信息,方法结束;
步骤5.1-5:如果还有CPU、内存和网络带宽作为备选资源待选,则转至步骤5.1-1,否则认为不满足迁移条件。
在本发明实施例中,所述“备选资源”包括CPU、内存、网络带宽 三种资源,图4指示的流程将从CPU、内存、网络带宽资源三个方面,对物理单元的运行状况进行一次全面的判定。步骤5.3-3选择第一个物理节点A和最后一个物理节点B,是为了判断物理节点中是否同时出现负载过高和负载过低两种情况。
处理单元迁移是有代价的迁移,在迁移过程中处理单元会停止运行一段时间,因此系统对迁移条件作了较为严格的限制,只有当负载最高的物理节点的利用率大于80%,且负载最低的物理节点的利用率小于50%时,系统才会进行处理单元迁移。假设物理节点只是存在负载不均衡,但是各个物理节点负载都不高,也就是说此时各个物理节点上仍然有足够的资源供上面的处理单元使用。权衡利弊,此时没有必要进行处理单元迁移。假设所有物理节点负载均较高,例如大于80%,虽然此时负载偏高,但各个物理节点情况类似,不存在负载明显不均的情况,此时也没有必要进行处理单元迁移。只有当物理节点负载明显不均,且部分负载偏高、部分负载偏低时,才有必要进行处理单元迁移。因为处理单元迁移到一个负载偏低的物理节点上,可以获得充足的资源和良好的运行环境,此时的迁移才是有实际意义的。
图5为本发明实施例的处理单元迁移流程图,该方法步骤如下:
步骤5.2-1,保存步骤505中记录的A和B,分别即为源物理节点A和目的物理节点B;
步骤5.2-2,根据判定资源的利用率,对物理节点A上的处理单元从大到小排序;
步骤5.2-3,在排序列表中选择第一个处理单元,记为待迁移处理单元 P;
步骤5.2-4,通知与P通信的所有处理单元S,停止向P发送事件,并保存P的中间结果;
步骤5.2-5,在物理节点A上关闭处理单元P,然后在物理节点B上启动处理单元P,恢复P的中间状态;
步骤5.2-6,将P的信通信地址告知S,这些处理单元重新向P发送事件。
在本发明实施例中,将物理节点A和B分别记为源物理节点A和目的物理节点B,是准备将物理节点A上某一处理单元迁移到物理节点B上,对于待迁移处理单元,物理节点A是源地址,物理节点B是目的地。步骤5.2-4 中提到的所有处理单元S实际上是一个处理单元集合,其中可能是一个处理单元,也可能是多个处理单元。资源管理器中维护着每个处理单元的信息,包括与之通信的其他处理单元的标识(ID),因此资源管理器可以得到与指定处理单元P通信的处理单元集合S。S停止向P发送事件后,P仍然需要等待一段时间,保证S之前发送的事件都传输到P,并进行处理。在此之后,P 将中间结果保存到内存数据库中。在步骤5.2-6中,处理单元重新启动后,资源管理器会将P的通信地址告知处理单元集合S,这些处理单元会根据新的通信地址,重新向P发送事件。在S停止向P发送事件的这段时间内,S 将原本需要发给P的时间缓存在本地,等待P重启后,再将其发送给P。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种面向流式数据的自动伸缩及迁移方法,其特征在于,包括以下步骤:
步骤1:调度管理器包括收集模块、调度模块和监控模块,所述调度模块定时从存储待调度作业的调度队列中实时获取待调度作业,并根据待调度作业的信息生成包括多个处理单元的处理单元队列;
步骤2:调度管理器中的调度模块将所有处理单元分别分配给对应的物理节点,执行器在启动处理单元时,先在该处理单元所在的物理节点上创建一个linux容器,然后在linux容器内部启动处理单元,所述调度管理器与每个执行器分别设置于不同的物理节点上;
步骤3:收集模块通过监控linux容器的资源利用率得到处理单元的资源利用率,收集模块将收集到的处理单元的资源利用率发送给监控模块;
步骤4:监控模块判断所述资源利用率是否大于预定的扩容阈值,或者小于预定的缩容阈值,根据判断结果调整处理单元的资源配额;
步骤5:监控模块判断所述资源利用率是否满足处理单元的迁移条件,如果满足,将处理单元迁移到其它的资源利用率低的物理节点上,休眠预定时间,转入步骤3,当所有处理节点处理完毕,结束;
调度管理器在对所有处理单元进行处理后,在睡眠一段时间后,再一次对所有处理单元进行处理;
所述资源利用率包括CPU的资源利用率、内存的资源利用率和网络带宽的资源利用率;
所述步骤5中监控模块判断所述资源利用率是否满足处理单元的迁移条件进一步包括:
步骤5.1-1:从CPU、内存和网络带宽中依次选择一种资源,作为判定资源;
步骤5.1-2:根据所述判定资源的资源利用率,对物理节点从大到小排序,得到排序列表;
步骤5.1-3:在排序列表中选出第一个物理节点和最后一个物理节点;
步骤5.1-4:如果第一个物理节点的资源利用率大于80%且最后一个物理节点的资源利用率小于50%,则认为满足迁移条件,保存判定资源和两个物理节点的信息,方法结束;
步骤5.1-5:如果还有CPU、内存和网络带宽作为备选资源待选,则转至步骤5.1-1,否则认为不满足迁移条件。
2.根据权利要求1所述的面向流式数据的自动伸缩及迁移方法,其特征在于,所述步骤4进一步包括:
步骤4.1:监控模块获取处理单元的资源利用率;
步骤4.2:如果资源利用率大于预定的扩容阈值,则增加该处理单元的资源配额;
步骤4.3:如果资源利用率小于预定的缩容阈值,则减少该处理单元的资源配额。
3.根据权利要求2所述的面向流式数据的自动伸缩及迁移方法,其特征在于,所述步骤5中将处理单元迁移到其它的资源利用率低的物理节点上进一步包括:
步骤5.2-1,保存所述步骤5.1-4中的第一个物理节点和最后一个物理节点,分别记为源物理节点和目的物理节点;
步骤5.2-2,根据所述的判定资源的资源利用率,对源物理节点上的处理单元从大到小排序;
步骤5.2-3,在所述排序列表中选择第一个处理单元,记为待迁移处理单元;
步骤5.2-4,通知与待迁移处理单元通信的处理单元,停止向其发送事件,将事件在与待迁移处理单元通信的处理单元上缓存,并保存待迁移处理单元的中间结果;
步骤5.2-5,在源物理节点上关闭待迁移处理单元,然后在目的物理节点上启动待迁移处理单元,恢复该处理单元的中间状态;
步骤5.2-6,将该处理单元新的通信地址告知之前与待迁移处理单元通信的处理单元,与待迁移处理单元通信的处理单元重新向该处理单元发送事件。
4.一种面向流式数据的自动伸缩及迁移装置,其特征在于:包括调度管理器(1),收集模块(2),调度模块(3),监控模块(4)和执行器(5);
所述调度管理器(1),设置于高配置的物理节点上,包括收集模块(2)、调度模块(3)和监控模块(4);
所述调度模块(3),用于定时从存储待调度作业的调度队列中实时获取待调度作业,并根据待调度作业的信息生成包括多个处理单元的处理单元队列,将所有处理单元分别分配给对应的物理节点;
所述执行器(5),设置于与调度管理器(1)不同的物理节点上,用于在启动处理单元时,先在该处理单元所在的物理节点上创建一个linux容器,然后在linux容器内部启动处理单元;
所述收集模块(2),用于通过监控linux容器的资源利用率得到处理单元的资源利用率,将收集到的处理单元的资源利用率发送给监控模块(4),执行监控模块(4);
所述监控模块(4),用于判断所述资源利用率是否大于预定的扩容阈值,或者小于预定的缩容阈值,根据判断结果调整处理单元的资源配额,判断所述资源利用率是否满足处理单元的迁移条件,如果满足,将处理单元迁移到其它的资源利用率低的物理节点上,休眠预定时间,重新执行收集模块(2),当所有处理节点处理完毕,结束;
调度管理器(1)在对所有处理单元进行处理后,在睡眠一段时间后,再一次对所有处理单元进行处理;
所述资源利用率包括CPU的资源利用率、内存的资源利用率和网络带宽的资源利用率;
所述监控模块(4)进一步用于,从CPU、内存和网络带宽中依次选择一种资源作为判定资源,根据所述判定资源的资源利用率,对物理节点从大到小排序,得到排序列表,在排序列表中选出第一个物理节点和最后一个物理节点,如果第一个物理节点的资源利用率大于80%且最后一个物理节点的资源利用率小于50%,则认为满足迁移条件,保存判定资源和两个物理节点的信息,方法结束,如果还有CPU、内存和网络带宽作为备选资源待选,则重新从CPU、内存和网络带宽中依次选择一种资源作为判定资源,否则认为不满足迁移条件。
5.根据权利要求4所述的面向流式数据的自动伸缩及迁移装置,其特征在于,所述监控模块(4)进一步用于获取处理单元的资源利用率,如果资源利用率大于预定的扩容阈值,则增加该处理单元的资源配额;如果资源利用率小于预定的缩容阈值,则减少该处理单元的资源配额。
6.根据权利要求5所述的面向流式数据的自动伸缩及迁移装置,其特征在于,所述监控模块(4)进一步用于,保存所述第一个物理节点和最后一个物理节点,分别记为源物理节点和目的物理节点,根据所述的判定资源的资源利用率,对源物理节点上的处理单元从大到小排序,在所述排序列表中选择第一个处理单元,记为待迁移处理单元,通知与待迁移处理单元通信的处理单元,停止向其发送事件,将事件在与待迁移处理单元通信的处理单元上缓存,并保存待迁移处理单元的中间结果,在源物理节点上关闭待迁移处理单元,然后在目的物理节点上启动待迁移处理单元,恢复该处理单元的中间状态,将该处理单元新的通信地址告知之前与待迁移处理单元通信的处理单元,与待迁移处理单元通信的处理单元重新向该处理单元发送事件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310455128.2A CN103530189B (zh) | 2013-09-29 | 2013-09-29 | 一种面向流式数据的自动伸缩及迁移的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310455128.2A CN103530189B (zh) | 2013-09-29 | 2013-09-29 | 一种面向流式数据的自动伸缩及迁移的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103530189A CN103530189A (zh) | 2014-01-22 |
CN103530189B true CN103530189B (zh) | 2018-01-19 |
Family
ID=49932226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310455128.2A Active CN103530189B (zh) | 2013-09-29 | 2013-09-29 | 一种面向流式数据的自动伸缩及迁移的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103530189B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866381B (zh) * | 2014-02-20 | 2018-10-12 | 联想(北京)有限公司 | 一种信息处理方法及第一电子设备 |
CN104978232A (zh) * | 2014-04-09 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 用于实时流式计算的计算资源扩容、释放方法及其装置 |
CN105302641B (zh) * | 2014-06-04 | 2019-03-22 | 杭州海康威视数字技术股份有限公司 | 虚拟化集群中进行节点调度的方法及装置 |
CN106161512A (zh) * | 2015-03-31 | 2016-11-23 | 西门子公司 | 一种用于云计算的方法和装置 |
CN105357256B (zh) * | 2015-09-28 | 2018-10-30 | 深信服网络科技(深圳)有限公司 | 管理移动设备的方法及服务器 |
CN105515864B (zh) * | 2015-12-11 | 2019-05-21 | 深圳市中润四方信息技术有限公司 | 容器资源自适应调整方法及系统 |
CN105930203B (zh) * | 2015-12-29 | 2019-08-13 | 中国银联股份有限公司 | 一种控制消息分发的方法及装置 |
CN105681217B (zh) * | 2016-04-27 | 2019-02-01 | 深圳市中润四方信息技术有限公司 | 用于容器集群的动态负载均衡方法及系统 |
US20180013636A1 (en) * | 2016-07-07 | 2018-01-11 | Cisco Technology, Inc. | System and method for scaling application containers in cloud environments |
CN107783721B (zh) * | 2016-08-25 | 2020-09-08 | 华为技术有限公司 | 一种数据的处理方法和物理机 |
CN107783834B (zh) * | 2016-08-30 | 2021-05-07 | 伊姆西公司 | 用于处理数据的方法和系统 |
CN106506254B (zh) * | 2016-09-20 | 2019-04-16 | 北京理工大学 | 一种大规模流式数据处理系统的瓶颈节点检测方法 |
CN107977252A (zh) * | 2016-10-21 | 2018-05-01 | 中兴通讯股份有限公司 | 一种云平台业务的缩容方法、装置及云平台 |
CN108737143A (zh) * | 2017-04-21 | 2018-11-02 | 中兴通讯股份有限公司 | 一种短消息系统及其控制方法 |
CN107395735B (zh) * | 2017-08-03 | 2020-06-09 | 成都精灵云科技有限公司 | 一种容器集群的延时缩容调度方法及系统 |
CN109726004B (zh) * | 2017-10-27 | 2021-12-03 | 中移(苏州)软件技术有限公司 | 一种数据处理方法及装置 |
CN109726007B (zh) * | 2017-10-31 | 2023-05-26 | 中兴通讯股份有限公司 | 一种容器编排配额管理方法和装置、及容器编排系统 |
CN109032788B (zh) * | 2018-06-29 | 2019-09-20 | 北京百度网讯科技有限公司 | 预留资源池动态调度方法、装置、计算机设备及存储介质 |
CN108984770A (zh) * | 2018-07-23 | 2018-12-11 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
CN109144727A (zh) * | 2018-08-21 | 2019-01-04 | 郑州云海信息技术有限公司 | 云数据系统中资源的管理方法和装置 |
CN109634915A (zh) * | 2018-11-28 | 2019-04-16 | 深圳市网心科技有限公司 | 文件部署方法、云服务器、系统及存储介质 |
CN110138838B (zh) * | 2019-04-16 | 2020-07-31 | 中国科学院计算技术研究所 | 一种计算资源分配方法及装置 |
CN110457131B (zh) * | 2019-07-31 | 2021-08-20 | 华中科技大学 | 基于Docker容器的电力系统超算平台任务调度方法 |
CN115686827A (zh) * | 2022-09-30 | 2023-02-03 | 上海慧程工程技术服务有限公司 | 基于容器的工业物联网边缘计算资源分配方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005100381A (ja) * | 2003-08-29 | 2005-04-14 | Toshiba Corp | 計算機システム、サービス負荷分散方法及びプログラム |
CN101504620A (zh) * | 2009-03-03 | 2009-08-12 | 华为技术有限公司 | 一种虚拟化集群系统负载平衡方法、装置及系统 |
CN102096461A (zh) * | 2011-01-13 | 2011-06-15 | 浙江大学 | 基于虚拟机迁移和负载感知整合的云数据中心节能方法 |
CN102232282A (zh) * | 2010-10-29 | 2011-11-02 | 华为技术有限公司 | 一种实现数据中心资源负载均衡的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102866918B (zh) * | 2012-07-26 | 2016-02-24 | 中国科学院信息工程研究所 | 面向分布式编程框架的资源管理系统 |
-
2013
- 2013-09-29 CN CN201310455128.2A patent/CN103530189B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005100381A (ja) * | 2003-08-29 | 2005-04-14 | Toshiba Corp | 計算機システム、サービス負荷分散方法及びプログラム |
CN101504620A (zh) * | 2009-03-03 | 2009-08-12 | 华为技术有限公司 | 一种虚拟化集群系统负载平衡方法、装置及系统 |
CN102232282A (zh) * | 2010-10-29 | 2011-11-02 | 华为技术有限公司 | 一种实现数据中心资源负载均衡的方法及装置 |
CN102096461A (zh) * | 2011-01-13 | 2011-06-15 | 浙江大学 | 基于虚拟机迁移和负载感知整合的云数据中心节能方法 |
Non-Patent Citations (1)
Title |
---|
"云计算环境下面向MPI应用的服务部署系统";王飞;《中国优秀硕士论文全文数据库信息科技辑》;20130715(第07期);第I137-10页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103530189A (zh) | 2014-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103530189B (zh) | 一种面向流式数据的自动伸缩及迁移的方法及装置 | |
CN102170396B (zh) | 一种基于区分服务的云存储系统QoS控制方法 | |
CN104915407B (zh) | 一种基于Hadoop多作业环境下的资源调度方法 | |
CN103491024B (zh) | 一种面向流式数据的作业调度方法及装置 | |
CN108182105B (zh) | 基于Docker容器技术的局部动态迁移方法及控制系统 | |
CN104503832B (zh) | 一种公平和效率均衡的虚拟机调度系统及方法 | |
CN103927225B (zh) | 一种多核心架构的互联网信息处理优化方法 | |
CN106534318B (zh) | 一种基于流量亲和性的OpenStack云平台资源动态调度系统和方法 | |
CN109117265A (zh) | 在集群中调度作业的方法、装置、设备及存储介质 | |
CN107580023A (zh) | 一种动态调整任务分配的流处理作业调度方法及系统 | |
CN106790726A (zh) | 一种基于Docker云平台的优先级队列动态反馈负载均衡资源调度方法 | |
CN103152393A (zh) | 一种云计算的计费方法和计费系统 | |
CN103366022B (zh) | 信息处理系统及其处理方法 | |
CN103916396A (zh) | 一种基于负载自适应的云平台应用实例自动伸缩方法 | |
CN103067293A (zh) | 负载均衡设备的连接管理和复用的方法和系统 | |
CN104679594B (zh) | 一种中间件分布式计算方法 | |
CN106790552B (zh) | 一种基于内容分发网络的内容提供系统 | |
CN106790565A (zh) | 一种网络附属存储集群系统 | |
CN106790636A (zh) | 一种云计算服务器集群的均衡负载系统及方法 | |
US10148531B1 (en) | Partitioned performance: adaptive predicted impact | |
US10142195B1 (en) | Partitioned performance tracking core resource consumption independently | |
CN107967175A (zh) | 一种基于多目标优化的资源调度系统及方法 | |
CN102916992B (zh) | 一种统一调度云计算远端资源的方法及系统 | |
CN108366273A (zh) | 分布式视频转码系统及分布式视频转码方法 | |
CN109783225A (zh) | 一种多租户大数据平台的租户优先级管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |