CN103414771B - 一种云计算环境下节点间长任务操作的监测方法 - Google Patents
一种云计算环境下节点间长任务操作的监测方法 Download PDFInfo
- Publication number
- CN103414771B CN103414771B CN201310337605.5A CN201310337605A CN103414771B CN 103414771 B CN103414771 B CN 103414771B CN 201310337605 A CN201310337605 A CN 201310337605A CN 103414771 B CN103414771 B CN 103414771B
- Authority
- CN
- China
- Prior art keywords
- task
- long
- node
- management node
- cloud computing
- 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
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种云计算环境下节点间长任务操作的监测方法。本发明首先建立起管理节点与实现节点的通信连接;然后,管理节点产生一个具体操作对象并根据需要标识为长任务操作,管理节点将该长任务操作对象相关信息保存到数据库长任务表中;实现节点接收到任务消息后,根据任务对象来判断是否为长操作;管理节点在成功发送出任务到实现节点之后,定时的向实现节点发送长任务查询请求;实现节点收到查询请求后,将更新后的数据信息反馈给管理节点;如果该长任务在管理节点设置的超时时间内还没有完成,则放弃执行,并返回执行失败信息给管理节点。本发明解决了长任务操作的实时监测问题;可以用于云计算长任务操作监测中。
Description
技术领域
本发明涉及云计算任务操作监测技术领域,特别是一种云计算环境下节点间长任务操作的监测方法。
背景技术
在云计算解决方案中,管理节点对实现节点(计算节点、存储节点、网络节点等)存在着大量的任务控制工作;对于短任务,例如查询虚拟机远程VNC端口,管理节点可以使用同步通信的方式阻塞进程等待实现节点执行任务后返回结果;然而,对于创建虚拟机、虚拟机打包、创建存储卷、存储卷备份等这些耗时的长任务来说,管理节点同步阻塞等待的通信方式已经不可能采取了,而必须采用异步检测机制。而目前阶段,很多云计算解决方案中都仅仅是采用了设置长任务超时时间这一简单方式,这种方式简单易实现,但同时会带来以下问题:
一是可控性差,一个长任务操作可能耗时比较久,如果仅仅是采取现阶段大部分云计算解决方案采取的设置超时时间的方法,管理节点对长任务的处理仅仅是处于一直等待状态,这无疑是不好的选择;
二是无法真正实现对长任务操作的监测,长任务的监测需要时刻知道其完成的进度信息,仅仅设置超时时间无法获取长任务操作的完成进度相关信息;
三是用户体验差,由于无法获取长任务操作进度信息,对于用户,即操作长任务的人来说,无法得到或者准确得到好的用户体验;
四是无法预测长任务操作完成时间,由于无法实时获取长任务操作进度信息,也就不能根据已完成的百分比和所用时间来预测任务完成时间。
另外,对于比较耗时的长任务操作,仅仅是设置超时时间等待任务最终操作状态已经不可取了,我们有必要知道任务在某时以完成的进度信息,这样才能实现对任务的有效监控。
为了从真正意义上实现对云计算环境下各个长任务操作的实时监控,实时获取长任务操作执行的进度信息和结果信息,需要一种通过管理节点控制实现节点、实时准确的获取长任务操作进度信息的监测机制。
发明内容
本发明解决的技术问题在于提供一种云计算环境下节点间长任务操作的监测机制,解决了现阶段云计算环境下管理节点仅仅通过设置超时时间来控制实现节点进行长任务操作,而无法实时准确获取长任务操作的进度信息、实现对长任务操作真正意义上的监控问题。
本发明解决上述技术问题的技术方案是:
包括如下步骤:
步骤1:在云计算环境下建立管理节点与实现节点的通信连接;
步骤2:管理节点产生一个具体操作任务对象,根据需要标识该对象为长任务操作,同时为其生成一个唯一的任务ID,并以注解的方式设置超时时间;
步骤3:管理节点将该长任务操作对象相关信息保存到数据库长任务表中;
步骤4:管理节点将该长任务对象以HTTP消息体的格式发送至实现节点;
步骤5:实现节点接收到任务消息后,根据任务对象判断是否为长操作,如果是长操作,则创建实现节点的长操作实体,并将实体加入到实现节点长操作链表中;
步骤6:管理节点在成功发送出任务到实现节点之后,定时的向实现节点发送长任务查询请求;
步骤7:实现节点收到查询请求后,根据具体操作更新长操作链表中的操作进度、操作结果等数据;
步骤8:实现节点将更新后的数据反馈给管理节点;
步骤9:管理节点收到反馈的数据后将数据更新进数据库表中;
步骤10:如果该长任务在管理节点设置的超时时间内还没有完成,则放弃执行,并返回执行失败信息给管理节点;
所述的管理节点和实现节点分别是云计算解决方案中的管理模块和实现模块;
所述的管理模块是指云计算解决方案中负责产生任务、发送任务、接收任务反馈的业务控制管理模块,该模块只负责产生任务,不负责任务实现;
所述的实现模块是云计算解决方案中负责消费任务,任务实现的业务功能模块;
所述的长任务操作是指创建虚拟机、删除虚拟机、创建存储卷等耗时比较长的一些具体功能操作;
所述的保存到数据库中的长任务操作相关信息是指的任务ID、任务进度、任务结果、任务时间以及用户ID等数据项。
所述的实现节点长任务结构实体是指C语言结构体类型所定义的一个结构体变量;
所述的长任务链表是指在实现节点上定义的一个全局链表,里面存放着正在进行的每一个长任务结构实体。
本发明可以实时准确获取长任务操作的进度信息,实现对长任务操作的实时监控。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图;
图2为本发明的具体实例示意图;
具体实施方式
如图1所示,本发明方法包括如下步骤:
步骤1:在云计算环境下先建立起管理节点与实现节点的通信连接;
步骤2:管理节点产生一个具体操作对象,根据需要标识该对象为长任务操作,同时为其生成一个唯一的任务ID,并以注解的方式设置超时时间;
步骤3:管理节点将该长任务操作对象相关信息保存到数据库长任务表中;
步骤4:管理节点将该长任务对象以HTTP消息体的格式发送至实现节点;
步骤5:实现节点接收到任务消息后,根据任务对象来判断是否为长操作,如果是长操作,则创建实现节点的长操作实体,并将实体加入到实现节点长操作链表中;
步骤6:管理节点在成功发送出任务到实现节点之后,定时得向实现节点发送长任务查询请求;
步骤7:实现节点收到查询请求后,根据具体操作更新长操作链表中的操作进度、操作结果等数据;
步骤8:实现节点将更新后的数据反馈给管理节点;
步骤9:管理节点收到反馈的数据后将数据更新进数据库表中;
步骤10:最后,如果该长任务在管理节点设置的超时时间内还没有完成,则放弃执行,并返回执行失败信息给管理节点。
前述的管理节点和实现节点分别代表云计算解决方案中管理模块和实现模块;管理模块是指云计算解决方案中负责产生任务、发送任务、接收任务反馈的业务控制管理模块,该模块只负责产生任务,不负责任务实现;实现模块是云计算解决方案中负责消费任务,任务实现的业务功能模块;注解方式是指Java语言特有的编程方式,可以完成自我设置与检测;超时时间是一个时间值,一个长任务操作必须在这个设定的最大时间间隔值内完成;保存到数据库中的相关信息是指长任务操作的任务ID、任务进度、任务结果、任务时间以及用户ID等数据项;HTTP消息体是指管理节点与实现节点的通信是建立在http协议基础之上的;实现节点长任务结构实体是指C语言结构体类型所定义的一个结构体变量;长任务链表是指在实现节点上定义的一个全局链表,里面存放着正在进行的每一个长任务结构实体;管理节点对长任务的实时监测是指,实现节点收到查询请求后,根据具体操作更新长操作链表中的操作进度、操作结果等数据,并将更新后的数据信息反馈给管理节点,管理节点收到反馈的数据后会将数据更新进数据库表的相应记录中。
如图2所示,是本发明的一个具体示例;管理节点先设置一个任务为长任务并产生一个任务ID,并注解的形式设置该长任务操作的超时时间,代码如下:
这里利用Java自带的jar包UUID的UUID.randomUUID().toString()为任务生成了一个任务ID。然后管理节点将包含有该任务ID的对象发送至实现节点。
实现节点接收到管理节点发来的长任务请求后,及时创建一个长任务实体并将其加入到内存长任务链表中,长任务结构体如下:
typedef struct long_task_t{
char instanceId[CHAR_BUFFER_SIZE];
pid_t pid;
char taskId[CHAR_BUFFER_SIZE];
struct timeval start_time; //task start time
struct timeval done_time; //task done time
int timeout_sec;
//currenttime-start_time>timeout_sec:timeout,force quit task
task_type type;
int watching_mode; //0:check when query,1:auto check
//file path.mainly for local copy.
char source[CHAR_BUFFER_SIZE*2];
char dest[CHAR_BUFFER_SIZE*2];
unsigned long long srcSizeKb;
unsigned long long dstSizeKb;
int ratio;//ratio=dstSizeKb/srcSizeKb*100%
//-1means task tailed
//-2means task not exist
//-3means nc service failed
//-4means other errors
char status[CHAR_BUFFER_SIZE];//describe task status.
int is_done; //if task done,set 1else 0
int query_times;
//the finished result will be kept until at least one time queried
struct long_task_t*next;
}long_task;
这里定义了实现节点上的一个长任务操作结构体,主要包括有taskId(任务ID),ratio(任务进度),is_done(任务结果)等,其他还有与操作时间相关的一些参数。
针对长任务,实现节点定义了一系列相关的操作,以满足管理节点对长任务操作的监测,如下是实现节点定义的一些主要操作:
//长任务监测线程
void*long_task_monitor_thread(void*);
//添加长任务到实现节点的长任务链表中
long_task*long_task_add(long_task*task);
//创建一个长任务
int long_task_general_create(char*taskId,char*instanceId,pid_t pid);
int long_task_cp_create(char*taskId,char*instanceId,const char*src_path,const char*dst_path,pid_t pid);
int long_task_live_migrate_create(char*taskId,char*instanceId,pid_tpid);
//长任务实体的更新
int long_task_refresh(long_task*task);
//获取指定长任务的进度信息
int long_task_ratio_get(long_task*task);
另外还有一些相关的长任务操作如下,从函数名可以很容易的知道该操作是作用:
int long_task_status_set(char*taskId,const char*msg);
int long_task_set_done(long_task*task);
int long_task_query(char*taskId,int*ratio,char**status);
int long_task_set_failed(char*taskId,const char*status);
int long_task_set_Success(char*taskId,const char*status);
long_task*long_task_find(char*taskId);
char*long_task_status_get(long_task*task);
管理节点成功发送长任务请求后,就可以每间隔一段时间调用实现节点的long_task_query方法来查询长任务信息。
在long_task_query函数中,首先会调用long_task_find来查询内存长任务链表中是否有指定的taskId,如果没有就直接返回错误,如果有则调用long_task_refresh函数根据具体长任务执行情况更新长任务对象task;更新成功后即返回该对象里面包含的一些任务信息,主要包括有任务是否结束task->is_done,任务完成百分比task->ratio,任务执行时间等。最后,实现节点会将这些任务信息反馈该管理节点。
Claims (2)
1.一种云计算环境下节点间长任务操作的监测方法,其特征在于:包括如下步骤:
步骤1:在云计算环境下建立管理节点与实现节点的通信连接;
步骤2:管理节点产生一个具体操作任务对象,根据需要标识该对象为长任务操作,同时为其生成一个唯一的任务ID,并以注解的方式设置超时时间;
步骤3:管理节点将该长任务操作对象相关信息保存到数据库长任务表中;
步骤4:管理节点将该长任务操作对象以HTTP消息体的格式发送至实现节点;
步骤5:实现节点接收到任务消息后,根据任务对象判断是否为长操作,如果是长操作,则创建实现节点的长操作实体,并将实体加入到实现节点长操作链表中;
步骤6:管理节点在成功发送出任务到实现节点之后,定时的向实现节点发送长任务查询请求;
步骤7:实现节点收到查询请求后,根据具体操作更新长操作链表中的操作进度、操作结果数据;
步骤8:实现节点将更新后的数据反馈给管理节点;
步骤9:管理节点收到反馈的数据后将数据更新进数据库表中;
步骤10:如果该长任务在管理节点设置的超时时间内还没有完成,则放弃执行,并返回执行失败信息给管理节点;
所述的管理节点和实现节点分别是云计算解决方案中的管理模块和实现模块;
所述的管理模块是指云计算解决方案中负责产生任务、发送任务、接收任务反馈的业务控制管理模块,该模块只负责产生任务,不负责任务实现;
所述的实现模块是云计算解决方案中负责消费任务,任务实现的业务功能模块;
所述的长任务操作是指耗时比较长的一些具体功能操作,包括:创建虚拟机、删除虚拟机、创建存储卷;
所述的保存到数据库中的长任务操作对象相关信息是指的任务ID、任务进度、任务结果、任务时间以及用户ID数据项。
2.根据权利要求1所述的监测方法,其特征在于:所述的实现节点的长操作实体是指C语言结构体类型所定义的一个结构体变量;
所述的长操作链表是指在实现节点上定义的一个全局链表,里面存放着正在进行的每一个长操作实体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310337605.5A CN103414771B (zh) | 2013-08-05 | 2013-08-05 | 一种云计算环境下节点间长任务操作的监测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310337605.5A CN103414771B (zh) | 2013-08-05 | 2013-08-05 | 一种云计算环境下节点间长任务操作的监测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103414771A CN103414771A (zh) | 2013-11-27 |
CN103414771B true CN103414771B (zh) | 2017-02-15 |
Family
ID=49607757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310337605.5A Active CN103414771B (zh) | 2013-08-05 | 2013-08-05 | 一种云计算环境下节点间长任务操作的监测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103414771B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016138616A1 (en) * | 2015-03-02 | 2016-09-09 | Microsoft Technology Licensing, Llc | Data query job submission management |
CN105117281B (zh) * | 2015-08-24 | 2019-01-15 | 哈尔滨工程大学 | 一种基于任务申请信号和处理器内核执行代价值的任务调度方法 |
CN106325992A (zh) * | 2016-08-20 | 2017-01-11 | 国云科技股份有限公司 | 一种计算分布式环境长任务进度的方法 |
CN106503961A (zh) * | 2016-10-19 | 2017-03-15 | 青岛海信电器股份有限公司 | 基线过程的实现方法和装置 |
US11023479B2 (en) * | 2017-04-26 | 2021-06-01 | Microsoft Technology Licensing, Llc | Managing asynchronous analytics operation based on communication exchange |
CN109901917B (zh) * | 2017-12-07 | 2022-04-22 | 龙芯中科技术股份有限公司 | 实时操作系统调度方法及装置、计算机可读存储介质 |
CN110650172B (zh) * | 2018-06-27 | 2022-04-19 | 阿里巴巴(中国)有限公司 | 流式任务处理方法、装置及服务器 |
CN109656740A (zh) * | 2018-12-11 | 2019-04-19 | 国云科技股份有限公司 | 一种支持超时处理任务流的方法 |
CN115220131A (zh) * | 2022-06-23 | 2022-10-21 | 阿里巴巴(中国)有限公司 | 气象数据质检方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1652512A (zh) * | 2004-02-04 | 2005-08-10 | 华为技术有限公司 | 设备升级方法 |
CN102073546A (zh) * | 2010-12-13 | 2011-05-25 | 北京航空航天大学 | 一种云计算环境中分布式计算模式下的任务动态调度方法 |
CN102855236A (zh) * | 2011-06-27 | 2013-01-02 | 北京东方通科技股份有限公司 | 文件传输系统及文件传输方法 |
-
2013
- 2013-08-05 CN CN201310337605.5A patent/CN103414771B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1652512A (zh) * | 2004-02-04 | 2005-08-10 | 华为技术有限公司 | 设备升级方法 |
CN102073546A (zh) * | 2010-12-13 | 2011-05-25 | 北京航空航天大学 | 一种云计算环境中分布式计算模式下的任务动态调度方法 |
CN102855236A (zh) * | 2011-06-27 | 2013-01-02 | 北京东方通科技股份有限公司 | 文件传输系统及文件传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103414771A (zh) | 2013-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103414771B (zh) | 一种云计算环境下节点间长任务操作的监测方法 | |
US9818063B2 (en) | Forecasting interest in an object over a future period of time using a three-stage time-series analysis process | |
CN109995669B (zh) | 分布式限流方法、装置、设备及可读存储介质 | |
CN105099739B (zh) | 一种基于插件式软件部署方法、装置及应用服务器 | |
WO2022007552A1 (zh) | 处理节点的管理方法、配置方法及相关装置 | |
CN104102949B (zh) | 一种分布式工作流装置及其处理工作流的方法 | |
CN104753817A (zh) | 一种云计算消息队列服务本地模拟方法和系统 | |
WO2013023306A1 (en) | Stream processing using a client-server architecture | |
CN110719311B (zh) | 分布式协调服务方法、系统及计算机可读存储介质 | |
RU2605918C2 (ru) | Способ предоставления функций в промышленной системе автоматизации и промышленная система автоматизации | |
US20160299796A1 (en) | Offloading human-machine-interaction tasks | |
CN103023857A (zh) | 一种信息资源远程部署的方法及系统 | |
CN107277083A (zh) | 一种数据交互的处理方法、装置及系统 | |
WO2019027597A1 (en) | WORKFLOW MANAGEMENT FRAMEWORK | |
CN111625497A (zh) | 一种分布式文件系统的部署方法、装置、设备及存储介质 | |
CN112416884A (zh) | 一种数据同步方法及系统 | |
CN105227616B (zh) | 一种遥感卫星地面处理系统任务动态创建与分配的方法 | |
Basanta-Val et al. | Towards propagation of non-functional information in distributed real-time java | |
US9430416B2 (en) | Pattern-based service bus architecture using activity-oriented services | |
WO2015117365A1 (zh) | Hello报文交互的方法、设备和系统 | |
US8301273B2 (en) | Method for providing functions in an industrial automation system, control program and industrial automation system | |
CN103200225B (zh) | 一种服务器集群中服务的集中管理方法和系统 | |
CN107911442B (zh) | 接收响应接口交互方法、装置、计算机设备及存储介质 | |
CN115756783A (zh) | 跨子系统的空间任务依赖调度方法与系统 | |
CN112019362A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 523808 19th Floor, Cloud Computing Center, Chinese Academy of Sciences, No. 1 Kehui Road, Songshan Lake Hi-tech Industrial Development Zone, Dongguan City, Guangdong Province Patentee after: G-Cloud Technology Co., Ltd. Address before: 523808 No. 14 Building, Songke Garden, Songshan Lake Science and Technology Industrial Park, Dongguan City, Guangdong Province Patentee before: G-Cloud Technology Co., Ltd. |
|
CP02 | Change in the address of a patent holder |