基于移动端实现分布式计算的方法及其***
技术领域
本发明涉及计算机数据处理技术领域,具体涉及一种基于移动端实现分布式计算的方法及其***。
背景技术
在计算机科学中,分布式计算主要研究分散***如何进行计算,分散***是一组电子计算机,通过计算机网络相互链接与通信后形成的***,把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,在上传运算结果后,将结果统一合并得出数据结论的科学。
传统的分布式计算技术主要在云服务器和PC机上应用,这种技术无法使用海量移动端设备的计算资源,导致计算处理缓慢,资源的占用率大,成本高。
发明内容
基于此,针对上述问题,有必要提出一种利用移动端的闲置计算资源进行分布式计算,提高资源利用率、数据计算能力和资源储量,且减少功耗,降低成本的基于移动端实现分布式计算的方法及其***。
本发明提供一种基于移动端实现分布式计算的方法,其技术方案如下:
一种基于移动端实现分布式计算的方法,包括以下步骤:
a、由服务器端获取任务发起方所发送的任务;
b、根据任务类型和任务内容将任务拆分成多个任务块,并将拆分后的多个任务块分发至相应移动端;
c、移动端接收到任务块后,执行计算操作;
d、将计算后的任务块结果返回至服务器端;
e、记录每个移动端完成的任务块计算量;
f、验证任务块,并进行整合后发送至任务发起方。
在本技术方案中,服务器的搭建采用PHP,MySQL语言,基于HTTPS通讯协议,服务器端的算法基于C++、Python语言,采用公共资源分布式计算架构;在服务器端获取到任务时,基于服务器端的算法对任务进行拆分,并根据贡献证明分发到相应移动端的app软件上,移动端的app软件使用Java、C++语言,实现任务展示、移动端设备基本设置(如电量、CPU占用率、是否连接WiFi等)、任务完成度展示、计算贡献值展示等功能,然后在进行任务块计算后将结果返回到服务器端进行验证、整合,最终返回给任务发起方,并记录每个移动端所完成的任务块计算量;实现任务的分布式计算,由于直接调用移动设备用户的闲置计算资源,不需要硬件购置投入,而且移动端设备维护由设备用户自己完成,不需要技术使用方统一投入,降低了成本,能够充分应用已有移动端设备的闲置计算资源,属于完全资源再利用技术,从无到有创造计算价值;且移动端设备的存量和增量市场远远大于服务器和PC计算机的数量,使得具有更大的资源储量。
优选的,所述b包括以下步骤:
根据任务类型的不同,可采用按时序或按数据的方式进行任务拆分;
对拆分后的每个任务块进行复制,获得至少三个相同的任务块;
将同一任务块复制形成的至少三个相同任务块一一对应分配至不同的移动端。
在本技术方案中,对于不同类型的任务项目,采用按时序拆分和按数据拆分两种算法;同时,任务拆分必须符合“任务块可并行计算”的原则,在任务拆分成多个任务块后,基于容错设计,对于每个任务块进行复制,最终产生至少三个相同的任务块,并将分配给不同的移动端设备,使得后续对相同任务块的计算结果可进行比对验证,提高了计算的精确度,避免出现数据错误。
优选的,所述步骤b中将拆分后的任务块分发至移动端,以及所述步骤d中将计算后的任务块结果返回至服务器端,均采用HTTPS加密和断点续传技术进行处理。采用HTTPS加密、断点续传技术,基于设备硬件参数(CPU、GPU种类和性能等)进行任务块的合理分发,并在任务块计算完成后,采取同样的技术将移动端已完成计算的任务块返回服务器端;充分保证了任务数据在传输过程中的安全性,避免出现掉包和窃取等情况。
优选的,所述步骤d包括以下步骤:
判断同一任务块所复制的至少三个相同任务块是否在预定时间范围内有半数以上返回了服务器端,如果是,则接收并进行验证;如果否,则认定计算无效,将未返回的任务块重新发送至新的移动端进行计算。
在进行验证前,首先要判断是否具有半数以上成功返回服务器端的相同任务块,该相同任务块是基于分发的同一任务块所复制出的,并分配到不同移动端进行计算处理,因此,如果返回了至少两个,就可以进行比对判断计算结果是否准确,如果没有返回或者只返回了一个,则认定未返回的任务块的计算无效,将该任务块重新发送至新的移动端进行计算,再重新判断是否返回了半数以上相同的任务块,这个过程持续进行,直到有半数以上相同任务块返回成功为止。
优选的,所述步骤e包括以下步骤:
对返回的半数以上相同任务块进行比对验证,判断计算出的任务块结果是否相同,如果是,则验证通过;反之,则验证不通过;
将验证通过的任务块结果整合,并返回至任务发起方。
在本技术方案中,使用C++、Python语言,对两个相同任务块的返回结果进行比对(容错设计中的至少三个相同任务块计算之后,至少要有两个成功返回服务器并进行比对),任务块计算结果相同则结果验证通过,然后再将任务块结果整合,并返回给任务发起方;而且在整个分布式计算流程结束后,针对同样任务,以移动端完成任务块计算的时间为基准,记录每台移动端对任务的贡献值,并以贡献值获得此后的任务分配量。
本发明还提供一种基于移动端实现分布式计算的***,其技术方案如下:
一种基于移动端实现分布式计算的***,包括任务获取模块、任务拆分模块、任务分发模块、任务块计算模块、结果返回模块、贡献证明模块、结果验证模块和结果整合模块,其中:
任务获取模块,用于获取任务发起方所发送的任务;
任务拆分模块,用于根据任务类型和任务内容将任务拆分成多个任务块;
任务分发模块,用于将拆分后的多个任务块分发至相应移动端;
任务块计算模块,用于在移动端接收到任务块后,执行计算操作;
结果返回模块,用于将计算后的任务块结果返回至服务器端;
贡献证明模块,用于记录每个移动端完成的任务块计算量;
结果验证模块,用于验证任务块结果的正确性;
结果整合模块,用于对验证成功后的任务块进行整合,并发送至任务发起方。
优选的,所述任务拆分模块包括拆分子模块、复制子模块和分配子模块,其中:
拆分子模块,根据任务类型的不同,采用按时序或按数据的方式进行任务拆分;
复制子模块,用于对拆分后的每个任务块进行复制,获得至少三个相同的任务块;
分配子模块,用于将至少三个相同的任务块一一对应分配至不同的移动端。
优选的,还包括加密处理模块,用于对拆分后的任务块分发至移动端,以及对计算后的任务块结果返回至服务器端进行处理。
优选的,所述结果返回模块包括任务块判断子模块,用于判断同一任务块所复制的至少三个相同任务块是否在预定时间范围内有半数以上返回了服务器端。
优选的,所述结果验证模块包括比对判断子模块,用于对返回的半数以上相同任务块进行比对验证,判断计算出的任务块结果是否相同。
本发明的有益效果是:
1、本发明实现了基于移动端的分布式计算技术,相比传统的分布式计算技术,具有更低的成本、更大的资源储量和更加环保等特点。
2、本发明由于直接调用移动端的闲置计算资源,不需要硬件购置投入,而且移动端维护由用户自己完成,不需要技术使用方统一投入,降低了成本,能够充分应用已有移动端设备的闲置计算资源,属于完全资源再利用技术,从无到有创造计算价值。
3、移动端的存量和增量市场远远大于服务器端和PC端的数量,且移动端计算能力已逐步接近传统计算设备,因此具有更大的资源储量。
4、本发明基于容错设计,对于每个任务块进行复制,最终产生至少三个相同的任务块,并将分配给不同的移动端设备,使得后续对相同任务块的计算结果可进行比对验证,提高了计算的精确度,避免出现数据错误。
5、采用HTTPS加密和断点续传技术进行数据处理,基于设备硬件参数(CPU、GPU种类和性能等)进行任务块的合理分发,并在任务块计算完成后,采取同样的技术将移动端已完成计算的任务块返回服务器端;充分保证了任务数据在传输过程中的安全性,避免出现掉包和窃取等情况。
附图说明
图1是本发明实施例所述基于移动端实现分布式计算的方法流程图;
图2是本发明实施例所述基于移动端实现分布式计算的***原理框图;
图3是本发明实施例所述具体实现分布式计算的过程解析图。
附图标记说明:
10-任务获取模块;20-任务拆分模块;201-拆分子模块;202-复制子模块;203-分配子模块;30-任务分发模块;40-任务块计算模块;50-结果返回模块;501-任务块判断子模块;60-贡献证明模块;70-结果验证模块;701-比对判断子模块;80-结果整合模块;90-加密处理模块。
具体实施方式
下面结合附图对本发明的实施例进行详细说明。
实施例1
如图1所示,一种基于移动端实现分布式计算的方法,包括以下步骤:
S10、由服务器端获取任务发起方所发送的任务;
S20、根据任务类型和任务内容将任务拆分成多个任务块,并将拆分后的多个任务块分发至相应移动端;
S30、移动端接收到任务块后,执行计算操作;
S40、将计算后的任务块结果返回至服务器端;
S50、记录每个移动端完成的任务块计算量;
S60、验证任务块,并进行整合后发送至任务发起方。
在本实施例中,服务器的搭建采用PHP,MySQL语言,基于HTTPS通讯协议,服务器端的算法基于C++、Python语言,采用公共资源分布式计算架构;在服务器端获取到任务时,基于服务器端的算法对任务进行拆分,并分发到移动端的app软件上,移动端的app软件使用Java、C++语言,实现任务展示、移动端设备基本设置(如电量、CPU占用率、是否连接WiFi等)、任务完成度展示、计算贡献值展示等功能,然后在进行任务块计算后将结果返回到服务器端进行验证、整合,最终返回给任务发起方;实现任务的分布式计算,由于直接调用移动设备用户的闲置计算资源,不需要硬件购置投入,而且移动端设备维护由设备用户自己完成,不需要技术使用方统一投入,降低了成本,能够充分应用已有移动端设备的闲置计算资源,属于完全资源再利用技术,从无到有创造计算价值;且移动端设备的存量和增量市场远远大于服务器和PC计算机的数量,使得具有更大的资源储量。
实施例2
本实施例在实施例1的基础上,所述S20包括以下步骤:
S201、根据任务类型的不同,可采用按时序或按数据的方式进行任务拆分;
S202、对拆分后的每个任务块进行复制,获得至少三个的任务块;
S203、将同一任务块复制形成的至少三个相同任务块一一对应分配至不同的移动端。
在本实施例中,对于不同类型的任务项目,采用按时序拆分和按数据拆分两种算法;同时,任务拆分必须符合“任务块可并行计算”的原则,在任务拆分成多个任务块后,基于容错设计,对于每个任务块进行复制,最终产生三个相同的任务块,并将分配给不同的移动端设备,使得后续对相同任务块的计算结果可进行比对验证,提高了计算的精确度,避免出现数据错误。
实施例3
本实施例在实施例1的基础上,所述步骤S20中将拆分后的任务块分发至移动端,以及所述步骤S40中将计算后的任务块结果返回至服务器端,均采用HTTPS加密和断点续传技术进行数据处理。采用HTTPS加密、断点续传技术,基于设备硬件参数(CPU、GPU种类和性能等)进行任务块的合理分发,并在任务块计算完成后,采取同样的技术将移动端已完成计算的任务块返回服务器端;充分保证了任务数据在传输过程中的安全性,避免出现掉包和窃取等情况。
实施例4
本实施例在实施例2的基础上,所述步骤S40包括以下步骤:
S401、判断同一任务块所复制的至少三个相同任务块是否在预定时间范围内有半数以上返回了服务器端,如果是,则接收并进行验证;
S402、如果否,则认定计算无效,将未返回的任务块重新发送至新的移动端进行计算。
在进行验证前,首先要判断是否具有半数以上成功返回服务器端的相同任务块,该相同任务块是基于分发的同一任务块所复制出的,并分配到不同移动端进行计算处理,因此,如果返回了半数以上,就可以进行比对判断计算结果是否准确。
实施例5
本实施例在实施例4的基础上,所述步骤S60包括以下步骤:
S601、对返回的半数以上相同任务块进行比对验证,判断计算出的任务块结果是否相同,如果是,则验证通过;反之,则验证不通过;
S602、将验证通过的任务块结果整合,并返回至任务发起方。
在本实施例中,使用C++、Python语言,对两个相同任务块的返回结果进行比对(容错设计中的三个相同任务块计算之后,至少要有两个成功返回服务器并进行比对),任务块计算结果相同则结果验证通过,然后再将任务块结果整合,并返回给任务发起方;而且在整个分布式计算流程结束后,针对同样任务,以移动端完成任务块计算的时间为基准,记录每台移动端对任务的贡献值,并以贡献值获得此后的任务分配量。
实施例6
本实施例为实施例1的方法,
如图2所示,一种基于移动端实现分布式计算的***,包括任务获取模块10、任务拆分模块20、任务分发模块30、任务块计算模块40、结果返回模块50、贡献证明模块60、结果验证模块70和结果整合模块80,其中:
任务获取模块10,用于获取任务发起方所发送的任务;
任务拆分模块20,用于根据任务类型和任务内容将任务拆分成多个任务块;
任务分发模块30,用于将拆分后的多个任务块分发至相应移动端;
任务块计算模块40,用于在移动端接收到任务块后,执行计算操作;
结果返回模块50,用于将计算后的任务块结果返回至服务器端;
贡献证明模块60,用于记录每个移动端完成的任务块计算量;
结果验证模块70,用于验证任务块结果的正确性;
结果整合模块80,用于对验证成功后的任务块进行整合,并发送至任务发起方。
实施例7
本实施例为实施例2的方法,其在实施例6的基础上,所述任务拆分模块20包括拆分子模块201、复制子模块202和分配子模块203,其中:
拆分子模块201,根据任务类型的不同,采用按时序或按数据的方式进行任务拆分;
复制子模块202,用于对拆分后的每个任务块进行复制,获得至少三个相同的任务块;
分配子模块203,用于将至少三个相同的任务块一一对应分配至不同的移动端。
实施例8
本实施例为实施例3的方法,其在实施例6的基础上,还包括加密处理模块90,用于对拆分后的任务块分发至移动端,以及对计算后的任务块结果返回至服务器端进行数据处理。
实施例9
本实施例为实施例4的方法,其在实施例7的基础上,所述结果返回模块50包括任务块判断子模块501,用于判断同一任务块所复制的至少三个相同任务块是否在预定时间范围内有半数以上返回了服务器端。
实施例10
本实施例为实施例5的方法,其在实施例9的基础上,所述结果验证模块70包括比对判断子模块701,用于对返回的半数以上相同任务块进行比对验证,判断计算出的任务块结果是否相同。
在具体实现过程中,如图3所示,服务器端采用CoT标准框架,可接收多个公司所发布的任务(项目),然后根据项目的类型,对其进行拆分、分发、验证及整合等等操作,分解成多个任务块(任务单元),并发送到多个移动端(如手机)的APP上执行解算(其中,有些手机APP可接收并计算数量更多的任务单元,有些手机APP只能接收并计算数量较少的任务单元,其取决于每个手机的硬件配置及每次对项目计算的贡献值),每个手机APP对相应的任务单元进行计算完成后,将结果值返回给服务器端,然后服务器端进行验证、整合后返回给相应的公司;充分应用已有移动端的闲置计算资源,使资源得到再利用,从无到有创造计算价值,而且移动端具有比服务器端和PC端更大的资源储量,可进行海量运算,且不占用数据空间,减少成本的同时提高计算效率。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。