一种任务处理系统和方法

xiaoxiao2020-7-22  11

一种任务处理系统和方法
【专利摘要】本发明公开一种任务处理系统和方法,所述系统包括请求接收模块、任务拆分模块、任务处理模块、结果整合模块和结果返回模块。针对现有技术中实时数据库采用非共享机制管理其历史数据的这一特点,本发明系统采用共享管理机制,通过其包括的各功能模块将用户请求的查询任务基于预先设定的拆分策略分为多个子任务,并基于数据源共享机制进行多个子任务的并行处理,具体实施时,可布设多个数据库服务器作为对等节点接入实时数据库,以共享其数据访问权,并通过对实时数据库进行并行访问实现对多个子任务的并行处理。可见,相较于现有基于非共享管理机制的任务处理方式,本发明大幅提升了实时数据库的查询性能。
【专利说明】一种任务处理系统和方法
【技术领域】
[0001]本发明属于数据库接入、访问【技术领域】,尤其涉及一种任务处理系统和方法。
【背景技术】
[0002]历史数据的查询性能是实时数据库的重要性能指标。
[0003]目前,针对用户请求的数据查询任务,实时数据库不提供任务拆分功能或仅提供简单的基于任务量的平均拆分功能,且采用非共享机制管理其历史数据,基于此,对于用户请求的数据查询任务,实时数据库只能由固定的服务程序接入、并访问其历史数据实现对相应任务进行处理,或由多个服务程序以轮询方式接入、访问其历史数据实现对通过简单拆分所得的相应子任务进行处理。此种处理方式大大影响了任务请求的响应速率,会导致大数据集查询任务(例如千万级以上测点数量或长时间段的历史数据查询任务)的响应延迟较高,进而降低了实时数据库的查询性能。

【发明内容】

[0004]有鉴于此,本发明的目的在于提供一种任务处理系统和方法,以克服上述问题,提高实时数据库的查询性能。
[0005]为此,本发明公开如下技术方案:
[0006]一种任务处理系统,包括请求接收模块、任务拆分模块、任务处理模块、结果整合模块和结果返回模块,其中:
[0007]所述请求接收模块,用于接收用户的请求信息,所述请求信息包含对数据源中的目标数据集进行查询的查询任务;
[0008]所述任务拆分模块,用于基于预先设定的第一任务拆分策略对所述查询任务进行拆分,得到所述查询任务的N个子任务,其中,所述N为大于I的自然数;
[0009]所述任务处理模块,用于基于数据源共享机制,对所述N个子任务进行并行处理,得到相应的N个查询子结果;
[0010]所述结果整合模块,用于利用预先设定的汇总规则对所述N个查询子结果进行汇总、整合,得到用户所需的查询结果集;
[0011]所述结果返回模块,用于将所述查询结果集返回至用户。
[0012]上述系统,优选的,所述数据源具体为实时数据库。
[0013]上述系统,优选的,所述任务处理模块具体包括任务分配单元和并行处理单元,其中:
[0014]所述任务分配单元,用于将所述N个子任务以一对一的映射关系分配至N个数据库服务器;
[0015]所述并行处理单元,用于调度所述N个数据库服务器并行接入、访问所述数据源,得到与所述N个子任务相对应的N个查询子结果。
[0016]上述系统,优选的,还包括:[0017]子任务拆分单元,用于基于预先设定的第二任务拆分策略对每个所述子任务进行二次拆分,得到所述子任务的M个二次子任务,并触发所述并行处理单元执行如下操作:调度所述N个数据库服务器并行访问所述数据源,且使每个数据库服务器以多线程并发处理方式处理其所负责的M个二次子任务,其中,所述M为大于I的自然数。
[0018]上述系统,优选的,还包括:
[0019]故障处理模块,用于在所述数据库服务器发生故障时,将发生故障的数据库服务器负责的子任务转交至未发生故障的数据库服务器进行处理。
[0020]上述系统,优选的,所述第一任务拆分策略具体基于所述查询任务的任务量、查询任务对应目标数据的时间属性以及数据库服务器集群当前的并行处理能力制定;所述第二任务拆分策略具体基于相应子任务的任务量、子任务对应目标数据的时间属性以及相应数据库服务器当前的多线程并发处理能力制定。
[0021 ] 一种任务处理方法,包括:
[0022]接收用户的请求信息,所述请求信息包含对数据源中的目标数据集进行查询的查询任务;
[0023]基于预先设定的第一任务拆分策略对所述查询任务进行拆分,得到所述查询任务的N个子任务,其中,所述N为大于I的自然数;
[0024]基于数据源共享机制,对所述N个子任务进行并行处理,得到相应的N个查询子结果;
[0025]利用预先设定的汇总规则对所述N个查询子结果进行汇总、整合,得到用户所需的查询结果集;
[0026]将所述查询结果集返回至用户。
[0027]上述方法,优选的,所述基于所述数据源对所述N个子任务进行并行处理,得到相应的N个查询子结果,具体包括:
[0028]将所述N个子任务以一对一的映射关系分配至N个数据库服务器;
[0029]调度所述N个数据库服务器并行接入、访问所述数据源,得到与所述N个子任务相对应的N个查询子结果。
[0030]上述方法,优选的,基于所述数据源对所述N个子任务进行并行处理,得到相应的N个查询子结果,还包括:
[0031]基于预先设定的第二任务拆分策略对每个所述子任务进行二次拆分,得到所述子任务的M个二次子任务,其中,所述M为大于I的自然数;
[0032]调度所述N个数据库服务器并行访问所述数据源,并使每个数据库服务器以多线程处理方式处理其所负责的M个二次子任务。
[0033]上述方法,优选的,还包括:
[0034]当所述数据库服务器发生故障时,将发生故障的所述数据库服务器负责的子任务转交至未发生故障的数据库服务器进行处理。
[0035]本发明的任务处理系统包括请求接收模块、任务拆分模块、任务处理模块、结果整合模块和结果返回模块。针对现有技术中实时数据库采用非共享机制管理其历史数据的这一特点,本发明系统采用共享管理机制,通过其包括的各功能模块将用户请求的查询任务基于预先设定的拆分策略分为多个子任务,并基于数据源共享机制进行多个子任务的并行处理,具体实施时,可布设多个数据库服务器作为对等节点接入实时数据库,以共享其数据访问权,并通过对实时数据库进行并行访问实现对多个子任务的并行处理。从而,针对用户提交的大数据集任务请求,本发明可通过以上的任务拆分、分配以及子任务的并行处理过程大大提高任务请求的响应速率,因此,相较于现有基于非共享管理机制的任务处理方式,本发明大幅提升了实时数据库的查询性能。
【专利附图】

【附图说明】
[0036]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]图1是本发明实施例一公开的任务处理系统的一种结构不意图;
[0038]图2是本发明实施例一公开的任务处理模块的一种结构示意图;
[0039]图3是本发明实施例二公开的任务处理模块的另一种结构示意图;
[0040]图4是本发明实施例三公开的任务处理系统的另一种结构示意图;
[0041]图5是本发明实施例四公开的任务处理方法的一种流程图;
[0042]图6是本发明实施例四公开的任务处理方法的另一种流程图;
[0043]图7是本发明实施例四公开的应用实例中分布式实时数据库系统的组成结构示意图。
【具体实施方式】
[0044]为了引用和清楚起见,下文中使用的技术名词、简写或缩写总结解释如下:
[0045]实时数据库:指目前电力信息化行业所指的实时数据库。
[0046]测点:指实时数据库中的数据组织单位,也称标签点、Tag。
[0047]任务:指进行的某个操作请求。
[0048]单点:指单个测点。
[0049]断面:指部分(或所有)测点的同一时刻的数据。
[0050]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0051]实施例一
[0052]本发明实施例一公开一种任务处理系统,请参见图1,该系统包括请求接收模块100、任务拆分模块200、任务处理模块300、结果整合模块400和结果返回模块500。
[0053]请求接收模块100,用于接收用户的请求信息,所述请求信息包含对数据源中的目标数据集进行查询的查询任务。
[0054]本实施例中,所述数据源具体为实时数据库,以下将通过对用户提交的查询实时数据库中历史数据的任务请求进行处理来对本发明进行详细说明。
[0055]其中,用户提交的任务请求具体可以是请求对实时数据库进行单点历史查询,也可以是请求对实时数据库进行断面历史查询。
[0056]任务拆分模块200,用于基于预先设定的第一任务拆分策略对所述查询任务进行拆分,得到所述查询任务的N个子任务,其中,所述N为大于I的自然数。
[0057]任务处理模块300,用于基于数据源共享机制,对所述N个子任务进行并行处理,得到相应的N个查询子结果。
[0058]其中,如图2所示,任务处理模块300具体包括任务分配单元310和并行处理单元320。任务分配单元310,用于将所述N个子任务以一对一的映射关系分配至N个数据库服务器;并行处理单元320,用于调度所述N个数据库服务器并行接入、访问所述数据源,得到与所述N个子任务相对应的N个查询子结果。
[0059]本实施例基于数据共享管理形式,将分布式数据库服务器集群中的各数据库服务器作为对等节点同时接入实时数据库,各节点共享对实时数据库中历史数据的访问权,并采用分布式并发处理机制实现对各子任务的并发处理。
[0060]区别于现有技术中对查询任务仅采用基于任务量的平均拆分策略,本实施例中,获取各子任务所使用的拆分策略具体基于用户提交的查询任务的任务量、查询任务对应目标数据的时间属性以及数据库服务器集群当前的并行处理能力制定。
[0061]例如,若当前数据库服务器集群中共有N个数据库服务器空闲,则拆分策略基于任务量、目标数据的时间属性以及各数据库服务器的繁忙状态、并行处理能力将用户请求的查询任务拆分为N个子任务,最终使每个数据库服务器负责执行一个子任务,实现各子任务的优化分配。
[0062]现实应用场景中,拆分策略的制定不限于以上三个维度,具体可由本领域技术人员根据实际需求进行相关拆分算法的设定,例如还可将目标数据集中数据间的逻辑相关性作为拆分策略制定的参考依据,将逻辑关联强度较大的数据请求任务划分在同一子任务中,以实现后续对子任务更为有效、快速地处理。
[0063]结果整合模块400,用于利用预先设定的汇总规则对所述N个查询子结果进行汇总、整合,得到用户所需的查询结果集。
[0064]结果返回模块500,用于将所述查询结果集返回至用户。
[0065]任务执行完毕,得到用户所需的查询结果集后,结果返回模块500唤醒用户程序,并将查询结果集返回至用户程序供用户使用,至此,本发明系统的任务处理过程结束。
[0066]综上,本发明的任务处理系统包括请求接收模块100、任务拆分模块200、任务处理模块300、结果整合模块400和结果返回模块500。针对现有技术中实时数据库采用非共享机制管理其历史数据的这一特点,本发明系统采用共享管理机制,通过其包括的各功能模块将用户请求的查询任务基于预先设定的拆分策略分为多个子任务,并基于数据源共享机制进行多个子任务的并行处理,具体实施时,可布设多个数据库服务器作为对等节点接入实时数据库,以共享其数据访问权,并通过对实时数据库进行并行访问实现对多个子任务的并行处理。从而,针对用户提交的大数据集任务请求,本发明可通过以上的任务拆分、分配以及子任务的并行处理过程大大提高任务请求的响应速率,因此,相较于现有基于非共享管理机制的任务处理方式,本发明大幅提升了实时数据库的查询性能。
[0067]实施例二
[0068]本发明实施例二继续对实施例一中公开的任务处理系统进行优化,请参见图3,本实施例中,任务处理模块300还包括子任务拆分单元330,该单元具体在任务分配单元310和并行处理单元320之间,与所述两个单元逻辑衔接。
[0069]子任务拆分单元330,用于基于预先设定的第二任务拆分策略对每个所述子任务进行二次拆分,得到所述子任务的M个二次子任务,其中,所述M为大于I的自然数。
[0070]其中,所述第二任务拆分策略具体基于相应子任务的任务量、子任务对应目标数据的时间属性以及相应数据库服务器当前的多线程并发处理能力制定。同样地,该拆分策略的制订不局限于以上三个维度,现实应用场景中还可依据实际需求将其他参考因素作为拆分依据。
[0071]除此之外,并行处理单元调度320也进行了相应功能完善,即该单元除了调度所述N个数据库服务器并行访问实时数据库,还同时保证每个数据库服务器以多线程并发处理方式处理其所负责的M个二次子任务。
[0072]数据库服务器将其负责的M个二次子任务分配给M个线程去同时处理,并将M个线程返回的M个子结果首先进行本地汇总,得到查询任务的中间结果。N个服务器共产生N份中间结果,进而对N个中间结果进行汇总即可得到用户所需的结果数据集。
[0073]本实施例提供了本地任务的二次拆分功能,并对二次拆分所得的各二次子任务采用多线程并发处理机制进行处理,提高了各个子任务的处理效率,从而,进一步提升了用户任务请求的响应速率。
[0074]实施例三
[0075]本实施例继续对以上两个实施例中公开的任务处理系统进行补充、完善。
[0076]实施例一及实施例二的任务处理过程具体需基于各数据库服务器正常工作这一前提,而在实际的集群系统中,任何一个或多个服务器节点因出现故障导致其临时下线属于常见现象,针对此种情况,请参见图4,本实施例在原有各功能模块的基础上,为任务处理系统添加故障处理模块600。
[0077]故障处理模块600,用于在数据库服务器发生故障时,将发生故障的数据库服务器负责的子任务转交至未发生故障的数据库服务器进行处理。
[0078]具体地,故障处理模块600以周期轮询的方式监控各数据库服务器。当某一数据库服务器接收到该模块发送的轮询命令,且在设定的时间阈值内一直没有响应时,则该模块判定所述数据库服务器失效,为了不对查询任务的处理造成影响,本模块将失效服务器节点负责的子任务置为未处理状态,并重新为其分配数据库服务器进行处理。
[0079]由于失效服务器上的相应子任务处理结果无法访问,因此,在失效机器上即使相应子任务已经执行完成,同样需要重新执行该子任务。
[0080]本实施例为任务处理系统提供了故障处理机制,从而在服务器节点出现故障时,仍能保证系统对用户的任务请求进行正常地、有效地处理,提高了系统任务处理的健壮性。
[0081]实施例四
[0082]本实施例四公开一种任务处理方法,该方法与以上三个实施例公开的任务处理系统相对应。
[0083]首先,相应于实施例一中系统的结构,本实施例公开任务处理方法的一种流程,请参见图5,该方法包括如下步骤:
[0084]S501:接收用户的请求信息,所述请求信息包含对数据源中的目标数据集进行查询的查询任务。
[0085] S502:基于预先设定的第一任务拆分策略对所述查询任务进行拆分,得到所述查询任务的N个子任务,其中,所述N为大于I的自然数。
[0086]S503:基于数据源共享机制,对所述N个子任务进行并行处理,得到相应的N个查询子结果。
[0087]其中,步骤S503具体包括:
[0088]将所述N个子任务以一对一的映射关系分配至N个数据库服务器;
[0089]调度所述N个数据库服务器并行接入、访问所述数据源,得到与所述N个子任务相对应的N个查询子结果。
[0090]S504:利用预先设定的汇总规则对所述N个查询子结果进行汇总、整合,得到用户所需的查询结果集。
[0091]S505:将所述查询结果集返回至用户。
[0092]相应于实施例二中任务处理系统的结构,本实施例继续公开任务处理方法的另一种流程,本流程中步骤S503还包括:
[0093]基于预先设定的第二任务拆分策略对每个所述子任务进行二次拆分,得到所述子任务的M个二次子任务,其中,所述M为大于I的自然数;
[0094]调度所述N个数据库服务器并行访问所述数据源,并使每个数据库服务器以多线程处理方式处理其所负责的M个二次子任务。
[0095]对应于实施例三中任务处理系统的结构,如图6所示,任务处理方法还包括如下步骤:
[0096]S506:当所述数据库服务器发生故障时,将发生故障的所述数据库服务器负责的子任务转交至未发生故障的数据库服务器进行处理。
[0097]对于本发明实施例四公开的任务处理方法而言,由于其与以上各实施例公开的任务处理系统相对应,所以描述的比较简单,相关相似之处请参见以上各实施例中任务处理系统部分的说明即可,此处不再详述。
[0098]接下来,公开本发明的一具体应用实例。
[0099]本实例提供一分布式实时数据库系统,如图7所示,该系统是由实时数据库、任务管理/拆分服务器、调度服务器以及P (P为自然数,且P ^ N)个数据库服务器组成的集群系统,在用户程序向该系统请求查询任务时,该系统对请求任务进行处理的过程如下:
[0100]1)当用户程序向该系统提交任务请求时,任务管理/拆分服务器调用任务拆分策略将用户提交的大任务拆分成N个子任务,然后将包含相应信息的子任务请求发送给调度服务器。
[0101]2)调度服务器把N个子任务分配给当前系统中空闲的N个数据库服务器,每个数据库服务器负责执行一个子任务。
[0102]3)数据库服务器收到子任务后调用二次拆分策略,对子任务进行二次拆分,将所得的M个二次子任务分配给M个线程去同时处理。并对M个线程返回的M个子结果进行本地汇总,得到中间结果值。
[0103]4)所有的子任务都执行完毕后,调度服务器把N份中间结果值按一定的规则汇总为一个查询结果集。[0104]5)调度服务器唤醒用户程序,将查询结果集返回给用户程序,本次任务执行完毕。
[0105]对于处理过程中,某一个或多个服务器出现故障的情况,该系统依据本发明的故障处理机制,针对故障服务器负责的任务,由调度服务器调度其他正常的服务器节点对其进行处理。
[0106]综上所述,本发明提供了基于多维度策略的任务拆分功能以及本地任务二次拆分功能,采用数据共享管理形式,通过分布式集群系统实现了各子任务的并行处理,大幅提升了实时数据库单点历史查询性能及断面历史查询性能,任务处理延迟小、速率快,且硬件配置要求低。
[0107]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0108]为了描述的方便,描述以上装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各模块、单元的功能在同一个或多个软件和/或硬件中实现。
[0109]通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
[0110]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种任务处理系统,其特征在于,包括请求接收模块、任务拆分模块、任务处理模块、结果整合模块和结果返回模块,其中: 所述请求接收模块,用于接收用户的请求信息,所述请求信息包含对数据源中的目标数据集进行查询的查询任务; 所述任务拆分模块,用于基于预先设定的第一任务拆分策略对所述查询任务进行拆分,得到所述查询任务的N个子任务,其中,所述N为大于I的自然数; 所述任务处理模块,用于基于数据源共享机制,对所述N个子任务进行并行处理,得到相应的N个查询子结果; 所述结果整合模块,用于利用预先设定的汇总规则对所述N个查询子结果进行汇总、整合,得到用户所需的查询结果集; 所述结果返回模块,用于将所述查询结果集返回至用户。
2.根据权利要求1所述的任务处理系统,其特征在于,所述数据源具体为实时数据库。
3.根据权利要求1所述的任务处理系统,其特征在于,所述任务处理模块具体包括任务分配单元和并行处理单元,其中: 所述任务分配单元,用于将所述N个子任务以一对一的映射关系分配至N个数据库服务器; 所述并行处理单元,用于调度所述N个数据库服务器并行接入、访问所述数据源,得到与所述N个子任务相对应的N个查询子结果。
4.根据权利要求3所述的任务处理系统,其特征在于,所述任务处理模块还包括: 子任务拆分单元,用于基于预先设定的第二任务拆分策略对每个所述子任务进行二次拆分,得到所述子任务的M个二次子任务,并触发所述并行处理单元执行如下操作:调度所述N个数据库服务器并行访问所述数据源,且使每个数据库服务器以多线程并发处理方式处理其所负责的M个二次子任务,其中,所述M为大于I的自然数。
5.根据权利要求3-4任意一项所述的任务处理系统,其特征在于,还包括: 故障处理模块,用于在所述数据库服务器发生故障时,将发生故障的数据库服务器负责的子任务转交至未发生故障的数据库服务器进行处理。
6.根据权利要求4所述的任务处理系统,其特征在于,所述第一任务拆分策略具体基于所述查询任务的任务量、查询任务对应目标数据的时间属性以及数据库服务器集群当前的并行处理能力制定;所述第二任务拆分策略具体基于相应子任务的任务量、子任务对应目标数据的时间属性以及相应数据库服务器当前的多线程并发处理能力制定。
7.一种任务处理方法,其特征在于,包括: 接收用户的请求信息,所述请求信息包含对数据源中的目标数据集进行查询的查询任务; 基于预先设定的第一任务拆分策略对所述查询任务进行拆分,得到所述查询任务的N个子任务,其中,所述N为大于I的自然数; 基于数据源共享机制,对所述N个子任务进行并行处理,得到相应的N个查询子结果;利用预先设定的汇总规则对所述N个查询子结果进行汇总、整合,得到用户所需的查询结果集; 将所述查询结果集返回至用户。
8.根据权利要求7所述的任务处理方法,其特征在于,所述基于所述数据源对所述N个子任务进行并行处理,得到相应的N个查询子结果,具体包括: 将所述N个子任务以一对一的映射关系分配至N个数据库服务器; 调度所述N个数据库服务器并行接入、访问所述数据源,得到与所述N个子任务相对应的N个查询子结果。
9.根据权利要求8所述的任务处理方法,其特征在于,所述基于所述数据源对所述N个子任务进行并行处理,得到相应的N个查询子结果,还包括: 基于预先设定的第二任务拆分策略对每个所述子任务进行二次拆分,得到所述子任务的M个二次子任务,其中,所述M为大于I的自然数; 调度所述N个数据库服务器并行访问所述数据源,并使每个数据库服务器以多线程处理方式处理其所负责的M个二次子任务。
10.根据权利要求8-9任意一项所述的任务处理方法,其特征在于,还包括: 当所述数据库服务器发生故障时,将发生故障的所述数据库服务器负责的子任务转交至未发生故障的数据库 服务器进行处理。
【文档编号】G06F9/46GK103942098SQ201410177684
【公开日】2014年7月23日 申请日期:2014年4月29日 优先权日:2014年4月29日
【发明者】张杨, 孙雷 申请人:国家电网公司, 北京中电飞华通信股份有限公司, 北京国电通网络技术有限公司

最新回复(0)