服务器集群的数据处理方法和装置与流程

文档序号:16248217发布日期:2018-12-11 23:46阅读:188来源:国知局
服务器集群的数据处理方法和装置与流程
本公开涉及一种服务器集群的数据处理方法和装置。
背景技术
随着大数据、云时代的到来,数据库应用需求的拓展和计算机硬件环境的变化,特别是计算机网络与数字通信技术的飞速发展,分布式数据库系统应运而生。分布式数据库由于其分布式的特性导致分布式数据库所接收的数据更新操作、所存储的数据缺少全局唯一性的标识和索引,在需要对分布式数据库中的存储进行查找、使用和处理时,不够便捷有效。技术实现要素:本公开的一个方面提供了一种服务器集群的数据处理方法,包括:服务器集群中的第一计算任务在执行针对分布式数据库的数据更新操作时,第一计算任务从服务器集群的共享存储空间获取标识参数,第一计算任务基于所获取的标识参数将待写入数据存入分布式数据库中。其中,共享存储空间可由至少一个第二计算任务访问并反馈标识参数,所述至少一个第二计算任务为针对分布式数据库进行数据更新的计算任务。可选地,上述第一计算任务从服务器集群的共享存储空间获取标识参数包括:当共享存储空间进行对第一计算任务的标识参数反馈时,在完成对第一计算任务的标识参数的反馈之前,上述至少一个第二计算任务无法从共享存储空间获取标识参数。其中,第一计算任务与上述至少一个第二计算任务中不同的计算任务获取的标识参数不同。可选地,上述第一计算任务从服务器集群的共享存储空间获取标识参数包括:当共享存储空间进行对第一计算任务的标识参数反馈时,在第一计算任务完成对分布式数据库的数据更新操作之前,上述至少一个第二计算任务无法从共享存储空间获取标识参数。其中,第一计算任务与上述至少一个第二计算任务中不同的计算任务获取的标识参数不同。可选地,上述第一计算任务从服务器集群的共享存储空间获取标识参数包括:第一计算任务向共享存储空间发送标识参数获取请求,在满足预设条件时,共享存储空间进行对第一计算任务的标识参数反馈,并执行第一预设操作,其中,所述预设条件表征共享存储空间当前未处理不同于第一计算任务的针对所述分布式数据库的计算任务的标识参数反馈,所述第一预设操作用于停止共享存储空间对上述至少一个第二计算任务的响应。可选地,上述第一计算任务从服务器集群的共享存储空间获取标识参数还包括:基于共享存储空间完成对第一计算任务的标识参数的反馈,或第一计算任务完成对分布式数据库的数据更新操作,共享存储空间执行第二预设操作,其中,所述第二预设操作用于恢复所述共享存储空间对上述至少一个第二计算任务的响应。可选地,上述第一计算任务从服务器集群的共享存储空间获取标识参数包括:第一计算任务请求共享存储空间的指定接口,共享存储空间基于所述请求将存储的标识参数反馈至第一计算任务,并按照预设规则对存储的标识参数进行变化,保存变化后的标识参数。或者,共享存储空间基于所述请求按照预设规则对存储的标识参数进行变化,保存变化后的标识参数,并将变化后的标识参数反馈至第一计算任务。可选地,上述按照预设规则对存储的标识参数进行变化,保存变化后的标识参数包括:共享存储空间对存储的标识值增加预设数值,得到变化后的标识值,将变化后的标识值替换变化前的标识值进行保存。可选地,分布式数据库中以所述标识参数作为主键内容,则上述第一计算任务基于所述标识参数将待写入数据存入所述分布式数据库中包括:第一计算任务基于待写入数据和相应的标识参数对分布式数据库进行更新。本公开的另一方面提供了一种服务器集群的数据处理装置,包括:数据更新模块、调度处理模块和数据存储模块。数据更新模块包括针对数据存储模块进行数据更新的第一数据更新模块和至少一个第二数据更新模块,第一数据更新模块,用于在执行针对数据存储模块的数据更新任务时,从调度处理模块获取标识参数,并基于所获取的标识参数将待写入数据存入数据存储模块。调度处理模块,用于基于第一数据更新模块的访问向第一数据更新模块反馈标识参数,以及,调度处理模块还可由至少一个第二数据更新模块访问并向上述至少一个第二数据更新模块反馈标识参数。数据存储模块为分布式存储模块,用于基于标识参数对相应的待写入数据进行存储。可选地,调度处理模块基于第一数据更新模块的访问向第一数据更新模块反馈标识参数包括:调度处理模块,用于在进行对第一数据更新模块的标识参数反馈时,在完成对第一数据更新模块的标识参数的反馈之前,停止对上述至少一个第二数据更新模块的响应,使得上述至少一个第二数据更新模块无法从调度处理模块获取标识参数。其中,第一数据更新模块与上述至少一个第二数据更新模块中不同的数据更新操作获取的标识参数不同。可选地,调度处理模块基于第一数据更新模块的访问向第一数据更新模块反馈标识参数包括:调度处理模块,用于在进行对第一数据更新模块的标识参数反馈时,在第一数据更新模块完成对数据存储模块的数据更新操作之前,停止对上述至少一个第二数据更新模块的响应,使得上述至少一个第二数据更新模块无法从调度处理模块获取标识参数。其中,第一数据更新模块与上述至少一个第二数据更新模块中不同的数据更新操作获取的标识参数不同。可选地,第一数据更新模块在执行针对数据存储模块的数据更新操作时,从调度处理模块获取标识参数包括:第一数据更新模块,用于在执行针对数据存储模块的数据更新操作时,向调度处理模块发送标识参数获取请求。调度处理模块基于第一数据更新模块的访问向第一数据更新模块反馈标识参数包括:调度处理模块,用于在满足预设条件时,进行对第一数据更新模块的标识参数反馈,并执行第一预设操作。其中,所述预设条件表征所述调度处理模块当前未处理不同于第一数据更新模块的针对数据存储模块的数据更新模块的标识参数反馈,所述第一预设操作用于停止调度处理模块对上述至少一个第二数据更新模块的响应。可选地,调度处理模块基于第一数据更新模块的访问向第一数据更新模块反馈标识参数还包括:调度处理模块,用于基于调度处理模块完成对第一数据更新模块的标识参数的反馈,或第一数据更新模块完成对数据存储模块的数据更新操作,执行第二预设操作。其中,所述第二预设操作用于恢复调度处理模块对上述至少一个第二数据更新模块的响应。可选地,第一数据更新模块从调度处理模块获取标识参数包括:第一数据更新模块,用于请求调度处理模块的指定接口。调度处理模块基于第一数据更新模块的访问向第一数据更新模块反馈标识参数包括:调度处理模块,用于基于所述请求将存储的标识参数反馈至第一数据更新模块,并按照预设规则对存储的标识参数进行变化,保存变化后的标识参数,或者,调度处理模块,用于基于所述请求按照预设规则对存储的标识参数进行变化,保存变化后的标识参数,并将变化后的标识参数反馈至第一数据更新模块。可选地,调度处理模块按照预设规则对存储的标识参数进行变化,保存变化后的标识参数包括:调度处理模块,用于对存储的标识值增加预设数值,得到变化后的标识值,将变化后的标识值替换变化前的标识值进行保存。可选地,数据存储模块中以标识参数作为主键内容,第一数据更新模块基于标识参数将待写入数据存入数据存储模块包括:第一数据更新模块,用于基于待写入数据和相应的标识参数对数据存储模块进行更新。本公开的另一方面提供了一种服务器集群,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的方法。本公开的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。附图说明为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:图1示意性示出了根据本公开的实施例的服务器集群的数据处理方法和装置的应用场景;图2示意性示出了根据本公开的实施例的服务器集群的数据处理方法的流程图;图3示意性示出了根据本公开的实施例的计算任务针对分布式数据库进行数据写入操作的示意图;图4示意性示出了根据本公开的实施例的服务器集群的数据处理装置的框图;以及图5示意性示出了根据本公开实施例的服务器集群的框图。具体实施方式以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“a或b”应当被理解为包括“a”或“b”、或“a和b”的可能性。附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。本公开的实施例提供了一种服务器集群的数据处理方法、装置以及服务器集群。该方法对于服务器集群中的任一计算任务来说,包括计算任务从共享存储空间获取标识参数的过程和计算任务基于所获取的标识参数对分布式数据库进行数据更新的过程,使得分布式数据库所接收的每次数据更新操作均对应于一个标识参数。图1示意性示出了根据本公开的实施例的服务器集群的数据处理方法和装置的应用场景。需要注意的是,图1所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。如图1所示,该应用场景示例性展示了一个分布式数据库系统的结构,该分布式数据库系统(distributeddatabasemanagementsystem,ddbms)中包括服务器110、120和130,每个服务器有自己的数据库管理系统(databasemanagementsystem,dms),分别对应于不同的数据库db1、db2和db3,所述数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性,用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。三个服务器110、120和130之间通过网络相连,每个服务器有自己的客户机(图中未示出),用户可以通过客户机对本客户机对应的服务器中的数据库执行某些操作,也可以通过客户机对分布式数据库系统中的其它服务器中的数据库执行某些操作。本公开实施例所提供的服务器集群的数据处理方法和装置可以应用于图1所示的分布式数据库系统中,对图1所示的分布式数据库系统执行改进的数据更新操作,使得分布式数据库中所存储的数据具有全局唯一性的标识和索引。应该理解,图1中的服务器和数据库的数目仅仅是示意性的。根据实现需要,可以具有任意数目的服务器和数据库。图2示意性示出了根据本公开的实施例的服务器集群的数据处理方法的流程图。如图2所示,该方法包括操作s201~s202。在操作s201,服务器集群中的第一计算任务在执行针对分布式数据库的数据更新操作时,第一计算任务从服务器集群的共享存储空间获取标识参数。本操作所述的针对分布式数据库的数据更新可以包括针对分布式数据库的数据写入、数据删除、数据修改等操作。其中,第一计算任务可以是针对分布式数据库进行数据更新的计算任务中的任一个,共享存储空间由针对分布式数据库进行数据更新的计算任务共享使用,共享存储空间可由第一计算任务访问并向第一计算任务反馈相应的标识参数,共享存储空间也可由至少一个第二计算任务访问并反馈标识参数,至少一个第二计算任务也是针对分布式数据库进行数据更新的计算任务,具体地,至少一个第二计算任务是服务器集群中除第一计算任务以外的针对分布式数据库进行数据更新的一个或多个计算任务。在操作s202,第一计算任务基于所获取的标识参数将待写入数据存入分布式数据库中。可以理解,由于第一计算任务可以是针对分布式数据库进行数据更新的计算任务中的任一个,则同理地,至少一个第二计算任务中的任一个计算任务在执行针对分布式数据库的数据更新操作时,也同第一计算任务一样,需要从共享存储空间获取相应的标识参数,再基于所获取的标识参数将本计算任务对应的待写入数据存入分布式数据库中。可见,在图2所示的方法中,服务器集群中的任一计算任务在对分布式数据库进行数据更新时,不再是如现有技术一般任一计算任务直接对分布式数据库执行相应的数据更新操作中,而是任一计算任务先从共享存储空间获取标识参数,基于所获取标识参数再对分布式数据库执行数据更新操作,使得分布式数据库所接收的每个数据更新操作都与一个标志参数相对应,使得分布式数据库中所存储的数据均可以被全局唯一性地标识和索引,通过各数据更新操作所对应的标识参数就可以便捷地对分布式数据库中的数据进行查找、使用、管理和处理。在本公开的实施例中,服务器集群中包括一个或多个计算节点,一个计算节点中可以运行多个计算任务也可以运行一个计算任务,这些一个或多个计算节点共同使用共享存储空间和分布式数据库。第一计算任务和至少一个第二计算任务可以是运行于服务器集群中同一个计算节点中的计算任务,也可以是运行于服务器集群中多个计算节点中的计算任务,对于任一个计算任务,在执行针对分布式数据库的更新操作时,以数据写入操作为例,该计算任务需要先从共享存储空间获取标识参数,再基于该标识参数将待写入数据存入分布式数据库中。在本公开的一个实施例中,图2所示方法中操作s201第一计算任务从服务器集群的共享存储空间获取标识参数包括:当共享存储空间进行对第一计算任务的标识参数反馈时,在完成对第一计算任务的标识参数的反馈之前,上述至少一个第二计算任务无法从共享存储空间获取标识参数。其中,第一计算任务与第二计算任务中不同的计算任务获取的标识参数不同。通过本实施例可知,为了保证共享存储空间向不同的计算任务反馈的标识参数不同,共享存储空间一次只能响应一个计算任务的请求,向一个计算任务反馈标识参数,而不能同时向多个计算任务反馈标识参数,且共享存储空间每次反馈的标识参数不同,使得各不同的计算任务基于不同的标识参数针对分布式数据库执行相应的数据更新操作,进而分布式数据库中不同的数据更新操作对应于不同的标识参数,实现了对分布式数据库中数据的全局唯一性索引,避免了因为分布式数据库的分布式特征而导致的数据索引重叠或缺失,进而能够方便有效地对分布式数据库中的数据进行管理。当不同的计算任务按照先后顺序访问共享存储空间请求获得标识参数时,作为一个可选的实施例,共享存储空间先响应最先发出请求的计算任务a,在完成对计算任务a的标识参数的反馈之前,共享存储空间停止对除计算任务a之外的其他计算任务的响应,使得除计算任务a之外的其他计算任务暂时无法获取到各自对应的标识参数,当共享存储空间完成对计算任务a的标识参数的反馈后,共享存储空间恢复对其他计算任务的响应,可以按照顺序对在计算任务a的请求之后最先发出请求的计算任务b进行响应,同理地,在完成对计算任务b的标识参数的反馈之前,共享存储空间停止对除计算任务b之外的其他计算任务的响应,以此类推,不再赘述。当不同的计算任务同时访问共享存储空间请求获得标识参数时,作为一个可选的实施例,共享存储空间可以按照预设规则选择一个计算任务a进行响应,在完成对计算任务a的标识参数的反馈之前,共享存储空间停止对除计算任务a之外的其他计算任务的响应,使得除计算任务a之外的其他计算任务暂时无法获取到各自对应的标识参数,当共享存储空间完成对计算任务a的标识参数的反馈后,共享存储空间恢复对其他计算任务的响应,可以再次选择一个计算任务b进行响应,同理地,在完成对计算任务b的标识参数的反馈之前,共享存储空间停止对除计算任务b之外的其他计算任务的响应,以此类推,不再赘述,共享存储空间对不同的计算任务反馈的标识参数不同。在本公开的另一个实施例中,图2所示方法中操作s201第一计算任务从服务器集群的共享存储空间获取标识参数包括:当共享存储空间进行对第一计算任务的标识参数反馈时,在第一计算任务完成对分布式数据库的数据更新操作之前,上述至少一个第二计算任务无法从共享存储空间获取标识参数。其中,所述第一计算任务与所述第二计算任务中不同的计算任务获取的标识参数不同。通过本实施例可知,为了保证共享存储空间向不同的计算任务反馈的标识参数不同,共享存储空间一次只能响应一个计算任务的请求,向一个计算任务反馈标识参数,而不能同时向多个计算任务反馈标识参数,且共享存储空间每次反馈的标识参数不同。并且,上文实施例中,共享存储空间对一个计算任务进行单独响应的时间持续至共享存储空间完成对该计算任务的标识参数的反馈,而在本实施例中,共享存储空间对一个计算任务进行单独响应的时间更长,持续至该计算任务基于所获取的标识参数完成对分布式数据库的数据更新,这样使得先获得标识参数的计算任务可以先完成数据更新,当标识参数符合一定的顺序规律时,分布式数据库所接收的数据更新操作的顺序也符合该顺序规律,更有利于后续对分布式数据库中的数据的管理。当不同的计算任务按照先后顺序访问共享存储空间请求获得标识参数时,作为一个可选的实施例,共享存储空间先响应最先发出请求的计算任务a,向计算任务a反馈标识并等待计算任务a完成对分布式数据库的数据更新操作,在计算任务a完成对分布式数据库的数据更新操作之前,共享存储空间停止对除计算任务a之外的其他计算任务的响应,使得除计算任务a之外的其他计算任务暂时无法获取到各自对应的标识参数,当计算任务a完成对分布式数据库的数据更新操作后,共享存储空间恢复对其他计算任务的响应,可以按照顺序对在计算任务a的请求之后最先发出请求的计算任务b进行响应,同理地,在计算任务b完成对分布式数据库的数据更新操作之前,共享存储空间停止对除计算任务b之外的其他计算任务的响应,以此类推,不再赘述。当不同的计算任务同时访问共享存储空间请求获得标识参数时,作为一个可选的实施例,共享存储空间可以按照预设规则选择一个计算任务a进行响应,在计算任务a完成对分布式数据库的数据更新操作之前,共享存储空间停止对除计算任务a之外的其他计算任务的响应,使得除计算任务a之外的其他计算任务暂时无法获取到各自对应的标识参数,当计算任务a完成对分布式数据库的数据更新操作后,共享存储空间恢复对其他计算任务的响应,可以再次选择一个计算任务b进行响应,同理地,在计算任务b完成对分布式数据库的数据更新操作之前,共享存储空间停止对除计算任务b之外的其他计算任务的响应,以此类推,不再赘述。其中,共享存储空间对不同的计算任务反馈的标识参数不同。更为具体地,作为一个可选的实施例,图2所示方法中操作s201第一计算任务从服务器集群的共享存储空间获取标识参数包括:第一计算任务向共享存储空间发送标识参数获取请求,在满足预设条件时,共享存储空间进行对第一计算任务的标识参数反馈,并执行第一预设操作。其中,上述预设条件表征共享存储空间当前未处理不同于第一计算任务的针对分布式数据库的计算任务的标识参数反馈,上述第一预设操作用于停止共享存储空间对前文所述的至少一个第二计算任务的响应。前文已经说明,第一计算任务代表针对分布式数据库进行数据更新的任一计算任务,至少一个第二计算任务代表除第一计算任务之外的针对分布式数据库进行数据更新的一个或多个计算任务。在本实施例中,共享存储空间对一个计算任务a进行响应的前提是要满足预设条件,即共享存储空间当前未处理不同于计算任务a的其它针对分布式数据库进行数据更新的其它计算任务的标识参数反馈,也就是说,共享存储空间当前已完成对前一个计算任务的标识参数的反馈,或者,前一个获取到标识参数的计算任务已完成对分布式数据库的相应的数据更新操作,这样共享存储空间才可以对计算任务a开始响应,并执行第一预设操作,例如该第一预设操作可以是共享存储空间的加锁操作,共享存储空间在锁定状态下,只能进行对已响应的计算任务a的标识参数的反馈操作,而停止对除计算任务a之外的其它计算任务的响应。进一步地,在此基础上,图2所示方法中操作s201第一计算任务从服务器集群的共享存储空间获取标识参数还包括:基于共享存储空间完成对第一计算任务的标识参数的反馈,或第一计算任务完成对分布式数据库的数据更新操作,共享存储空间执行第二预设操作。其中,上述第二预设操作用于恢复共享存储空间对前文所述的至少一个第二计算任务的响应。沿用上文中共享存储空间对计算任务a进行响应的例子,一种情形下,可以基于共享存储空间完成对计算任务a的标识参数的反馈,即当共享存储空间完成对计算任务a的标识参数的反馈时,或者在共享存储空间完成对计算任务a的标识参数的反馈之后的预设时间,共享存储空间执行第二预设操作。另一种情形下,共享存储空间向计算任务a反馈标识参数后,可以基于计算任务a完成对分布式数据库的数据更新操作,即当计算任务a完成对分布式数据库的数据更新操作时,向共享存储空间返回预设指令,共享存储空间基于该预设指令执行第二预设操作,或者在计算任务a完成对分布式数据库的数据更新操作之后的预设时间,计算任务a向共享存储空间返回预设指令,共享存储空间基于该预设指令执行第二预设操作。无论在哪种情形下,第二预设操作可以是与前文所述的加锁操作对应的共享存储空间的解锁操作,共享存储空间在解除锁定的状态下,就可以对其它计算任务进行响应,对其他计算任务响应的过程与对计算任务a进行响应的过程同理,不再赘述。在本公开的一个实施例中,图2所示方法中操作s201第一计算任务从服务器集群的共享存储空间获取标识参数包括:第一计算任务请求所述共享存储空间的指定接口,共享存储空间基于第一计算任务的请求将存储的标识参数反馈至第一计算任务,并按照预设规则对存储的标识参数进行变化,保存变化后的标识参数,或者,共享存储空间基于第一计算任务的请求按照预设规则对存储的标识参数进行变化,保存变化后的标识参数,并将变化后的标识参数反馈至第一计算任务。本实施例说明了共享存储空间向计算任务反馈标识参数的具体方式,共享存储空间中保存有标识参数,同一个标识参数不能被重复反馈给不同的计算任务,一个标识参数被反馈后,就会被新的标识参数所替代,新的标识参数是在前一个标识参数的基础上按照预设规则变化后得到的,新的标识参数可以是在前一次反馈完成后生成并保存在共享存储空间内,等下一次反馈时直接拿来使用,也可以是在当前反馈发生之前生成并保存在共享存储空间内,直接用来进行当前反馈。具体地,共享存储空间中所存储的标识参数可以是数值型的标识值,则上述按照预设规则对存储的标识参数进行变化,保存变化后的标识参数包括:共享存储空间对存储的标识值增加预设数值,得到变化后的标识值,将变化后的标识值替换变化前的标识值进行保存。其中,预设数值可以是正的数值也可以是负的数值,当预设数值是正的数值时,共享存储空间对各计算任务反馈的标识参数是随时间递增的标识值,当预设数值是负的数值时,共享存储空间对各计算任务反馈的标识参数是随时间递减的标识值,预设数值的绝对值的大小可以根据需要而定,表征了相邻标识参数的差别,无论是按照哪种规律变化的标识参数,不同的计算任务所获得的标识参数是不重复的,使得不同的计算任务基于不同的标识参数对分布式数据库所进行的每一个数据更新操作都是被唯一标识的,可被唯一索引的。应当理解,在其他实施例中,共享存储空间中所存储的标识参数可以是任意其他类型的参数,标识参数进行变化的规则也可以视需要而定,例如标识参数可以是字符或字符串,在此均不做限制。在本公开的一个实施例中,分布式数据库中以标识参数作为主键内容,则图2所示方法中操作s202第一计算任务基于标识参数将待写入数据存入分布式数据库中包括:第一计算任务基于待写入数据和所获取的标识参数对分布式数据库进行更新。也就是说,对于任一针对分布式数据库进行数据写入操作的计算任务,该计算任务对应的待写入数据为“a”,该计算任务从共享存储空间获取到的标识参数为“a”,则该计算任务基于标识参数“a”对分布式数据库进行数据写入操作时,是将待写入数据“a”存入分布式数据库中以标识参数“a”为主键的数据结构中,这样使得分布式数据库中每次写入的数据均以一个唯一的标识参数作为主键,实现了对分布式数据库中的数据的全局唯一性标识和索引。下面参考图3,结合具体实施例对图2所示的方法做进一步说明。图3示意性示出了根据本公开的实施例的计算任务针对分布式数据库进行数据写入操作的示意图。如图3所示,服务器集群中包括共享存储空间、分布式数据库和两个计算节点,计算节点1中包括计算任务1、计算任务2和计算任务3,计算节点2中包括计算任务4、计算任务5和计算任务6,计算任务1的任务内容是将键为“name”、值为“a”的数据写入分布式数据库中,计算任务2的任务内容是将键为“name”、值为“b”的数据写入分布式数据库中,计算任务3的任务内容是将键为“name”、值为“c”的数据写入分布式数据库中,计算任务4的任务内容是将键为“name”、值为“d”的数据写入分布式数据库中,计算任务5的任务内容是将键为“name”、值为“e”的数据写入分布式数据库中,计算任务6的任务内容是将键为“name”、值为“f”的数据写入分布式数据库中。在本实施例中,共享存储空间为redis数据库,分布式数据库为基于hadoop框架的hive数据库,分布式数据库当然也可以是如spark数据库、kudu数据库等其他类型的数据库。一般来说,现有方案中分布式数据库中所构建的数据结构仅为包含单一键的表,各计算任务在执行时只需将相应的值写入键为“name”的表中,如计算任务1将“a”写入分布式数据库中键为“name”的表中,计算任务2将“b”写入分布式数据库中键为“name”的表中,等等诸如此类,键为“name”的表中被写入了很多数据,但每个数据没有全局唯一性的索引和标识,难以查找和管理。而在本公开所提供的实施例中,两个计算节点上的不同计算任务收到的建表语句如下:说明本实施例中分布式数据库中所构建的数据结构为包含两个键的表,主键为字段id,副键为name,可以看出字段id为自增列,该字段id即为上文所述的标识参数。因此,每个计算任务在执行相应的数据写入操作时,需要先向共享存储空间请求获取标识参数,共享存储空间基于每个计算任务的请求向其反馈标识参数,每个计算任务再基于所获取的标识参数将相应的待写入数据存入分布式数据库。例如,字段id的初始值为0,共享存储空间redis数据库对各计算任务从前往后的响应顺序是计算任务1、计算任务4、计算任务2、计算任务5、计算任务6和计算任务3,redis数据库在对一个计算任务进行响应的过程中处于加锁状态,即停止对其他计算任务的响应,直至redis数据库完成对当前计算任务的字段id的响应,或直至当前计算任务完成基于字段id的数据写入操作,redis数据库才通过解锁操作恢复对其他计算任务的响应。当计算任务1在执行数据写入操作时,计算任务1先请求redis数据库的incr接口,redis数据库会将当前所存的字段id值自增加1得到id=1,然后记录下当前字段id=1并反馈给计算任务1,计算任务1收到id=1后,在hive数据库中写入一条键为(id,name)、值为(1,a)的数据。当计算任务4在执行数据写入操作时,计算任务4先请求redis数据库的incr接口,redis数据库会将当前所存的字段id值自增加1得到id=2,然后记录下当前字段id=2并反馈给计算任务4,计算任务4收到id=2后,在hive数据库中写入一条键为(id,name)、值为(2,d)的数据。当计算任务2在执行数据写入操作时,计算任务2先请求redis数据库的incr接口,redis数据库会将当前所存的字段id值自增加1得到id=3,然后记录下当前字段id=3并反馈给计算任务2,计算任务2收到id=3后,在hive数据库中写入一条键为(id,name)、值为(3,b)的数据。当计算任务5在执行数据写入操作时,计算任务5先请求redis数据库的incr接口,redis数据库会将当前所存的字段id值自增加1得到id=4,然后记录下当前字段id=4并反馈给计算任务5,计算任务5收到id=4后,在hive数据库中写入一条键为(id,name)、值为(4,e)的数据。当计算任务6在执行数据写入操作时,计算任务6先请求redis数据库的incr接口,redis数据库会将当前所存的字段id值自增加1得到id=5,然后记录下当前字段id=5并反馈给计算任务6,计算任务6收到id=5后,在hive数据库中写入一条键为(id,name)、值为(5,f)的数据。当计算任务3在执行数据写入操作时,计算任务3先请求redis数据库的incr接口,redis数据库会将当前所存的字段id值自增加1得到id=6,然后记录下当前字段id=6并反馈给计算任务3,计算任务3收到id=6后,在hive数据库中写入一条键为(id,name)、值为(6,c)的数据。以上各计算任务的数据写入过程使得分布式数据库中存储的数据如下表1所示:表1idname1a2d3b4e5f6c可见,在每个计算任务写数据时,对于自增列的标识参数,计算任务的数据引擎调用redis数据库的incr接口,得到一个自增后的标识参数,可以通过设定步长去控制incr接口所对应的每次增长大小,本例中增长步长为“1”,redis数据库本身对高并发读写的处理能力,也有效地保证了最终自增id字段的值是有序不重复的。本方案可以填补分布式数据库自动增长主键列的基本功能的空白,可以实现分布式数据库根据指定步长增长的主键列,可以高性能地完成实现分布式数据库主键列的自动增长。应当理解,上述服务器集群中计算节点的数量、各计算节点中计算任务的数量、计算任务的任务内容、共享存储空间的类型、分布式数据库的类型、共享存储空间对计算任务的响应顺序、等等均为示例,可以根据需要进行调整和改变。图4示意性示出了根据本公开的实施例的服务器集群的数据处理装置的框图。如图4所示,服务器集群的数据处理装置400包括数据更新模块410、调度处理模块420和数据存储模块430。该服务器集群的数据处理装置400可以执行上面参考图2~图3描述的方法,以实现针对分布式数据存储的全局唯一性标识和索引。具体地,数据更新模块410包括针对数据存储模块进行数据更新的第一数据更新模块411和至少一个第二数据更新模块412(图中仅示出一个第二数据更新模块进行示例),所述至少一个第二数据更新模块是指除第一数据更新模块411之外的其它针对数据存储模块进行数据更新的数据更新模块。第一数据更新模块411用于在执行针对分布式数据库的数据更新操作时,从调度处理模块420获取标识参数,并基于所获取的标识参数将待写入数据存入数据存储模块430。调度处理模块420用于基于所述第一数据更新模块411的访问向第一数据更新模块411反馈标识参数。以及,调度处理模块420可由上述至少一个第二数据更新模块412访问并向第二数据更新模块412反馈标识参数。数据存储模块430为分布式存储模块,用于基于标识参数对待写入数据进行存储。可见,在图4所示的装置中,任一数据更新模块在对数据存储模块进行数据更新时,不再是如现有技术一般直接对分布式数据库执行相应的数据更新操作中,而是先从调度处理模块获取标识参数,基于所获取标识参数再对数据存储模块执行数据更新操作,使得数据存储模块所接收的每个数据更新操作都与一个标志参数相对应,使得数据存储模块虽然是分布式存储模块但其中所存储的数据均可以被全局唯一性地标识和索引,通过各数据更新操作所对应的标识参数就可以便捷地对分布式存储的数据进行查找、使用、管理和处理。在本公开的实施例中,第一数据更新模块411可以与上文所述的第一计算任务相对应,第二数据更新模块412可以与上文所述的第二计算任务相对应,调度处理模块420可以为服务器集群中的共享存储空间,数据存储模块430可以为服务器集群中的分布式数据库,上文中通过各实施例已详细说明,重复的部分在此不再赘述。在本公开的一个实施例中,调度处理模块420基于第一数据更新模块411的访问向第一数据更新模块411反馈标识参数包括:调度处理模块420用于在进行对第一数据更新模块411的标识参数反馈时,在完成对所述标识参数的反馈之前,停止对上述至少一个第二数据更新模块412的响应,使得上述至少一个第二数据更新模块412无法获取标识参数。其中,第一数据更新模块411与上述至少一个第二数据更新模块412中不同的数据更新操作获取的标识参数不同。在本公开的另一个实施例中,调度处理模块420基于第一数据更新模块411的访问向第一数据更新模块411反馈标识参数包括:调度处理模块420用于在进行对第一数据更新模块411的标识参数反馈时,在第一数据更新模块411完成对数据存储模块430的数据更新操作之前,停止对上述至少一个第二数据更新模块412的响应,使得上述至少一个第二数据更新模块412无法获取标识参数。其中,第一数据更新模块411与上述至少一个第二数据更新模块412中不同的数据更新操作获取的标识参数不同。具体地,作为可选的实施例,第一数据更新模块411在执行针对数据存储模块430的数据更新操作时,从调度处理模块420获取标识参数包括:第一数据更新模块411用于在执行针对数据存储模块430的数据更新操作时,向调度处理模块420发送标识参数获取请求。调度处理模块420基于第一数据更新模块411的访问向第一数据更新模块411反馈标识参数包括:调度处理模块411用于在满足预设条件时,进行对第一数据更新模块411的标识参数反馈,并执行第一预设操作。其中,预设条件表征调度处理模块420当前未处理不同于第一数据更新模块411的针对数据存储模块430的计算任务的标识参数反馈,第一预设操作用于停止调度处理模块420对上述至少一个第二数据更新模块412的响应。进一步地,调度处理模块420基于第一数据更新模块411的访问向第一数据更新模块411反馈标识参数还包括:调度处理模块420用于基于调度处理模块420完成对第一数据更新模块411的标识参数的反馈,或基于第一数据更新模块411完成对数据存储模块430的数据更新操作,执行第二预设操作。其中,第二预设操作用于恢复调度处理模块420对上述至少一个第二数据更新模块412的响应。在本公开的一个实施例中,第一数据更新模块411从调度处理模块420获取标识参数包括:第一数据更新模块411用于请求调度处理模块420的指定接口。调度处理模块420基于第一数据更新模块411的访问向第一数据更新模块411反馈标识参数包括:调度处理模块420用于基于第一数据更新模块411的请求将存储的标识参数反馈至第一数据更新模块411,并按照预设规则对存储的标识参数进行变化,保存变化后的标识参数;或者,调度处理模块420基于第一数据更新模块411的请求按照预设规则对存储的标识参数进行变化,保存变化后的标识参数,并将变化后的标识参数反馈至第一数据更新模块411。其中,调度处理模块420按照预设规则对存储的标识参数进行变化,保存变化后的标识参数包括:调度处理模块420用于对存储的标识值增加预设数值,得到变化后的标识值,将变化后的标识值替换变化前的标识值进行保存。在本公开的一个实施例中,数据存储模块430中以所述标识参数作为主键内容,则第一数据更新模块411基于所获取的标识参数将待写入数据存入数据存储模块430包括:第一数据更新模块411用于基于待写入数据和相应的标识参数对数据存储模块430进行更新。需要说明的是,装置部分实施例中各模块/单元/子单元等的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再赘述。根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。例如,第一数据更新模块411、至少一个第二数据更新模块412、调度处理模块420、以及数据存储模块430中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一数据更新模块411、至少一个第二数据更新模块412、调度处理模块420、以及数据存储模块430中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一数据更新模块411、至少一个第二数据更新模块412、调度处理模块420、以及数据存储模块430中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。图5示意性示出了根据本公开实施例的适于实现上文描述的方法的服务器集群的框图。图5示出的服务器集群仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。如图5所示,服务器集群500包括处理器510和计算机可读存储介质520。该服务器集群500可以执行根据本公开实施例的方法。具体地,处理器510例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器510还可以包括用于缓存用途的板载存储器。处理器510可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。计算机可读存储介质520,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。计算机可读存储介质520可以包括计算机程序521,该计算机程序521可以包括代码/计算机可执行指令,其在由处理器510执行时使得处理器510执行根据本公开实施例的方法或其任何变形。计算机程序521可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序521中的代码可以包括一个或多个程序模块,例如包括521a、模块521b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器510执行时,使得处理器510可以执行根据本公开实施例的方法或其任何变形。根据本发明的实施例,第一数据更新模块411、至少一个第二数据更新模块412、调度处理模块420、以及数据存储模块430中的至少一个可以实现为参考图5描述的计算机程序模块,其在被处理器510执行时,可以实现上面描述的相应操作。本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1