分布式运算方法、装置、计算机设备及存储介质与流程

文档序号:16067499发布日期:2018-11-24 12:49阅读:218来源:国知局

本申请涉及分布式运算技术领域,尤其涉及一种分布式运算方法、装置、计算机设备及存储介质。

背景技术

目前在使用ignite分布式内存网格(ignite内存数据组织框架是一个高性能、集成化和分布式的内存计算和事务平台,用于大规模的数据集处理,比传统的基于磁盘或闪存的技术具有更高的性能,同时他还为应用和不同的数据源之间提供高性能、分布式内存中数据组织管理的功能)计算的时候,因为计算的速度非常快,远远高于写入数据库的速度,若采用kafka(kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据)作为消息队列,在消息量很大的情况下,处理效率比较低,不满足分布式计算的要求。



技术实现要素:

本申请提供了一种分布式运算方法、装置、计算机设备及存储介质,旨在解决现有技术中基于ignite分布式内存网格进行运算时若采用kafka作为消息队列,在消息量很大的情况下,分布式运算处理效率比较低的问题。

第一方面,本申请提供了一种分布式运算方法,其包括:

获取分布式内存网格的部署信息,根据部署信息对应设置分布式消息队列;

获取消息中间件所传输的运算任务,在分布式内存网格的对应运算节点中执行所述运算任务得到运算结果;

获取运算结果对应的运算逻辑,将运算结果存储至分布式内存网格中对应的待存储节点。

第二方面,本申请提供了一种分布式运算装置,其包括:

分布式消息队列建立单元,用于获取分布式内存网格的部署信息,根据部署信息对应设置分布式消息队列;

网格运算单元,用于获取消息中间件所传输的运算任务,在分布式内存网格的对应运算节点中执行所述运算任务得到运算结果;

运算结果存储单元,用于获取运算结果对应的运算逻辑,将运算结果存储至分布式内存网格中对应的待存储节点。

第三方面,本申请又提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请提供的任一项所述的分布式运算方法。

第四方面,本申请还提供了一种存储介质,其中所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行本申请提供的任一项所述的分布式运算方法。

本申请提供一种分布式运算方法、装置、计算机设备及存储介质。该方法通过获取分布式内存网格的部署信息,根据部署信息对应设置分布式消息队列;获取消息中间件所传输的运算任务,在分布式内存网格的对应运算节点中执行所述运算任务得到运算结果;获取运算结果对应的运算逻辑,将运算结果存储至分布式内存网格中对应的待存储节点。该方法利用分布式内存网格的局部缓存地址来形成分布式消息队列,每一分布式消息队列中所存储的数据足以满足当前网格的运算需求,无需从其他分布式消息队列中获取,提高了分布式运算的计算效率。

附图说明

为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种分布式运算方法的示意流程图;

图2是本申请实施例提供的一种分布式运算方法的子流程示意图;

图3为本申请实施例提供的一种分布式运算方法的另一示意流程图;

图4为本申请实施例提供的一种分布式运算方法的另一示意流程图;

图5为本申请实施例提供的一种分布式运算方法的另一示意流程图;

图6为本申请实施例提供的一种分布式运算装置的示意性框图;

图7为本申请实施例提供的一种分布式运算装置的子单元示意性框图;

图8为本申请实施例提供的一种分布式运算装置的另一示意性框图;

图9为本申请实施例提供的一种分布式运算装置的另一示意性框图;

图10为本申请实施例提供的一种分布式运算装置的另一示意性框图;

图11为本申请实施例提供的一种计算机设备的示意性框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1,图1是本申请实施例提供的一种分布式运算方法的示意流程图。该方法应用于服务器中。如图1所示,该方法包括步骤s101~s103。

s101、获取分布式内存网格的部署信息,根据部署信息对应设置分布式消息队列。

在本实施例中,分布式内存网格即ignite分布式内存网格,其与存储运算任务(例如业务员的佣金计算任务)的消息中间件连接。且ignite分布式内存网格可采用独立式ignite集群的部署方式,也可以采用嵌入式ignite集群的部署方式。

例如,若采用32台机器构建ignite分布式内存网格,可采用嵌入式ignite集群的部署方式。将每台机器的已有的应用的内部嵌入ignite集群相关的jar包,利用ignite的发现机制,自动建立集群。

更具体是,将每一台拿出一定空间的缓存作为分布式消息队列的存储空间,多台机器的缓存空间根据ignite的发现机制,自动建立集群,将多台机器的多个存储空间集群组合成一个分布式消息队列(可以简记为分布式mq,mq是messagequeue的缩写)。该分布式消息队列具有多个节点,每一节点上存储有与某一运算任务相关的所有数据。

在一实施例中,如图2所示,步骤s101包括:

s1011、根据加入分布式内存网格的联网终端,获取分布式内存网格的部署信息;

s1012、根据部署信息获取每一联网终端的缓存地址;

s1013、根据每一加入分布式内存网格的联网终端的缓存地址建立集群,得到分布式消息队列。

在本实施例中,分布式内存网格的部署信息表示有多少台联网终端加入了集群,且每一台联网终端的缓存地址也是在部署信息中记录。当每一台加入分布式内存网格的联网终端均提供一定空间的缓存地址,即可在联网终端建立集群后,由联网终端的缓存地址所建立集群作为分布式消息队列,而不是单独采用kafka作为消息队列。在数据量很大的情况下,分布式消息队列也能满足运算处理要求。

s102、获取消息中间件所传输的运算任务,在分布式内存网格的对应运算节点中执行所述运算任务得到运算结果。

例如,消息中间件上存储有多个运算任务,每一运算任务在消息中间件上已分配对应的ignite分布式内存网格,在该ignite分布式内存网格中的对应节点计算完成后,将运算结果存储至ignite分布式内存网格相应的节点上。也即该ignite分布式内存网格中大部分节点是用作佣金计算的运算节点,而少部分节点用作的缓存节点(即用作分布式消息队列,以存储有与某一运算任务相关的所有数据)。通过在分布式内存网格上既设置计算节点,也设置缓存节点,能把相关的数据都并置在一个节点上,这样就不会有数据移动,也就不会有网络和io的消耗。

在一实施例中,如图3所示,作为步骤s102的另一实施例包括:

s102a、获取消息中间件所传输的运算任务,解析运算任务的运算逻辑,根据运算逻辑定位运算任务对应的运算节点,并将运算任务传输至对应的运算节点,在分布式内存网格的对应运算节点中执行所述运算任务得到运算结果。

在本实施例中,将根据运算逻辑定位运算任务对应的运算节点,并将运算任务传输至对应的运算节点,即是每一运算任务为了实现快速计算,需将其分配至存储有所有相关数据的分布式消息队列对应的运算节点,通过该运算节点直接提取本地的分布式消息队列中的数据,快速运算得到运算结果,实现了运算任务的优化分配。

s103、获取运算结果对应的运算逻辑,将运算结果存储至分布式内存网格中对应的待存储节点。

例如,若采用32台机器构建ignite分布式内存网格,分别记为1号机器-32号机器,其中1号机器用于处理a1省份业务员的佣金计算任务,2号机器用于处理a2省份业务员的佣金计算任务,……,32号机器用于处理a32省份业务员的佣金计算任务。

当1号机器接收了消息中间件所传输的第一笔运算任务时,需在1号机器上进行运算,其运算结果可能在2号机器-32号机器中对应的某一节点或多个节点中得到应用而进行下一步计算,故此时需要根据该运算结果的运算逻辑,获取其待存储节点。也就是每一节点上都存储了与该节点对应的运算任务相关的所有数据,做到了数据的提前分布式部署,无需将后续的运算过程中,将运算结果从某一节点移动至另一节点,提高了分布式处理的效率。

即ignite网格直接利用它自己的缓存做分布式消息队列,这样可以把相关的数据都并置在一个节点上,这样就不会有数据移动,也就不会有网络和io的消耗。

在一实施例中,如图4所示,作为步骤s103的另一实施例包括:

s103a、获取运算结果对应的运算逻辑,根据运算逻辑定位运算任务定位运算结果的待存储节点,将运算结果存储至分布式内存网格中对应的待存储节点。

在本实施例中,获取运算结果对应的运算逻辑,根据运算逻辑定位运算任务定位运算结果的待存储节点,也即实现了将运算结果事先传输和部署到下一应用节点,而不是运算过程中再从该节点提取数据,有效的提高了运算效率。

在一实施例中,如图5所示,步骤s103之后还包括:

s104、若在预设的检测周期内分布式内存网格中未检测到消息中间件所传输的运算任务,将分布式内存网格的部署信息进行缓存,并对分布式消息队列的集群进行解散。

在本实施例中,若在预设的检测周期内(如12小时内)未检测到消息中间件所传输的运算任务,则表示该分布式消息队列的集群短时间内不会再次被使用,此时可以记录分布式内存网格的部署信息以便于后续重新组建集群,同时对分布式消息队列的集群进行解散,有效的节约系统资源。

可见,该方法利用分布式内存网格的局部缓存地址来形成分布式消息队列,每一分布式消息队列中所存储的数据足以满足当前网格的运算需求,无需从其他分布式消息队列中获取,提高了分布式运算的计算效率。

本申请实施例还提供一种分布式运算装置,该分布式运算装置用于执行前述分布式运算方法的任一实施例。具体地,请参阅图6,图6是本申请实施例提供的一种分布式运算装置的示意性框图。分布式运算装置100可以配置于服务器中。

如图6所示,分布式运算装置100包括分布式消息队列建立单元101、网格运算单元102、及运算结果存储单元103。

分布式消息队列建立单元101,用于获取分布式内存网格的部署信息,根据部署信息对应设置分布式消息队列。

在本实施例中,分布式内存网格即ignite分布式内存网格,其与存储运算任务(例如业务员的佣金计算任务)的消息中间件连接。且ignite分布式内存网格可采用独立式ignite集群的部署方式,也可以采用嵌入式ignite集群的部署方式。

例如,若采用32台机器构建ignite分布式内存网格,可采用嵌入式ignite集群的部署方式。将每台机器的已有的应用的内部嵌入ignite集群相关的jar包,利用ignite的发现机制,自动建立集群。

更具体是,将每一台拿出一定空间的缓存作为分布式消息队列的存储空间,多台机器的缓存空间根据ignite的发现机制,自动建立集群,将多台机器的多个存储空间集群组合成一个分布式消息队列(可以简记为分布式mq,mq是messagequeue的缩写)。该分布式消息队列具有多个节点,每一节点上存储有与某一运算任务相关的所有数据。

在一实施例中,如图7所示,分布式消息队列建立单元101包括:

部署新型获取单元1011,用于根据加入分布式内存网格的联网终端,获取分布式内存网格的部署信息;

缓存地址获取单元1012,用于根据部署信息获取每一联网终端的缓存地址;

集群建立单元1013,用于根据每一加入分布式内存网格的联网终端的缓存地址建立集群,得到分布式消息队列。

在本实施例中,分布式内存网格的部署信息表示有多少台联网终端加入了集群,且每一台联网终端的缓存地址也是在部署信息中记录。当每一台加入分布式内存网格的联网终端均提供一定空间的缓存地址,即可在联网终端建立集群后,由联网终端的缓存地址所建立集群作为分布式消息队列,而不是单独采用kafka作为消息队列。在数据量很大的情况下,分布式消息队列也能满足运算处理要求。

网格运算单元102,用于获取消息中间件所传输的运算任务,在分布式内存网格的对应运算节点中执行所述运算任务得到运算结果。

例如,消息中间件上存储有多个运算任务,每一运算任务在消息中间件上已分配对应的ignite分布式内存网格,在该ignite分布式内存网格中的对应节点计算完成后,将运算结果存储至ignite分布式内存网格相应的节点上。也即该ignite分布式内存网格中大部分节点是用作佣金计算的运算节点,而少部分节点用作的缓存节点(即用作分布式消息队列,以存储有与某一运算任务相关的所有数据)。通过在分布式内存网格上既设置计算节点,也设置缓存节点,能把相关的数据都并置在一个节点上,这样就不会有数据移动,也就不会有网络和io的消耗。

在一实施例中,如图8所示,作为网格运算单元102的另一实施例包括:

第一定位单元102a,用于获取消息中间件所传输的运算任务,解析运算任务的运算逻辑,根据运算逻辑定位运算任务对应的运算节点,并将运算任务传输至对应的运算节点,在分布式内存网格的对应运算节点中执行所述运算任务得到运算结果。

在本实施例中,将根据运算逻辑定位运算任务对应的运算节点,并将运算任务传输至对应的运算节点,即是每一运算任务为了实现快速计算,需将其分配至存储有所有相关数据的分布式消息队列对应的运算节点,通过该运算节点直接提取本地的分布式消息队列中的数据,快速运算得到运算结果,实现了运算任务的优化分配。

运算结果存储单元103,用于获取运算结果对应的运算逻辑,将运算结果存储至分布式内存网格中对应的待存储节点。

例如,若采用32台机器构建ignite分布式内存网格,分别记为1号机器-32号机器,其中1号机器用于处理a1省份业务员的佣金计算任务,2号机器用于处理a2省份业务员的佣金计算任务,……,32号机器用于处理a32省份业务员的佣金计算任务。

当1号机器接收了消息中间件所传输的第一笔运算任务时,需在1号机器上进行运算,其运算结果可能在2号机器-32号机器中对应的某一节点或多个节点中得到应用而进行下一步计算,故此时需要根据该运算结果的运算逻辑,获取其待存储节点。也就是每一节点上都存储了与该节点对应的运算任务相关的所有数据,做到了数据的提前分布式部署,无需将后续的运算过程中,将运算结果从某一节点移动至另一节点,提高了分布式处理的效率。

即ignite网格直接利用它自己的缓存做分布式消息队列,这样可以把相关的数据都并置在一个节点上,这样就不会有数据移动,也就不会有网络和io的消耗。

在一实施例中,如图9所示,作为运算结果存储单元103的另一实施例包括:

第二定位单元103a,用于获取运算结果对应的运算逻辑,根据运算逻辑定位运算任务定位运算结果的待存储节点,将运算结果存储至分布式内存网格中对应的待存储节点。

在本实施例中,获取运算结果对应的运算逻辑,根据运算逻辑定位运算任务定位运算结果的待存储节点,也即实现了将运算结果事先传输和部署到下一应用节点,而不是运算过程中再从该节点提取数据,有效的提高了运算效率。

在一实施例中,如图10所示,分布式运算装置100还包括:

集群解散单元104,用于若在预设的检测周期内分布式内存网格中未检测到消息中间件所传输的运算任务,将分布式内存网格的部署信息进行缓存,并对分布式消息队列的集群进行解散。

在本实施例中,若在预设的检测周期内(如12小时内)未检测到消息中间件所传输的运算任务,则表示该分布式消息队列的集群短时间内不会再次被使用,此时可以记录分布式内存网格的部署信息以便于后续重新组建集群,同时对分布式消息队列的集群进行解散,有效的节约系统资源。

可见,该装置利用分布式内存网格的局部缓存地址来形成分布式消息队列,每一分布式消息队列中所存储的数据足以满足当前网格的运算需求,无需从其他分布式消息队列中获取,提高了分布式运算的计算效率。

上述分布式运算装置可以实现为一种计算机程序的形式,该计算机程序可以在如图11所示的计算机设备上运行。

请参阅图11,图11是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500设备可以是服务器。

参阅图11,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。

该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种分布式运算方法。

该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。

该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种分布式运算方法。

该网络接口505用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下功能:获取分布式内存网格的部署信息,根据部署信息对应设置分布式消息队列;获取消息中间件所传输的运算任务,在分布式内存网格的对应运算节点中执行所述运算任务得到运算结果;获取运算结果对应的运算逻辑,将运算结果存储至分布式内存网格中对应的待存储节点。

在一实施例中,处理器502还执行如下操作:根据加入分布式内存网格的联网终端,获取分布式内存网格的部署信息;根据部署信息获取每一联网终端的缓存地址;根据每一加入分布式内存网格的联网终端的缓存地址建立集群,得到分布式消息队列。

在一实施例中,处理器502还执行如下操作:解析运算任务的运算逻辑,根据运算逻辑定位运算任务对应的运算节点,并将运算任务传输至对应的运算节点。

在一实施例中,处理器502还执行如下操作:根据运算逻辑定位运算任务定位运算结果的待存储节点。

在一实施例中,处理器502还执行如下操作:若在预设的检测周期内分布式内存网格中未检测到消息中间件所传输的运算任务,将分布式内存网格的部署信息进行缓存,并对分布式消息队列的集群进行解散。

本领域技术人员可以理解,图11中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图11所示实施例一致,在此不再赘述。

应当理解,在本申请实施例中,处理器502可以是中央处理单元(centralprocessingunit,cpu),该处理器502还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

在本申请的另一实施例中提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中计算机程序包括程序指令。该程序指令被处理器执行时实现:获取分布式内存网格的部署信息,根据部署信息对应设置分布式消息队列;获取消息中间件所传输的运算任务,在分布式内存网格的对应运算节点中执行所述运算任务得到运算结果;获取运算结果对应的运算逻辑,将运算结果存储至分布式内存网格中对应的待存储节点。

在一实施例中,该程序指令被处理器执行时实现:根据加入分布式内存网格的联网终端,获取分布式内存网格的部署信息;根据部署信息获取每一联网终端的缓存地址;根据每一加入分布式内存网格的联网终端的缓存地址建立集群,得到分布式消息队列。

在一实施例中,该程序指令被处理器执行时实现:解析运算任务的运算逻辑,根据运算逻辑定位运算任务对应的运算节点,并将运算任务传输至对应的运算节点。

在一实施例中,该程序指令被处理器执行时实现:根据运算逻辑定位运算任务定位运算结果的待存储节点。

在一实施例中,该程序指令被处理器执行时实现:若在预设的检测周期内分布式内存网格中未检测到消息中间件所传输的运算任务,将分布式内存网格的部署信息进行缓存,并对分布式消息队列的集群进行解散。

所述存储介质可以是前述设备的内部存储单元,例如设备的硬盘或内存。所述存储介质也可以是所述设备的外部存储设备,例如所述设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储介质还可以既包括所述设备的内部存储单元也包括外部存储设备。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1