CN100547973C - 一种基于对等网络的高性能计算*** - Google Patents
一种基于对等网络的高性能计算*** Download PDFInfo
- Publication number
- CN100547973C CN100547973C CNB2007100522694A CN200710052269A CN100547973C CN 100547973 C CN100547973 C CN 100547973C CN B2007100522694 A CNB2007100522694 A CN B2007100522694A CN 200710052269 A CN200710052269 A CN 200710052269A CN 100547973 C CN100547973 C CN 100547973C
- Authority
- CN
- China
- Prior art keywords
- node
- task
- module
- dispatch
- data
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
一种基于对等网络的高性能计算***,包括监控节点,分派节点,计算节点,数据服务器和客户机。监控节点接收客户机提交的应用工程描述文件,管理并监控分派节点的状态以及各任务簇的完成状况;分派节点将任务分派给所属的各计算节点,监控各计算节点的状态以及任务的完成状况,并向监控节点报告;计算节点接收并计算所属分派节点分派的任务,报告任务完成状况,并与数据服务器进行数据交换;数据服务器存储备份应用工程的数据,处理客户机和计算节点的数据请求;客户机提交初始应用工程,管理主任务的启动运行,并得到应用的最终结果。本发明***具有通用性好、跨平台、编程方便、容错性好和扩展性好的特点,可以克服原有的志愿机计算***的缺点。
Description
技术领域
本发明属于分布式高性能计算服务器技术领域,在Internet范围内利用对等网络技术实现一种高性能计算***,具体为一种基于对等网络的高性能计算***。
背景技术
传统的高性能计算机是基于SMP大型机或机群构造的超级计算机;但由于构造和维护费用巨大,它们不能够被广泛应用,仅仅局限于大型公司或政府、院校等科研机构。随着网络规模的不断增长,分布式计算技术越来越多地被应用于高性能计算领域。利用Internet中的PC机,通过分布式计算的原理,可以构建比传统超级计算机性能更高、价格更低廉的高性能计算***。
目前利用Internet中的PC机所构建的高性能计算平台主要采用志愿机计算模式;这种***包括两类节点:志愿机节点和服务器节点。其中,志愿机节点执行子任务的计算,并把计算完的临时结果发送给服务器节点;服务器节点作为***的一个中央控制站点,提供任务划分、任务分派、任务汇总等功能。整个***利用连接在Internet上的计算资源(PC机、工作站和集群等)执行计算任务。当这些资源处于空闲状态的时候,它们通过后台程序主动连接服务器节点,下载数据文件和应用子程序到本地执行。子任务计算完后,它们把计算任务结果返回给服务器,并由服务器对这些结果进一步处理;志愿机越多,***的计算能力越强。
作为志愿机计算平台的典型代表,伯克利开发的开放式网络计算***(BOINC)[GRID’04,2004]采用的结构是客户端-服务器模型。其中,服务器端由调度服务器、数据服务器以及参与者的网页接口组成;客户端则由参与用户下载并安装一个BOINC客户软件构成。通过BOINC提供的Python脚本和C++接口,可以对应用进行编程,形成BOINC工程。客户端从服务器下载应用工程的计算单元及相关数据,在本地计算完成后上传结果文件,并报告当前状态。由于所有的客户端都直接与服务器进行通信,所以它是一个典型的集中式控制结构,易产生单节点失效和扩展性受限等问题。它提供的编程工具没有根据任务的计算特性来区分接口,而是将该项工作留给编程人员自己来完成,增加了编程的难度。
其他的志愿机计算平台包括SETI@Home、XtremWeb、P3等。尽管它们获得了很大的成功,但是这些计算平台也存在着一些不足:1)没有提供应用编程接口或者提供的编程接口复杂,整个平台对应用程序开发人员不透明,应用开发难度较大;2)某些计算平台不提供通用性支持,只计算一个应用;3)当网络拥塞或网络延迟较大时,服务器节点容易成为整个计算平台的瓶颈,进而导致***出现单一节点失效和扩展性差等问题。因而,传统的志愿机计算***不能很好地发挥对等高性能计算***的计算潜能。
发明内容
本发明的目的在于提供一种基于对等网络的高性能计算***,该***具有通用性好、跨平台、编程方便、容错性好和扩展性好的特点,可以克服原有的志愿机计算***的缺点。
本发明提供的基于对等网络的高性能计算***包括监控节点,分派节点,计算节点,数据服务器和客户机,其中,
监控节点接收客户机提交的工程描述文件,并将应用中的任务以任务簇的方式重定向给各个分派节点;在应用的计算过程中,监控节点监控分派节点的状态以及各个任务簇中任务的完成状况;
分派节点将所接收到的任务簇分派给所属的各个计算节点,监控该管理域内各个计算节点的状态以及所分派任务的完成状况,并将任务的完成状况向监控节点报告;
计算节点附属于各个分派节点,并由所附属的分派节点进行监控和任务分派管理;当某一计算节点接收到分派节点所分派的计算任务后,它从数据服务器获取该计算任务的代码和参数数据,然后启动该任务的运行;在计算过程中,计算节点定时向所属的分派节点报告任务完成状况,在任务计算完成后,计算节点将该任务的结果上传给数据服务器;其中,计算节点包括注册模块、客户端存储模块、客户端传输模块和任务控制模块;
客户端存储模块给计算节点提供工作区间,并对客户端传输模块提供数据支持;它对每个任务的程序、数据以及结果都以文件方式进行管理,并为每个工程建立临时工作目录;
注册模块用于管理计算节点的加入和初始化工作,以及存活状态报告;当计算节点要加入***时,注册模块向监控节点发出加入请求,然后根据监控节点返回的分派节点的地址信息,向该分派节点发出加入请求;当该分派节点返回加入成功的应答消息后,注册模块初始化任务控制模块;在计算节点的运行过程中,注册模块周期性地向所属的分派节点报告存活状态;若它不能与所属的分派节点通信,则重新向监控节点发出加入消息,进而加入一个新的分派节点;
任务控制模块用于管理计算节点上任务的接收和运行,以及运行状态与结果的报告;当计算节点空闲时,任务控制模块周期性地向分派节点发送任务请求消息;当分派节点有等待运行的任务时,分派一个任务给计算节点;任务控制模块接收到分派节点所分派的任务信息后,通知客户端传输模块向数据服务器请求该子任务的代码和参数数据;当该任务的代码和参数数据传输完成后,任务控制模块将客户端存储模块中该任务的初始数据传递给该任务,并启动该任务的计算;在任务计算过程中,任务控制模块周期性地向分派节点报告任务的运行状况;在任务计算完成后,任务控制模块将结果文件放入客户端存储模块中,并将这些文件通过客户端传输模块传输给数据服务器;然后,恢复到空闲状态,并将任务完成状况和自身空闲状态报告给分派节点;
客户端传输模块接收任务控制模块的数据传输命令,根据这些传输命令,并辅助客户端存储模块,与数据服务器进行数据传输,当数据传输完成后,客户端传输模块将完成事件通知给任务控制模块;
数据服务器在应用工程提交阶段接收客户机提交的初始工程数据;在工程计算阶段,它处理计算节点的数据请求,传送子任务的代码及参数数据,并接收计算节点上传的子任务的结果数据;在子任务计算完成后,它接收客户机的数据请求,将子任务结果数据传送给客户机;
客户机向数据服务器提交应用工程的初始数据后,形成一个工程描述文件,并将该工程描述文件提交给监控节点,在应用工程的子任务计算完成后,客户机从数据服务器获取子任务的结果,并通知主任务对这些结果进行汇总处理,得到该应用的最终结果。
本发明提供了实现一种新型高性能计算***的解决方案,具有以下优点和用途:
(1)具有高可扩展性和容错能力,实现高性能计算:该***将计算资源构建成一个三层网络结构的半集中式网络;相对于集中式资源管理,这种体系结构具有更强的可扩展性和容错能力,并且能够提高***资源的利用率,增大计算任务的吞吐率,减少计算应用的响应时间,进而实现应用的高性能计算。
(2)提供可靠和高效的数据传输服务:对每一个数据请求,分别用一个消息信道和一个数据信道传输控制命令和数据流。这种传输机制将控制命令传输与数据流传输分离,能够处理多任务的并发传输请求,并对单个任务的传输实现容错控制;高效的数据流处理提高了***的实时性和可靠性。
(3)能支持一类通用的对等高性能计算应用:与@home系列对等高性能计算***相比,本发明提供一套简单易用的编程模型,带有丰富和灵活的任务划分方法,支持通用的对高性能计算应用。
附图说明
图1为本发明基于对等网络的高性能计算***的结构示意图;
图2为客户机的结构示意图;
图3为监控节点的结构示意图;
图4为分派节点的结构示意图;
图5为计算节点的结构示意图;
图6为数据服务器的结构示意图;
图7为数据传输协议;
图8为数据流格式;
图9为数据传输状态转换图。
具体实施方式
下面结合附图对本发明进行详细的描述。
从工作原理划分,可以将本发明***资源分为五种角色的节点:监控节点1,分派节点2.1、2.2、...、2.N(统称为分派节点2),计算节点3.1、3.2、...、3.K(统称为计算节点3),数据服务器4和客户机5,如图1所示;其中,N、K为正整数。每个应用作为一个工程提交给***,这个工程包含一个主任务和许多子任务。其中主任务在客户机5上运行,它参与应用工程的控制执行;子任务在计算节点3上运行,每个子任务完成应用工程的部分计算工作。
监控节点1、分派节点2和计算节点3形成一个层次化网络:所有的分派节点2.1、2.2、...、2.N均与监控节点1相连;所有的计算节点3.1、3.2、...、3.K形成多个工作组,每个工作组内的计算节点均与一个分派节点相连。监控节点1对***资源和应用工程进行管理,其工作包括处理客户机提交的工程描述文件,以及对工程的运行状态和当前的***资源进行监控。分派节点2.1、2.2、...、2.N管理并调度所属的空闲计算节点执行计算任务,并监控所属计算节点的状态。计算节点3.1、3.2、...、3.K是子任务的具体执行者。数据服务器4存储管理应用工程的数据,并对这些数据提供传输支持。用户提供一个客户机5,通过客户机5向***提交应用工程,并在客户机5上运行主任务。
如图1所示,应用工程的初始数据由客户机5向数据服务器4提交;在提交完成后,客户机建立一个工程描述文件,这个工程描述文件的内容包括数据服务器4的地址信息、监控节点的地址信息和所有子任务信息;接着客户机将该工程描述文件提交给监控节点1;然后启动主任务,开始整个工程的运行。在工程启动后,客户机5将工程的所有子任务分成任务簇,每一个任务簇包含一批数量一定的子任务。客户机5依次向监控节点1申请启动一个任务簇,然后监控节点1选择一个负载最轻的分派节点2.i(i=1、2...、N),将这个任务簇重定向给分派节点2.i。分派节点2.i在接收到由监控节点1重定向的任务簇后,将其中的子任务通过任务分发机制分派给所属的各个计算节点3.s-3.t(s=1、2...、K,t=1、2...、K,且s≤t)。计算节点3.j(s≤j≤t)接收到分派节点2.i所分派的子任务后,向数据服务器4请求该子任务计算所需要的参数和代码数据,并由数据服务器4将该子任务的相关数据传送给计算节点3.j。收到该子任务计算所需要的数据后,计算节点3.j开始运行该子任务;在子任务的计算完成后,计算节点3.j将该子任务的结果文件发送给数据服务器4,并将该任务的完成状况报告给分派节点2.i。当接收到计算节点关于任务计算完成的状态报告后,分派节点2.i将这个子任务的完成状态报告给监控节点1。监控节点1监控所提交任务簇的状态;客户机定期向监控节点1查询所申请任务簇的完成状况;若在一定时间后有子任务未完成,则将未完成子任务重新分成任务簇,并向监控服务器1再次申请启动这些任务簇,然后由分派节点和计算节点来完成这些任务簇内子任务的计算。在所有子任务完成后,客户机5向数据服务器4获取子任务的结果,并由主任务对这些结果进行汇总处理,得到该应用工程的最终结果,从而完成对整个工程的求解。
下面分别举例说明本***各部分的构成与功能,本领域一般技术人员根据本发明公开的内容,可以采用其它方式予以具体实现。
如图2所示,客户机5由工程提交模块51和主任务运行模块52组成。工程提交模块51用于提交通过软件开发包编程后的应用工程;该工程包括一个主任务和多个子任务。首先,工程提交模块51将应用工程的初始数据提交给数据服务器4,并形成一个工程描述文件。然后,工程提交模块51将该工程描述文件提交给监控节点1,并将提交完成事件通知给主任务运行模块52。
主任务运行模块52负责主任务的运行。在收到工程提交模块51的工程提交完成事件后,主任务运行模块启动主任务的运行。在运行过程中,主任务运行模块52将该工程的子任务分成任务簇,并依次向监控节点1申请启动这些任务簇。主任务运行模块52定期(每个子任务的估计运行时间)向监控节点1查询所申请任务簇内子任务的完成状态;若在用户设定的最长运行时间内子任务没有完成,则将这些未完成的子任务重新组装成任务簇,再次向监控节点1申请启动这些任务簇。当所有子任务均完成后,主任务运行模块52向数据服务器4请求这些子任务的结果数据;在接收到数据服务器4传送过来的子任务结果数据后,通知主任务进一步对这些结果进行汇总处理,并得到该应用的最终结果。
如图3所示,监控节点1主要由下列部分构成:新节点管理模块11、分派节点表12、分派节点监控模块13、工程管理模块14和工程表15。其中,分派节点表12存储***中所存在的分派节点信息,每个分派节点的基本信息单元包括分派节点地址信息、存活时间、分派节点的任务簇信息以及分派节点内的计算节点数。工程表15记录着所有提交给***的工程描述文件,以及参与该应用工程的分派节点信息,它由工程管理模块14管理维护。
新节点管理模块11利用分派节点表12对新加入的节点进行管理。新加入的节点向监控节点发出加入请求,当该节点是一个新的分派节点时,新节点管理模块11为该节点初始化一个分派节点信息单元,并将该信息单元放入分派节点表12中,然后通知该节点加入***成功。若新加入节点是一个新的计算节点时,新节点管理模块11将新加入的节点分配给负载最重的分派节点;这里负载最重是指该分派节点上的任务簇所包含的任务数最多。新节点管理模块11首先从分派节点表12中选择一个负载最重的分派节点;然后,将这个负载最重的分派节点地址信息告诉给新加入的计算节点,让该新节点向这个分派节点发送加入请求,并加入到它的工作组中。
分派节点监控模块13根据分派节点表12监控***中分派节点的状态,包括分派节点的存活状态和它的任务簇完成状态。分派节点监控模块13接收分派节点2.i的状态报告消息,该消息包含分派节点2.i上任务簇的完成状态;分派节点监控模块13根据该消息更新分派节点表12中相应分派节点信息单元的任务簇完成状态和节点存活时间。分派节点监控模块13定期(如5秒)轮询分派节点表12中每个分派节点的存活时间;若一个分派节点在三个轮询周期(如15秒)内没有更新存活时间,分派节点监控模块13认为该分派节点已经退出***,并删除该分派节点在分派节点表12中的信息单元,然后通知工程管理模块14将该分派节点中未完成的任务簇重定向给另外一个负载最轻的分派节点。
工程管理模块14管理着应用工程中任务簇的启动运行。在接收到客户机提交的工程描述文件后,工程管理模块14为该工程初始化一个工程表信息单元,并将该信息单元放入到工程表15中。在接收到客户机的任务簇启动请求后,工程管理模块14在分派节点表12中选取一个负载最轻的分派节点,将该任务簇重定向给这个分派节点,并将分派节点的地址信息放入到工程表15对应的信息单元中。在收到客户机的任务簇状态查询信息后,工程管理模块14根据工程表15得到该任务簇所分派的分派节点,然后从分派节点表12中得到对应分派节点的任务簇完成状况,并将该结果返回给客户机。在运行过程中收到分派节点监控模块13关于分派节点死亡的消息事件后,工程管理模块14从分派节点表12中再次选择一个负载最轻的分派节点,并将死亡分派节点未完成的任务簇重定向给它。然后,工程管理模块14将工程表15中对应任务簇的分派节点信息更新为新的分派节点信息。
如图4所示,分派节点主要由以下部分组成:(1)分派节点启动模块21;(2)计算节点表22;(3)计算节点管理模块23;(4)任务管理模块24;(5)初始任务队列25;(6)等待任务队列26;(7)运行任务队列27;(8)出错任务队列28。其中,计算节点表22记录该分派节点内的计算节点信息,每个计算节点信息单元的内容包括:计算节点标识、计算节点IP地址、计算节点通信套接字、计算节点上次轮询时间、计算节点轮询失败计数、计算节点运行状态信息。当一个计算节点加入时,分派节点为这个计算节点生成一个计算节点信息对象,并把这个对象加入到计算节点表22中。
当分派节点要加入***时,分派节点启动模块21向监控节点1发出加入请求;接收到监控节点1的加入成功应答之后,分派节点启动模块21分别初始化计算节点管理模块23和任务管理模块24。
计算节点管理模块23管理新计算节点的加入,并监控计算节点表22中计算节点的状态。一方面,当新的计算节点向分派节点发出加入请求时,计算节点管理模块为该计算机点初始化一个计算节点信息单元,并将该信息放入到计算节点表22中。另一方面,计算节点管理模块23监控各个计算节点的状态。各个计算节点3周期性地向所属的分派节点发送存活消息;若计算节点管理模块23在3个轮询周期内没有收到计算节点的存活消息,则认为该计算节点已经退出***或失效,并将其从计算节点表22中删除,并通知任务管理模块24,将该计算节点上的任务重新分派给其他计算节点。
任务管理模块24利用四个任务队来管理监控节点重定向给它的任务簇中的任务。其中,初始任务队列25用于保存初始任务信息,等待任务队列26保存当前等待分派的任务信息;运行任务队列27保存已分派给计算节点的任务信息;出错任务队列28保存出错的任务信息。
首先,任务管理模块24接收到监控节点重定向的任务簇后,将任务簇中的任务放入到初始任务队列25中。接着,任务管理模块24检查依次这些任务信息的合法性:若一个任务通过检查,则将该任务放入等待任务队列26中;若该任务没有通过检查,则将该任务抛弃。然后,当任务管理模块24接收到一个计算节点的空闲报告后,若等待任务队列26中存在未分派任务,则将等待任务队列26中的第一个任务分派给该计算节点,并将这个任务放入到运行任务队列27中。计算节点周期性地向任务管理模块24报告该计算节点上任务的状态;任务管理模块24统计运行任务队列27中任务的完成状态,并周期性地向监控节点报告计算任务的完成状况;当没有任务需要计算时,该状态报告相当于分派节点的存活状态报告消息。任务管理模块24向监控节点报告完任务的状态后,将计算完成的任务从运行任务队列27中移出,并将该任务的完成状态报告给监控节点。若一个计算节点上的任务执行异常,或接收到计算节点管理模块23关于计算节点退出的消息,则将分派给该计算节点的任务移入出错任务队列28中。然后,当接到计算节点的空闲报告时,任务管理模块24将出错任务队列28中的任务重新分派给这个空闲计算节点,并将该任务重新移入运行任务队列27中。
如图5所示,计算节点主要由下列部分构成:(1)注册模块31(2)任务控制模块34;(3)客户端传输模块33;(4)客户端存储模块32。其中,客户端存储模块34给计算节点3提供工作区间,并对客户端传输模块33提供数据支持。它对每个任务的程序、数据以及结果都以文件方式进行管理,并为每个工程建立临时工作目录。
注册模块31管理着计算节点的加入和节点的初始化工作,以及该节点的存活状态报告。当计算节点要加入***时,注册模块31向监控节点1发出加入请求,然后根据监控节点1返回的分派节点2的地址信息,向该分派节点2发出加入请求。当分派节点2返回加入成功的应答消息后,注册模块31初始化任务控制模块34。在计算节点的运行过程中,注册模块31周期性地向所属的分派节点2报告存活状态。若它不能与所属的分派节点2通信,则重新向监控节点1发出加入消息,进而加入一个新的分派节点。
任务控制模块34管理计算节点上任务的接收和运行,以及运行状态与结果的报告。首先,当计算节点3空闲时,任务控制模块34周期性地向分派节点2发送任务请求消息。当分派节点2有等待运行的任务时,分派一个任务给计算节点;任务控制模块34接收到分派节点所分派的任务信息后,通知客户端传输模块33向数据服务器4请求该子任务的代码和参数数据。当该任务的代码和参数数据传输完成后,任务控制模块34将客户端存储模块32中该任务的初始数据传递给该任务,并启动该任务的计算。在任务计算过程中,任务控制模块34周期性地向分派节点报告任务的运行状况。在任务计算完成后,任务控制模块34将结果文件放入客户端存储模块32中,并将这些文件通过客户端传输模块33传输给数据服务器4;然后,恢复到空闲状态,并将任务完成状况和自身空闲状态报告给分派节点2。
客户端传输模块33接收任务控制模块34的数据传输命令,根据这些传输命令,并辅助客户端存储模块32,与数据服务器4进行数据传输:一方面它向数据服务器4发出数据请求,将相应的数据放入到客户端存储模块32中;另一方面,将任务的计算结果从客户端存储模块32中取出,然后传输到数据服务器4中。当数据传输完成后,客户端传输模块33将完成事件通知给任务控制模块34。
数据服务器4为工程提供数据备份功能;如图6所示,它主要由三个部分组成:(1)数据服务模块41;(2)服务端存储模块42;(2)服务端传输模块43。其功能与相互关系描述如下:
数据服务模块41提供统一的数据服务接口供计算节点3和客户机5调用,并结合服务端传输模块43和服务端存储模块42完成数据服务。当计算节点3或客户机5向数据服务器发出数据请求后,数据服务模块41向服务端传输模块43发出数据传输命令。当计算节点3或客户机5向数据服务器4提交数据时,数据服务模块41向服务端传输模块43发出接收数据命令。
服务端传输模块43为计算节点3、客户机5与数据服务器4之间的数据传输提供服务端传输功能。服务端传输模块43能够同时响应多个数据请求操作。当服务端传输模块43接收到数据服务模块41的数据接收命令后,它从服务端存储模块42找到请求所需要的数据,并将数据传输给计算节点3。当服务端传输模块43接收到数据服务模块41的数据接收命令后,它接收计算节点3的数据,并将数据放入到服务端存储模块42中。
服务端存储模块42将应用工程的数据在数据服务器的工作区间中进行存储管理;它结合Berkeley DB数据库,为数据服务模块41和服务端传输模块43提供本地存取服务。它利用一个文件资源池来备份存储用户及各计算节点的代码、参数以及结果数据。
数据服务器4与计算节点3的数据传输由数据传输协议FDTP完成,该协议由数据服务器的服务端传输模块43、服务端存储模块42、客户端传输模块33以及客户端存储模块32协作实现。如图7所示,数据服务器4作为服务器,计算节点3作为客户端。其中,数据服务器4和计算节点3之间分别通过服务端传输模块43和客户端传输模块33,建立一个消息通道和数据通道来传输消息和数据文件,并通过服务端存储模块42和客户端存储模块32在本地对数据进行存储管理。
在数据传输过程中,按照如图8所示的数据流格式对传输数据进行格式化。一个文件流所对应的信息包括文件结构信息FSI、文件开始标志FBT、文件大小FS、文件数据FD和结束标志ET。其中,ET为文件结束标志或数据流结束标志,当传输的文件是请求数据中的最后一个文件时,ET为数据流结束标志ETT;若该文件不是请求数据中的最后一个文件,则ET为文件结束标志ETF,下一个文件流将以同样的流格式跟在ET后面。
附图9用有限状态机的形式说明了FDTP的数据传输过程。首先,每一次数据传输客户端、服务器都从空闲状态IDLE开始。客户端向服务器发送数据请求消息后,进入同步接收状态SYN_RECV;服务器在接收到请求消息后,验证消息的合法性以及正确性,并将验证结果作为同步消息SEND/SYN发送给客户机,进入同步发送状态SYN_SENT。若未通过验证,服务器将进入IDLE状态;客户端接收到同步出错消息后也进入IDLE状态,并将出错原因返回给用户,结束本次传输并准备下一次请求消息处理。若通过验证,服务器对数据通道初始化(PREPARE)后,进入开始传输状态BEGIN_TRANS;客户端在接收到同步信息后,对客户端数据通道初始化,并进入开始传输状态BEGIN_TRANS。
客户端、服务器进入开始传输状态后,一方为数据发送者,相应的另一方为数据接收者,双方进行数据传输(S/R)。在传输完一个数据文件后,服务器进入状态SYN_SENT,并探知此次传输成功与否,将传输结果作为同步信息发送给客户端;相应地客户端进入状态SYN_RECV,并接收同步信息。若传输失败,客户端、服务器分别从状态SYN_SENT和SYN_RECV进入IDLE,根据失败原因清空数据通道并准备下一次消息处理。若传输成功,客户端和服务器完成一次传输,并进入状态FINISH_ONCE。
进入状态FINISH_ONCE后,通信双方检查所请求数据是否传输完毕。若还有文件未传输,通信双方都将进入BEGIN_TRANS状态,开始下一个文件的传输过程。若所传文件全部传输完毕,服务器、客户端将分别进入SYN_SENT和SYN_RECV状态,且服务器将表示完成的验证信息作为同步消息发送给客户端。在接收到同步消息后,客户端将与服务器将一道进入IDLE状态,结束本次数据请求消息的处理,并准备处理下一个数据请求消息。
Claims (5)
1、一种基于对等网络的高性能计算***,其特征在于:该***包括监控节点(1),分派节点(2.1、2.3、...、2.N,N为正整数),计算节点(3.1、3.3、...、3.K,K为正整数),数据服务器(4)和客户机(5),其中,
监控节点(1)接收客户机(5)提交的应用工程描述文件,并将应用中的任务以任务簇的方式重定向给各个分派节点(2.1、2.3、...、2.N);在应用的计算过程中,监控节点(1)监控分派节点(2.1、2.3、...、2.N)的状态以及各个任务簇中任务的完成状况;
分派节点(2.1、2.3、...、2.N)将所接收到的任务簇分派给所属的各个计算节点,监控管理域内各个计算节点的状态以及所分派任务的完成状况,并将任务的完成状况向监控节点(1)报告;
计算节点(3.1、3.3、...、3.K)附属于各个分派节点,并由所附属的分派节点进行监控和任务分派管理;当某一计算节点接收到分派节点所分派的计算任务后,它从数据服务器(4)获取该计算任务的代码和参数数据,然后启动该任务的运行;在计算过程中,计算节点定时向所属的分派节点报告任务完成状况,在任务计算完成后,计算节点将该任务的结果上传给数据服务器(4);其中,计算节点包括注册模块(31)、客户端存储模块(32)、客户端传输模块(33)和任务控制模块(34);
客户端存储模块(32)给计算节点提供工作区间,并对客户端传输模块(33)提供数据支持;它对每个任务的程序、数据以及结果都以文件方式进行管理,并为每个工程建立临时工作目录;
注册模块(31)用于管理计算节点的加入和初始化工作,以及存活状态报告;当计算节点要加入***时,注册模块(31)向监控节点(1)发出加入请求,然后根据监控节点(1)返回的分派节点的地址信息,向该分派节点发出加入请求;当该分派节点返回加入成功的应答消息后,注册模块(31)初始化任务控制模块(34);在计算节点的运行过程中,注册模块(31)周期性地向所属的分派节点报告存活状态;若它不能与所属的分派节点通信,则重新向监控节点(1)发出加入请求,进而加入一个新的分派节点;
任务控制模块(34)用于管理计算节点上任务的接收和运行,以及运行状态与结果的报告;当计算节点空闲时,任务控制模块(34)周期性地向分派节点发送任务请求消息;当分派节点有等待运行的任务时,分派一个任务给计算节点;任务控制模块(34)接收到分派节点所分派的任务信息后,通知客户端传输模块(33)向数据服务器(4)请求子任务的代码和参数数据;当该任务的代码和参数数据传输完成后,任务控制模块(34)将客户端存储模块(32)中该任务的初始数据传递给该任务,并启动该任务的计算;在任务计算过程中,任务控制模块(34)周期性地向分派节点报告任务的运行状况;在任务计算完成后,任务控制模块(34)将结果文件放入客户端存储模块(32)中,并将这些文件通过客户端传输模块(33)传输给数据服务器(4);然后,恢复到空闲状态,并将任务完成状况和自身空闲状态报告给分派节点;
客户端传输模块(33)接收任务控制模块(34)的数据传输命令,根据这些数据传输命令,并辅助客户端存储模块(32),与数据服务器(4)进行数据传输,当数据传输完成后,客户端传输模块(33)将完成事件通知给任务控制模块(34);
数据服务器(4)在应用工程提交阶段接收客户机(5)提交的初始工程数据;在应用工程计算阶段,它处理计算节点的数据请求,传送子任务的代码及参数数据,并接收计算节点上传的子任务的结果数据;在子任务计算完成后,它接收客户机(5)的数据请求,将子任务结果数据传送给客户机(5);
客户机(5)向数据服务器(4)提交应用工程的初始数据后,形成一个应用工程描述文件,并将该应用工程描述文件提交给监控节点(1),在应用工程的子任务计算完成后,客户机(5)从数据服务器(4)获取子任务的结果,并通知主任务对这些结果进行汇总处理,得到该应用工程的最终结果。
2、根据权利要求1所述的高性能计算***,其特征在于:客户机(5)包括工程提交模块(51)和主任务运行模块(52);
工程提交模块(51)用于提交通过软件开发包编程后的应用工程;工程提交模块(51)将应用工程的初始数据提交给数据服务器(4),并形成一个应用工程描述文件,并将该应用工程描述文件提交给监控节点(1),将应用工程提交完成事件通知给主任务运行模块(52);
主任务运行模块(52)负责主任务的运行;在收到工程提交模块(51)的应用工程提交完成事件后,将该应用工程的子任务分成任务簇,并依次向监控节点(1)申请启动这些任务簇;主任务运行模块(52)定期向监控节点(1)查询所申请任务簇内子任务的完成状态;若在用户设定的最长运行时间内子任务没有完成,则将这些未完成的子任务重新组装成任务簇,再次向监控节点(1)申请启动这些任务簇;当所有子任务均完成后,主任务运行模块(52)向数据服务器(4)请求这些子任务的结果数据;在接收到数据服务器(4)传送过来的子任务结果数据后,通知主任务进一步对这些结果进行汇总处理,并得到该应用工程的最终结果。
3、根据权利要求1或2所述的高性能计算***,其特征在于:监控节点(1)包括新节点管理模块(11)、分派节点表(12)、分派节点监控模块(13)、工程管理模块(14)和工程表(15);
分派节点表(12)用于存储***中所存在的分派节点信息,工程表(15)用于记录所有提交给***的应用工程描述文件,以及参与该应用工程的分派节点信息,并由工程管理模块(14)管理维护;
新节点管理模块(11)利用分派节点表(12)对新加入的节点进行管理;当新加入的节点是一个新的分派节点时,新节点管理模块(11)为该节点初始化一个分派节点信息单元,并将该信息单元放入分派节点表(12)中,然后通知该节点加入***成功;若新加入节点是一个新的计算节点时,新节点管理模块(11)将新加入的节点分配给负载最重的分派节点;新节点管理模块(11)首先从分派节点表(12)中选择一个负载最重的分派节点;然后,将这个负载最重的分派节点地址信息告诉给新加入的计算节点,让该新节点向这个分派节点发送加入请求,并加入到它的工作组中;
分派节点监控模块(13)根据分派节点表(12)监控***中分派节点的状态,接收该分派节点的状态报告消息,并根据该消息更新分派节点表(12)中相应分派节点信息单元的任务簇完成状态和节点存活时间;
分派节点监控模块(13)定期轮询分派节点表(12)中每个分派节点的存活时间;若一个分派节点在预定的轮询周期内没有更新存活时间,分派节点监控模块(13)认为该分派节点已经退出***,并删除该分派节点在分派节点表(12)中的信息单元,然后通知工程管理模块(14)将该分派节点中未完成的任务簇重定向给另外一个负载最轻的分派节点;
工程管理模块(14)用于管理应用工程中任务簇的启动运行;在接收到客户机(5)提交的应用工程描述文件后,工程管理模块(14)为该应用工程初始化一个工程表信息单元,并将该信息单元放入到工程表(15)中;在接收到客户机的任务簇启动请求后,工程管理模块(14)在分派节点表(12)中选取一个负载最轻的分派节点,将该任务簇重定向给这个分派节点,并将分派节点的地址信息放入到工程表(15)对应的信息单元中;在收到客户机的任务簇状态查询信息后,工程管理模块(14)根据工程表(15)得到该任务簇所分派的分派节点,然后从分派节点表(12)中得到对应分派节点的任务簇完成状况,并将该结果返回给客户机;在运行过程中收到分派节点监控模块(13)关于分派节点死亡的消息事件后,工程管理模块(14)从分派节点表(12)中再次选择一个负载最轻的分派节点,并将死亡分派节点未完成的任务簇重定向给它;然后,工程管理模块(14)将工程表(15)中对应任务簇的分派节点信息更新为新的分派节点信息。
4、根据权利要求1或2所述的高性能计算***,其特征在于:所述分派节点包括分派节点启动模块(21)、计算节点表(22)、计算节点管理模块(23)、任务管理模块(24)、初始任务队列(25)、等待任务队列(26)、运行任务队列(27)和出错任务队列(28);
计算节点表(22)用于记录分派节点内的计算节点信息;初始任务队列(25)用于保存初始任务信息,等待任务队列(26)用于保存当前等待分派的任务信息;运行任务队列(27)用于保存已分派给计算节点的任务信息;出错任务队列(28)用于保存出错的任务信息;
分派节点启动模块(21)在分派节点要加入***时向监控节点(1)发出加入请求,接收到加入成功应答之后,分派节点启动模块(21)分别初始化计算节点管理模块(23)和任务管理模块(24);
计算节点管理模块(23)用于管理新计算节点的加入,并监控计算节点表(22)中计算节点的状态;
任务管理模块(24)用于管理监控节点重定向给它的任务簇中的任务,并对初始任务队列(25)、等待任务队列(26)、运行任务队列(27)和出错任务队列(28)进行管理维护。
5、根据权利要求1或2所述的高性能计算***,其特征在于:数据服务器(4)包括数据服务模块(41)、服务端存储模块(42)、服务端传输模块(43);
数据服务模块(41)提供统一的数据服务接口供计算节点(3)和客户机(5)调用,并结合服务端传输模块(43)和服务端存储模块(42)完成数据传输服务;当计算节点(3)或客户机(5)向数据服务器的发出数据请求后,数据服务模块(41)向服务端传输模块(43)发出数据传输命令;当计算节点(3)或客户机(5)向数据服务器(4)提交数据时,数据服务模块(41)向服务端传输模块(43)发出接收数据命令;
服务端传输模块(43)为计算节点(3)、客户机5与数据服务器(4)之间的数据传输提供服务端传输功能;服务端传输模块(43)能够同时响应多个数据请求操作;当服务端传输模块(43)接收到数据服务模块(41)的数据接收命令后,它从服务端存储模块(42)找到请求所需要的数据,并将数据传输给计算节点(2);当服务端传输模块(43)接收到数据服务模块(41)的数据接收命令后,它接收计算节点(3)的数据,并将数据放入到服务端存储模块(42)中;
服务端存储模块(42)将应用工程的数据在数据服务器的工作区间中进行存储管理;为数据服务模块(41)和服务端传输模块(43)提供本地存取服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100522694A CN100547973C (zh) | 2007-05-23 | 2007-05-23 | 一种基于对等网络的高性能计算*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100522694A CN100547973C (zh) | 2007-05-23 | 2007-05-23 | 一种基于对等网络的高性能计算*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101072133A CN101072133A (zh) | 2007-11-14 |
CN100547973C true CN100547973C (zh) | 2009-10-07 |
Family
ID=38899134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100522694A Expired - Fee Related CN100547973C (zh) | 2007-05-23 | 2007-05-23 | 一种基于对等网络的高性能计算*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100547973C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677994A (zh) * | 2012-09-19 | 2014-03-26 | ***股份有限公司 | 分布式数据处理***、设备及方法 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8191072B2 (en) * | 2008-12-22 | 2012-05-29 | International Business Machines Corporation | System and method for shifting workloads across platform in a hybrid system |
US9043401B2 (en) * | 2009-10-08 | 2015-05-26 | Ebay Inc. | Systems and methods to process a request received at an application program interface |
CN102201929B (zh) * | 2010-03-23 | 2015-01-28 | 中兴通讯股份有限公司 | 网络管理方法及网络管理*** |
CN101902497B (zh) * | 2010-05-14 | 2013-01-23 | 翁时锋 | 基于云计算的互联网信息监测***及方法 |
CN102542379B (zh) * | 2010-12-20 | 2015-03-11 | ***通信集团公司 | 一种计划任务处理方法、***及装置 |
CN102904919B (zh) * | 2011-07-29 | 2015-05-20 | 国际商业机器公司 | 流处理方法和实现流处理的分布式*** |
CN103108000B (zh) * | 2011-11-09 | 2016-08-10 | ***通信集团公司 | 用于任务同步的方法和***及***中的主节点和工作节点 |
CN102609316B (zh) * | 2012-02-07 | 2014-08-27 | 中山爱科数字科技股份有限公司 | 一种网络计算资源的管理***及方法 |
CN103095598B (zh) * | 2012-12-17 | 2015-07-29 | 华中科技大学 | 一种大规模集群环境下的监控数据聚合方法 |
CN103197920B (zh) * | 2013-03-25 | 2016-08-03 | 华为技术有限公司 | 一种并发控制方法、控制节点及*** |
CN103236949B (zh) * | 2013-04-27 | 2016-12-28 | 北京搜狐新媒体信息技术有限公司 | 一种服务器集群的监控方法、装置与*** |
CN103617062B (zh) * | 2013-12-05 | 2016-09-07 | 山东大学 | 一种柔性的渲染集群动态部署***与方法 |
CN104978155B (zh) | 2014-04-01 | 2018-12-28 | 腾讯科技(北京)有限公司 | 信息显示量的分配方法及装置 |
CN104243579A (zh) * | 2014-09-12 | 2014-12-24 | 清华大学 | 应用于水利施工现场的计算节点的控制方法及*** |
CN104408552A (zh) * | 2014-11-13 | 2015-03-11 | 华为技术有限公司 | 任务协作处理方法、装置和*** |
CN104536809B (zh) * | 2014-11-26 | 2018-01-19 | 上海瀚之友信息技术服务有限公司 | 一种基于客户端、服务器***的分布式定时任务调度*** |
CN106095550A (zh) * | 2016-06-07 | 2016-11-09 | 百度在线网络技术(北京)有限公司 | 一种计算任务调度方法和装置 |
CN106357427A (zh) * | 2016-08-26 | 2017-01-25 | 广西小草信息产业有限责任公司 | 一种故障计算机的处理方法及处理*** |
CN108055321B (zh) * | 2017-12-11 | 2021-06-11 | 中国电子科技集团公司第二十八研究所 | 基于国产化平台的高可靠集群构建方法 |
CN109871269A (zh) * | 2019-01-15 | 2019-06-11 | 中国人民解放军63921部队 | 一种遥感数据处理方法、***、电子设备和介质 |
CN111625344B (zh) * | 2019-02-27 | 2023-07-04 | 阿里巴巴集团控股有限公司 | 应用***中的资源调度***、方法及装置 |
CN111427551A (zh) * | 2020-02-14 | 2020-07-17 | 深圳市商汤科技有限公司 | 编程平台的用户代码运行方法及平台、设备、存储介质 |
CN111624601A (zh) * | 2020-06-08 | 2020-09-04 | 中国科学院空天信息创新研究院 | 一种sar实时成像处理方法及装置 |
-
2007
- 2007-05-23 CN CNB2007100522694A patent/CN100547973C/zh not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
一种基于对等网络高性能计算的任务调度算法. 韩宗芬,江锋,章勤,徐胜超.华中科技大学学报,第35卷第3期. 2007 |
一种基于对等网络高性能计算的任务调度算法. 韩宗芬,江锋,章勤,徐胜超.华中科技大学学报,第35卷第3期. 2007 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677994A (zh) * | 2012-09-19 | 2014-03-26 | ***股份有限公司 | 分布式数据处理***、设备及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101072133A (zh) | 2007-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100547973C (zh) | 一种基于对等网络的高性能计算*** | |
Fu et al. | A fair comparison of message queuing systems | |
US7805407B1 (en) | System and method for dynamic configuration of replicated database servers | |
US6748447B1 (en) | Method and apparatus for scalable distribution of information in a distributed network | |
CN102291467B (zh) | 一种适应私有云环境的通信平台和通信方法 | |
CN102571686B (zh) | 云会议***的实现方法 | |
US7451221B2 (en) | Method and apparatus for election of group leaders in a distributed network | |
CN107172187B (zh) | 一种负载均衡***和方法 | |
US20150003296A1 (en) | System and method for providing p2p based reconfigurable computing and structured data distribution | |
CN105607954A (zh) | 一种有状态容器在线迁移的方法和装置 | |
CN104753817A (zh) | 一种云计算消息队列服务本地模拟方法和*** | |
CN105959347B (zh) | 一种基于p2p网络的全数字协同仿真***通信方法 | |
CN103324539A (zh) | 一种作业调度管理***及方法 | |
CN101815013B (zh) | 一种基于Ajax和Web服务技术的卫星应用***运行监控方法 | |
CN112100265A (zh) | 面向大数据架构与区块链的多源数据处理方法及装置 | |
CN102523104A (zh) | 一种网络化仿真运行支撑***及方法 | |
CN103716397B (zh) | 一种面向服务仿真时钟推进方法 | |
CN107807983A (zh) | 一种支持大规模动态图数据查询的并行处理框架及设计方法 | |
CN104852991A (zh) | 分布式推送服务器***及应用该***的数据推送方法 | |
CN115115329A (zh) | 一种面向智能生产线的制造中间件及云制造架构 | |
CN114328432A (zh) | 一种大数据联邦学习处理方法及*** | |
CN109729115A (zh) | 实现分布式计算的方法、装置、代理服务器、终端设备 | |
CN110213156A (zh) | 一种跨中心群组即时通信方法和*** | |
CN110011984B (zh) | 一种基于rest和rpc的分布式集群***及方法 | |
Kessler et al. | A network communication protocol for distributed virtual environment systems |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091007 Termination date: 20120523 |