欢迎来到学术参考网

基于网格计算的协同处理平台

发布时间:2015-12-18 11:53

摘 要:随着计算机网络和应用范围的发展,用户对计算机计算能力的要求越来越高。本文以密码破解为例设计制作一种基于网格计算的协同处理平台,能够充分利用大量计算机的闲置资源来构建一台虚拟的超级计算机用于对用户的数据进行处理。本协同处理平台能够根据用户的需求来处理任何能够通过分治策略算法解决的问题,通过网格计算的方式来减少数据处理的开销,能够在不影响用户使用计算机的前提下充分利用器计算资源,从而有效地节约计算机资源和其它资源。

关键词:网格计算;协同处理;超级计算机

1.前言

  随着计算机网络和应用范围的发展,大量用户需要一台具备强劲的处理能力的计算机,比如在信息安全领域的密码破解、医药、航天、金融等领域都需要这种计算机。但是真正的超级计算机使用成本高,计算能力也有限,与之相反的是随着计算机硬件的发展,大量普通用户的计算机的CPU利用率明显降低。如对md5使用暴力破解即使是目前的超级计算机也是几乎没有意义的,而目前的md5破解的方法主要是利用大量的服务器将密码字典中所有原文利用md5算法加密,将原文和对应的密文存入数据库中来查询得到解密结果。这种方法从理论上是可行的,但是大量的数据需要占用的存储空间以及所有服务器仅用于密码破解使得成本过高。为了降低破解成本可以利用本文介绍的协同处理平台,如果客户机数量级达到了百万台以上,利用他们所贡献出的闲置资源所能够得到的计算能力甚至能够在一定程度上超越一台超级计算机的能力,但是他们所耗费的资源却是一台超级计算机所无法比拟的。除了能够将本平台用于密码破解,还能够将其运用到其它任何能够利用分治策略解决的问题中。

2.基本原理

  本协作平台所利用的原理是,在服务端软件上上传必要的数据和程序接口,包括需要处理的数据;服务器将这些数据分片分配和整合客户机计算结果的程序接口;客户机接收、处理、上述数据片段和返回处理结果的程序接口。然后服务端开启协作功能等待客户机登录,客户机登录协同处理平台并下载相关数据和处理所需的程序后断开与服务器的连接,此时服务器记录客户机信息和相关数据片标识,用户通过离线的方式处理完数据后将服务器要求的数据传回并请求下一个数据片进行处理。本处理平台的服务端负责维护协同处理平台中需要处理的数据、客户机信息、破解中间结果以及相关客户机和服务器在破解过程中所需要的程序接口文件,为了提高处理的速度服务器通过维护一个线性的队列来决定处理数据的任务。服务器在协同处理开始时将被处理的数据按照用户提供的处理数据的程序分为若干个合理的数据片存储在数据库中,当有客户机请求处理数据时,服务器从当前未分配的数据片中选择一个数据片发送给客户机,如果该客户机是第一次参与处理这个任务则将处理数据所需的程序接口文件发送给客户机。客户端程序在客户机拿到数据或程序接口文件后,调用程序接口文件对数据片进行处理,如果数据没有处理完就需要退出系统,则将当前处理的进度和相关信息存储到客户机的一个文件中,下次启动协同处理平台时继续处理未处理完的数据。协作平台的活动图如图1:

   



3.系统设计

  整个系统分为服务端和客户端两大部分,服务端负责维护协同处理平台的数据和程序接口文件以及数据片的产生、分发和结果的收集、汇总;客户端负责具体的数据的下载、离线处理、上传。其中服务端分为上传任务模块、分配任务模块、获取结果模块三大模块;客户端分为下载任务模块、数据请求模块、任务处理模块、结果上传模块四大模块,为了提高软件的复用性部分模块还设子模块。本协同处理平台的用例图如图2:

  

3.1上传任务模块

  在上传任务模块中,用户将需要处理的数据和对这些数据进行分片、分发、处理、结果收集、结果汇总的程序接口文件上传到协同处理平台中。其中对数据的所有操作均由用户提供的程序接口文件完成,系统按照队列的方式来调用当前任务的数据处理程序接口。任务上传后,系统立即按照服务端程序接口文件将数据分成若干个有规律的数据片段存储在数据库中,这些片段将供分配任务模块分配给请求处理数据的客户端。

3.2分配任务模块

  在分配任务模块中,有一个服务端程序接口文件定义的线程一直在运行等待客户端的请求,直到所有任务均分配到客户端才结束线程。当有客户端请求任务处理时,协同处理平台核心在与客户端进行通信后判断客户端此次任务处理是否需要处理数据的程序接口文件,如果需要则将其发送给客户端,否则直接将请求转发给服务端分配任务线程。分配任务线程收到请求后在数据库中找到一块未处理或者其它用户处理超时的数据片按照一定的规则发送给客户端,发送后自动进入下一次等待发送状态。

3.3获取结果模块

  和分配任务模块相同的是,在获取结果模块中也有一个服务端程序接口文件定义的线程一直运行等待客户端将自己的处理结果返回给服务端,直到所有数据片的处理结果都被返回到服务端后这个线程才停止运行。获取结果线程启动后一直等待客户端发送处理结果,当该线程收到客户端的处理结果时,先将其结果存入数据库中对应的记录中并将该记录的处理进程设置为已完成。最后线程根据客户端的请求信息决定是否将请求信息转发给分配任务模块。当获取结果线程结束时,意味着所有数据片均已被处理完。这时,结果汇总方法被调用,该方法将所有结果汇总计算得到任务的最终计算结果并存储在任务信息中。

3.4下载任务模块

  当用户启动客户端时,通过向协同处理平台发出参与处理命令,客户端核心程序和服务端核心程序通信交流,客户端通过通信判断本次运算需要向客户端请求的任务内容。在收到服务端发送的数据片、数据处理程序接口文件后,下载任务模块结束,并将控制权交给任务处理模块。下载任务模块只负责和服务端进行通信确定需要下载的内容,具体下载任务由其子模块下载数据处理程序接口模块和下载数据模块完成,这两个子模块的功能是向服务端请求数据处理程序接口文件和数据片。

3.5 数据请求模块

  当用户处理完服务端分配的数据片后可以继续向客户端请求数据片,此时就可以只想服务端请求数据片了,而不用再次请求数据处理程序接口文件了。数据请求模块的功能就是只向服务端请求所需的数据片,其具体请求和下载任务有下载数据子模块完 成,本模块中的下载数据子模块和下载任务模块中的下载数据子模块是同一个模块。

3.6 任务处理模块

  当客户端下载了任务或数据后需要利用下载的数据处理程序接口来对数据进行处理,在任务处理模块中,客户端核心程序通过调用数据处理程序接口的solve()方法来对数据进行处理。模块开始运行时首先检测是否有遗留数据需要处理,如果没有则开始处理新数据,否则先载入上次处理的信息继续进行处理。在处理过程中,用户可以根据自身计算机资源的闲置情况来暂停和启动协同处理,当用户暂停或中途退出,该模块将会先将当前处理进程存储到客户端中,如果用户将数据处理完则立即调用结果上传模块。

3.7结果上传模块

  任务处理模块在数据处理完成后将处理结果交给该模块上传至服务端,结果上传完成后,本模块将系统控制权交给数据请求模块以继续进行数据处理。

3.8系统接口规范

  由于本协同处理平台核心部分值负责调用和维护平台中所需要的数据和程序接口文件,不同任务对数据的分片方法甚至数据本身的规律不同,处理数据的方法也不同,而对数据本身的处理主要由用户上传的程序接口文件来完成。所以在平台的设计中,服务端和客户端都应该定义一个统一的接口来调用所有对数据进行操作的方法以达到平台核心部分统一调度任务处理的目的。

  各个任务对数据片的存储方法是不一样的,但是使用本系统进行协同处理的前提条件是该问题一定能够采用分治策略来进行求解。基于这点所有能够在该平台中处理的任务一定能够将其数据按照一定的规则分割成若干个起始片段,所以对于数据片段的存储方式平台给出了参考方法,即将各个数据片的分片编号、起止数据、递增运算式、运算结果和处理进程存储在数据库中。在客户端中由于需要存储的数据较少,将所有的数据存入一个临时文件中,供协同处理平台使用。

  在系统的核心部分中将上传和下载的数据处理接口文件存放在固定的位置,以便于这些文件在核心模块中被实例化和调用。用户在编写数据处理接口文件时需要实现服务端和客户端定义的接口的方法,在系统中,核心部分采用多态的方式来对用户编写的程序类进行应用和调用。

4.小结

   通过对本文设计的协同处理平台的使用,将大大地提高普通计算机计算资源的利用率,同时也让大数据处理和负责计算任务的处理方式有了新的选择,改变了以往纯粹使用超级计算机或者专门服务器集群来进行处理的方式,降低了数据计算的处理成本。甚至可以通过对数据片加密后再交由客户端处理的方式来计算一些军事、商业等机密数据

参考文献:

[1]许俊,网格计算与e-Learning Grid:体系结构·关键技术·示范应用,北京科技出版社

[2]孟纯城,分布式JAVA2数据库系统开发指南,北京,清华大学出版

上一篇:光纤收发器应用的现状及展望

下一篇:VPN的解决方案