发明内容
基于此,有必要针对上述技术问题,提供一种能够提高资源数据处理效率和处理准确性的资源数据处理方法、装置、计算机设备和存储介质。
一种资源数据处理方法,所述方法包括:接收资源获取端发送的资源数据获取请求,所述资源数据获取请求用于请求获取多个资源相关数据;确定所述资源数据获取请求所对应的资源数据存储队列,所述资源数据存储队列中存储的资源相关数据是并行写入的;从所述资源数据存储队列中获取所述资源数据获取请求所请求的多个目标资源相关数据;根据资源获取端所对应的获取端标识确定目标处理队列,将所述目标资源相关数据发送到所述目标处理队列中,以使得所述目标处理队列所对应的处理单元将所述目标资源相关数据发送给所述资源获取端。
在其中一个实施例中,所述方法还包括:接收待写入的资源相关数据集合,所述资源相关数据集合包括多个待写入的第一资源相关数据;根据所述资源相关数据集合中,各个所述第一资源相关数据所对应的资源转移时间的先后顺序,确定所述第一资源相关数据所对应的资源相关数据标识;按照所述资源相关数据集合中各个所述第一资源相关数据所对应的资源相关数据标识的标识顺序,将所述资源相关数据集合中的第一资源相关数据写入到所述资源数据存储队列中。
在其中一个实施例中, 所述按照所述资源相关数据集合中各个所述第一资源相关数据所对应的资源相关数据标识的标识顺序,将所述资源相关数据集合中的第一资源相关数据写入到所述资源数据存储队列中包括:按照所述资源相关数据集合中各个所述第一资源相关数据所对应的资源相关数据标识的标识顺序,将所述资源相关数据集合中的第一资源相关数据写入到环形队列中;从所述环形队列中并行读取所述第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中。
在其中一个实施例中,从所述环形队列中并行读取所述第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中包括:确定并行读取次数,获取所述资源相关数据集合中的资源相关数据的数据数量;根据所述数据数量以及所述并行读取次数确定并行读取数量;重复执行从所述环形队列中并行读取所述并行读取数量的第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中,直至达到所述并行读取次数。
在其中一个实施例中,利用多个数据读取线程进行数据并行读取,所述从所述环形队列中并行读取所述第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中包括:当前数据读取线程确定所述环形队列中的当前槽位,确定所述当前槽位所对应的当前状态值;将所述当前状态值与数据未读取所对应的状态值进行对比,若对比一致,则读取所述当前槽位中的第一资源相关数据,并对当前槽位的状态值进行变更;若对比不一致,则更新当前槽位。
在其中一个实施例中,所述根据获取端标识确定目标处理队列包括:获取目标数值以及所述资源获取端所对应的获取端标识;根据所述目标数值对所述获取端标识进行取模运算,得到目标取模数值;根据取模数值与队列之间的对应关系,确定所述目标数值所对应的处理队列,作为所述目标处理队列。
在其中一个实施例中,所述获取目标数值包括:确定对数据进行处理的处理线程数量,其中处理线程与处理队列具有一一对应关系;将所述处理线程数量作为所述目标数值。
一种资源数据处理装置,所述装置包括:资源相关数据获取模块,用于接收资源获取端发送的资源数据获取请求,所述资源数据获取请求用于请求获取多个资源相关数据;资源数据存储队列确定模块,用于确定所述资源数据获取请求所对应的资源数据存储队列,所述资源数据存储队列中存储的资源相关数据是并行写入的;目标资源相关数据获取模块,用于从所述资源数据存储队列中获取所述资源数据获取请求所请求的多个目标资源相关数据;目标资源相关数据发送模块,用于根据资源获取端所对应的获取端标识确定目标处理队列,将所述目标资源相关数据发送到所述目标处理队列中,以使得所述目标处理队列所对应的处理单元将所述目标资源相关数据发送给所述资源获取端。
在其中一个实施例中,所述装置包括:资源相关数据集合接收模块,用于接收待写入的资源相关数据集合,所述资源相关数据集合包括多个待写入的第一资源相关数据;资源相关数据标识确定模块,用于根据所述资源相关数据集合中,各个所述第一资源相关数据所对应的资源转移时间的先后顺序,确定所述第一资源相关数据所对应的资源相关数据标识;第一资源相关数据写入模块,用于按照所述资源相关数据集合中各个所述第一资源相关数据所对应的资源相关数据标识的标识顺序,将所述资源相关数据集合中的第一资源相关数据写入到所述资源数据存储队列中。
在其中一个实施例中,第一资源相关数据写入模块,用于按照所述资源相关数据集合中各个所述第一资源相关数据所对应的资源相关数据标识的标识顺序,将所述资源相关数据集合中的第一资源相关数据写入到环形队列中;从所述环形队列中并行读取所述第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中。
在其中一个实施例中,第一资源相关数据写入模块,用于确定并行读取次数,获取所述资源相关数据集合中的资源相关数据的数据数量;根据所述数据数量以及所述并行读取次数确定并行读取数量;重复执行从所述环形队列中并行读取所述并行读取数量的第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中,直至达到所述并行读取次数。
在其中一个实施例中,第一资源相关数据写入模块,用于当前数据读取线程确定所述环形队列中的当前槽位,确定所述当前槽位所对应的当前状态值;将所述当前状态值与数据未读取所对应的状态值进行对比,若对比一致,则读取所述当前槽位中的第一资源相关数据,并对当前槽位的状态值进行变更;若对比不一致,则更新当前槽位。
在其中一个实施例中,目标资源相关数据发送模块,用于获取目标数值以及所述资源获取端所对应的获取端标识;根据所述目标数值对所述获取端标识进行取模运算,得到目标取模数值;根据取模数值与队列之间的对应关系,确定所述目标数值所对应的处理队列,作为所述目标处理队列。
在其中一个实施例中,目标资源相关数据发送模块,用于确定对数据进行处理的处理线程数量,其中处理线程与处理队列具有一一对应关系;将所述处理线程数量作为所述目标数值。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:接收资源获取端发送的资源数据获取请求,所述资源数据获取请求用于请求获取多个资源相关数据;确定所述资源数据获取请求所对应的资源数据存储队列,所述资源数据存储队列中存储的资源相关数据是并行写入的;从所述资源数据存储队列中获取所述资源数据获取请求所请求的多个目标资源相关数据;根据资源获取端所对应的获取端标识确定目标处理队列,将所述目标资源相关数据发送到所述目标处理队列中,以使得所述目标处理队列所对应的处理单元将所述目标资源相关数据发送给所述资源获取端。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:接收资源获取端发送的资源数据获取请求,所述资源数据获取请求用于请求获取多个资源相关数据;确定所述资源数据获取请求所对应的资源数据存储队列,所述资源数据存储队列中存储的资源相关数据是并行写入的;从所述资源数据存储队列中获取所述资源数据获取请求所请求的多个目标资源相关数据;根据资源获取端所对应的获取端标识确定目标处理队列,将所述目标资源相关数据发送到所述目标处理队列中,以使得所述目标处理队列所对应的处理单元将所述目标资源相关数据发送给所述资源获取端。
上述资源数据处理方法、装置、计算机设备和存储介质,通过接收资源获取端发送的资源数据获取请求,其中,资源数据获取请求用于请求获取多个资源相关数据;确定资源数据获取请求所对应的资源数据存储队列,资源数据存储队列中存储的资源相关数据是并行写入的;从上述资源数据存储队列中获取资源数据获取请求所请求的多个目标资源相关数据;根据资源获取端所对应的获取端标识确定目标处理队列,将目标资源相关数据发送到目标处理队列中,以使得上述目标处理队列通过所对应的处理单元将目标资源相关数据发送给资源获取端。通过将资源相关数据并行写入资源数据存储队列中,提高了存储效率;同时,根据获取端标识可以确定目标队列,并通过目标队列中的处理单元将资源相关数据发送给资源获取端,能够达到同一获取端标识对应的目标资源相关数据通过对应的处理单元进行发送的目的,保证了获取端获取到的目标资源相关数据的准确性。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的资源数据处理方法,可以应用于如图1所示的应用环境中,具体应用到一种资源数据处理系统中。该资源数据处理系统包括终端102和服务器104,其中,终端102通过网络与服务器104进行通信。资源获取端为终端102,服务器104执行一种资源数据处理方法,具体的,服务器104接收资源获取端发送的资源数据获取请求,上述资源数据获取请求用于请求获取多个资源相关数据;确定资源数据获取请求所对应的资源数据存储队列,上述资源数据存储队列中存储的资源相关数据是并行写入的;从资源数据存储队列中获取资源数据获取请求所请求的多个目标资源相关数据;根据资源获取端即终端102所对应的获取端标识确定目标处理队列,将目标资源相关数据发送到上述目标处理队列中,以使得目标处理队列所对应的处理单元将目标资源相关数据发送给资源获取端,即终端102。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种资源数据处理方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S202,接收资源获取端发送的资源数据获取请求,资源数据获取请求用于请求获取多个资源相关数据。
其中,资源相关数据是指与资源相关的数据。例如,证券系统中的客户资金数据、客户持仓数据等。资源获取端是指获取资源数据的一端。
具体地,服务器通过请求接收模块接收资源获取端发送的资源数据获取请求,接收资源数据。该资源数据是多个资源相关数据组成的数据,资源数据获取请求可以获取多个资源相关数据。上述资源相关数据可以是资源数据对应的元数据。
步骤S204,确定资源数据获取请求所对应的资源数据存储队列,资源数据存储队列中存储的资源相关数据是并行写入的。
其中,资源数据存储队列是指存储有资源数据的存储队列。存储队列是指能够使数据输入和输出的存储结构。并行写入是指写入过程是由多个处理单元并行完成的。上述处理单元是指服务器中的操作系统能够处理数据的最小单元。例如,处理单元为线程。
具体地,服务器在接收到资源获取端发送的资源数据获取请求后,可以通过资源数据获取请求中的获取标识与存储队列标识时间之间的对应关系,确定资源数据获取请求所对应的资源数据存储队列。
步骤S206,从资源数据存储队列中获取资源数据获取请求所请求的多个目标资源相关数据。
具体地,在确定资源数据获取请求所对应的资源数据存储队列之后,从该资源数据存储队列中,获取多个目标资源相关数据。例如,在证券系统中,服务器可以通过客户终端发送的交易单据的获取请求,从存储有交易单据元数据的存储队列中获取多个存储有交易单据元数据。
步骤S208,根据资源获取端所对应的获取端标识确定目标处理队列,将目标资源相关数据发送到目标处理队列中,以使得目标处理队列所对应的处理单元将目标资源相关数据发送给资源获取端。
其中,获取端标识是指能够唯一确定获取端的标识;在证券系统中,该标识可以是获取端的客户号码,该客户号码是指开户时证券公司设定的客户业务代码等。
上述资源数据处理方法中,通过接收资源获取端发送的资源数据获取请求,其中,资源数据获取请求用于请求获取多个资源相关数据;确定资源数据获取请求所对应的资源数据存储队列,资源数据存储队列中存储的资源相关数据是并行写入的;从上述资源数据存储队列中获取资源数据获取请求所请求的多个目标资源相关数据;根据资源获取端所对应的获取端标识确定目标处理队列,将目标资源相关数据发送到目标处理队列中,以使得上述目标处理队列通过所对应的处理单元将目标资源相关数据发送给资源获取端。通过将资源相关数据并行写入资源数据存储队列中,提高了存储效率;同时,根据获取端标识可以确定目标队列,并通过目标队列中的处理单元将资源相关数据发送给资源获取端,能够达到同一获取端标识对应的目标资源相关数据通过对应的处理单元进行发送的目的,保证了获取端获取到的目标资源相关数据的准确性。
在一个实施例中,如图3所示,资源数据处理方法还包括:
步骤S302,接收待写入的资源相关数据集合,其中,资源相关数据集合包括多个待写入的第一资源相关数据。
具体地,服务器通过数据接收模块,接收多个待写入的第一资源相关数据资源,该多个第一资源相关数据资源组成了资源相关数据集合。
在一个实施例中,证券交易系统的服务器实时接收业务数据,任意一条业务数据有更新,会将更新的业务数据实时更新到证券交易系统的服务器上,证券交易系统的服务器将上述业务数据发送到业务数据获取端的服务器,业务数据获取端的服务器相应的接收到业务数据。上述业务数据可以理解为资源相关数据。
步骤S304,根据资源相关数据集合中,各个第一资源相关数据所对应的资源转移时间的先后顺序,确定第一资源相关数据所对应的资源相关数据标识。
其中,资源转移时间是指资源相关数据产生的时间。资源相关数据标识是指能够唯一确定资源相关数据的标识。
具体地,服务器在接收到待写入的资源相关数据集合后,根据资源相关数据集合中第一资源相关数据的资源转移时间的先后顺序,对第一资源相关数据按照从小到大的顺序进行编码,该编码可以唯一标识上述资源相关数据。
步骤S306,按照资源相关数据集合中各个第一资源相关数据所对应的资源相关数据标识的标识顺序,将资源相关数据集合中的第一资源相关数据写入到资源数据存储队列中。
具体地,服务器在确定第一资源相关数据所对应的资源相关数据标识后,将上述资源相关数据标识进行标识排序,得到资源相关数据序列,将第一资源相关数据依次存储到资源数据存储队列中。
在一个实施例中,资源相关数据标识和资源数据存储队列中的存储位置标识存在一一对应的关系,服务器会将资源相关数据标识对应的第一资源相关数据,存放到与资源相关数据标识有对应关系的存储位置标识对应的存储位置中。
在一个实施例中,资源相关数据标识可以使用编码形式进行标记,资源数据存储队列中的存储位置标识也可以使用编码形式进行标记,上述两个编码相同时,将资源相关数据标识对应的第一资源相关数据存放到相同编码的存储位置标识对应的存储位置中。
本实施例中,通过接收待写入的资源相关数据集合,根据资源相关数据集合中,各个第一资源相关数据所对应的资源转移时间的先后顺序,确定第一资源相关数据所对应的资源相关数据标识,按照资源相关数据集合中各个第一资源相关数据所对应的资源相关数据标识的标识顺序,将资源相关数据集合中的第一资源相关数据写入到资源数据存储队列中。能够达到将第一资源相关数据准确高效地实现存储的目的。
在一个实施例中,如图4所示,按照资源相关数据集合中各个第一资源相关数据所对应的资源相关数据标识的标识顺序,将资源相关数据集合中的第一资源相关数据写入到资源数据存储队列中包括:
步骤S402,按照资源相关数据集合中各个第一资源相关数据所对应的资源相关数据标识的标识顺序,将资源相关数据集合中的第一资源相关数据写入到环形队列中。
其中,环形队列是指对第一资源相关数据进行环形存储的结构,该结构具有头部和尾部,当对第一资源相关数据完成整个环形队列从头部到尾部的存储位置后,继续从该环形队列的头部开始存储第一资源相关数据,以此类推,直至将第一资源相关数据集合中的第一资源相关数据写入到环形队列中。
具体地,各个第一资源相关数据所对应的资源相关数据标识与环形队列中的存储位置标识存在对应关系,可以按照资源相关数据集合中各个第一资源相关数据所对应的资源相关数据标识顺序,将资源相关数据集合中的第一资源相关数据写入到环形队列中。
在一个实施例中,资源相关数据标识和环形队列存储位置标识均采用十进制编码形式,通过资源相关数据标识对环形队列尾部存储位置标识进行取模运算,得到第一资源相关数据对应的存储位置。将资源相关数据集合中的第一资源相关数据写入到环形队列中。例如,资源相关数据标识为10,环形队列存储位置标识从1到8,环形队列尾部存储位置标识为8,则将资源相关数据标识为10的第一资源相关数据存储在存储位置标识为2的存储位置处。
步骤S404,从环形队列中并行读取第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中。
具体地,服务器将资源相关数据集合中的第一资源相关数据写入到环形队列中后,从该环形队列中,利用多线程和多队列的形式并行读取第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中。
本实施例中,通过按照资源相关数据集合中各个第一资源相关数据所对应的资源相关数据标识的标识顺序,将资源相关数据集合中的第一资源相关数据写入到环形队列中,从环形队列中并行读取第一资源相关数据,将读取的第一资源相关数据写入到资源数据存储队列中。能够达到将第一资源相关数据快速写入到资源数据存储队列中的目的。
在一个实施例中,如图5所示,从环形队列中并行读取第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中包括:
步骤S502,确定并行读取次数,获取资源相关数据集合中的资源相关数据的数据数量。
其中,并行读取次数是指读取第一资源相关数据的次数。例如,读取第一资源相关数据的次数为10次时,能够将资源相关数据集合中的资源相关数据读取完成,则并行读取次数为10。
具体地,服务器通过设定的单次线程总数,确定并行读取次数;同时,通过获取到的资源相关数据集合中的资源相关数据的标识编码,获取资源相关数据集合中的资源相关数据的数据数量。
在一个实施例中,通过线程数确定插件,得到服务器运行的线程数,通过线程数确定并行读取次数;同时,在资源相关数据集合中的资源相关数据按照资源相关数据的生成时间的先后,对资源相关数据集合中的资源相关数据以1为首个编码,进行从小到大编码,根据最大编码确定资源相关数据集合中的资源相关数据的数据数量。例如,资源相关数据集合中的资源相关数据的最大编码为101,则资源相关数据集合中的资源相关数据的数据数量为101。
步骤S504,根据数据数量以及并行读取次数确定并行读取数量。
其中,并行读取数量是指并行读取过程中,并行的线程数量。
具体地,服务器在确定并行读取次数,获取资源相关数据集合中的资源相关数据的数据数量后,根据数据数量与并行读取次数之间的函数关系,确定并行读取数量。例如,数据数量为2000,并行读取次数为100,则并行读取数量为20,也即一次读取的线程数量为20。
步骤S506,重复执行从环形队列中并行读取数量的第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中,直至达到并行读取次数。
具体地,服务器在确定并行读取次数、资源相关数据集合中的资源相关数据的数据数量以及并行读取数量后,实时读取资源相关数据集合中的资源相关数据,当读取次数达到并行读取次数后,完成资源相关数据集合中的资源相关数据的读取。例如,确定并行读取次数为50次,数据数量为1000个,得到并行读取数量为20,每次读取20个资源相关数据,该20个资源相关数据可以通过不同队列的不同线程完成,也可以通过同一队列的同一线程完成。
本实施例中,通过确定并行读取次数,获取资源相关数据集合中的资源相关数据的数据数量,根据数据数量以及并行读取次数确定并行读取数量,重复执行从环形队列中并行读取数量的第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中,直至达到并行读取次数,能够达到将资源相关数据集合中的资源相关数据从环形队列中快速读取到资源数据存储队列中,从而提高了资源数据处理效率。
在一个实施例中,如图6所示,利用多个数据读取线程进行数据并行读取,从环形队列中并行读取第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中包括:
步骤S602,当前数据读取线程确定环形队列中的当前槽位,确定当前槽位所对应的当前状态值。
其中,槽位是指数据的存储地址;当前状态值是指服务器中当前槽位的期望变量值。不同的变量值可以存储不同的数据。
具体地,每个数据读取线程都具有线程编码,根据该线程编码与环形队列中的槽位的对应关系,确定当前数据读取线程确定环形队列中的当前槽位,并根据当前槽位,获取到当前槽位变量值的期望变量值。
步骤S604将当前状态值与数据未读取所对应的状态值进行对比,若对比一致,则读取当前槽位中的第一资源相关数据,并对当前槽位的状态值进行变更;若对比不一致,则更新当前槽位。
具体地,在获取到当前槽位所对应的当前状态值后,将当前状态值与数据未读取所对应的状态值进行对比,若对比一致,则读取当前槽位中的第一资源相关数据,并对当前槽位的状态值进行变更,变更为新的槽位的状态值,以便于进行下一轮的状态值对比。若对比不一致,则更新当前槽位,进行下一个槽位的状态值对比。
本实施例中,通过当前数据读取线程确定环形队列中的当前槽位,确定当前槽位所对应的当前状态值,将当前状态值与数据未读取所对应的状态值进行对比,若对比一致,则读取当前槽位中的第一资源相关数据,并对当前槽位的状态值进行变更;若对比不一致,则更新当前槽位。能够达到读取当前槽位中的第一资源相关数据时,读取线程之间的冲突,减少读取延时,提高第一资源相关数据的读取效率。
在一个实施例中,如图7所示,根据获取端标识确定目标处理队列包括:
步骤S702,获取目标数值以及资源获取端所对应的获取端标识。
其中,目标数值是指读取第一资源相关数据所设定的线程数量。
具体地,服务器通过线程查询脚本,获取到目标数值;同时,通过请求接收模块,获取到资源获取端发送的资源获取请求中携带的获取端标识。
步骤S704,根据目标数值对获取端标识进行取模运算,得到目标取模数值。
具体地,服务器在获取目标数值以及资源获取端所对应的获取端标识后,对目标数值对获取端标识进行取模运算,将取模作为目标取模数值。
在一个实施例中,也可以通过获取端标识对目标数值进行取模运算,得到目标取模数值。例如,获取端标识为100,目标数值为20,则目标取模数值为获取端标识与目标数值进行取模,即得到的目标取模数值为5。
步骤S706,根据取模数值与队列之间的对应关系,确定目标数值所对应的处理队列,作为目标处理队列。
具体地,取模数值与队列之间存在一一对应的关系,在得到目标取模数值之后,通过目标取模数值,可以确定队列。
在一个实施例中,队列设置有队列编码,取模数值与队列编码存在预设的对应关系,当满足上述对应关系时,将目标数值所对应的处理队列,作为目标处理队列。
本实施例中,通过获取目标数值以及资源获取端所对应的获取端标识,根据目标数值对获取端标识进行取模运算,得到目标取模数值,根据取模数值与队列之间的对应关系,确定目标数值所对应的处理队列,作为目标处理队列,能够达到得到准确的目标处理队列的目的,从而提高获取端获取资源相关数据的准确性。
在一个实施例中,如图8所示,获取目标数值包括:
步骤S802,确定对数据进行处理的处理线程数量,其中处理线程与处理队列具有一一对应关系。
具体地,服务器通过线程数量获取脚本,确定对数据进行处理的处理线程数量,上述处理线程与处理队列具有一一对应关系。
步骤S804,将处理线程数量作为目标数值。
具体地,在确定对数据进行处理的处理线程数量之后,将该处理线程数量作为目标数值。
本实施例中,通过确定对数据进行处理的处理线程数量,其中处理线程与处理队列具有一一对应关系,将处理线程数量作为目标数值,能够达到准确得到目标数值的目的。
在一个实施例中,如图9所示,服务器将接收到的,存放在内存中的数据写入缓存队列;通过多线程方式从该缓存队列中读取数据,并在解析数据后将解析得到的数据放入环型队列,其中解析数据是将数据添加上全局唯一号;写入环型队列时的位置同样根据全局唯一号确定。例如,按照全局唯一号从小到大的顺序将数据写入环形队列中,以使解析后的数据能够写入环型队列对应的槽位。其中,全局唯一号可以是为各个数据设置的唯一编号,在整个数据存储和处理过程中,全局唯一号都会作为对应数据的标识。从环型队列分批读取解析后的消息。数据读取线程从环型队列中读取数据时,按顺序读取,如果有槽位为空,则对环形队列的槽位进行轮询直到读取到数据。通过多线程将已经解析的数据并行存入数据库,在完成数据入库之后,可以将已入库的数据写入环型队列中。状态消息队列可以获取各个数据在数据库中的写入状态,通过该写入状态获取数据写入数据库的更新状态,当消息状态更新后可以认为完成了数据写入数据库的过程,从而对端的终端或者服务器可以从环型队列中读取数据并基于所读取的数据执行对应的业务流程。例如,在证券交易过程中产生的数据都会包含客户信息,该客户信息使用客户号表示。当需要从数据库中读取数据时,从环型队列中依次取不同批次的数据,使用客户号对执行线程总数进行取模,将取模结果作为数据对应的队列标识,并将消息写入对应的并行队列中。其中的取模是一种数学计算,即取余数。本实施例能够实现同一个客户的数据由同一个线程完成,从而保证同一个客户数据的完整性和准确性。
在一个实施例中,以证券系统中订单状态为例进行阐述上述方法的实现过程。假设服务器接收到过去一周内券商系统中多个客户的订单状态数据,该订单状态数据可以是客户的股票购入价格、每日盈亏、持股盈亏等,这些订单状态数据存储在券商系统的内存中。服务器将所有的订单状态数据从内存写入缓存队列。多线程从缓存队列中读取订单状态数据,并为上述各个订单状态数据设置全局唯一号,并在携带有全局唯一号的订单状态数据放入环型队列对应的槽位上。可以理解的,服务器可以按照订单状态数据的生成时间顺序来设置全局唯一号,生成时间越早的全局唯一号越小,生成时间越晚的全局唯一号越大。从环型队列分批读取已经解析的订单状态数据。从环型队列读取订单状态数据时,按顺序读取,如果环形队列中有槽位为空,则对其他槽位进行轮询,直到读取到订单状态数据。当读取到的订单状态数据已经达到数据读取线程的数据处理上限时,将上述读取到的数据作为一批数据进行发送。其他数据等待下一批读取并发送。可以理解的,也可以按照全局唯一号从环型队列中读取特定时间内的订单状态数据,例如:分批从环型队列中读取每一天24小时内的订单状态数据。利用多线程对已经解析的订单状态数据并行写入数据库,并进行数据写入状态的更新,入库完成后写入环型队列。当接收到终端发送的针对某个客户的订单状态查询请求时,获取请求中与终端对应的客户号,从环型队列中读取与客户号对应的订单状态数据。
在一个实施例中,在终端读取数据库中的订单状态数据时,数据库对应的服务器获取到终端发送的读取请求中的客户号,利用订单状态数据量对客户号进行取模,将取模结果作为标识将订单状态数据写入并行队列中。并行队列根据取模结果进行验证,若并行队列的标识与取模结果对应或者一致,则表示写入并行队列中的订单状态数据为上述客户号对应的订单状态数据。本实施例保证同一客户的订单状态数据写入到同一队列中,从而保证获取到的订单状态数据的完整性和正确性。可以理解的,同一队列中可以存在多线程处理过程,但是同一线程需要保证处理同一客户的订单状态数据。
应该理解的是,虽然图2-8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-8中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图10所示,提供了一种资源数据处理装置1000,包括:资源相关数据获取模块1002、资源数据存储队列确定模块1004、目标资源相关数据获取模块1006和目标资源相关数据发送模块1008,其中:资源相关数据获取模块1002,用于接收资源获取端发送的资源数据获取请求,资源数据获取请求用于请求获取多个资源相关数据;资源数据存储队列确定模块1004,用于确定资源数据获取请求所对应的资源数据存储队列,资源数据存储队列中存储的资源相关数据是并行写入的;目标资源相关数据获取模块1006,用于从资源数据存储队列中获取资源数据获取请求所请求的多个目标资源相关数据;目标资源相关数据发送模块1008,用于根据资源获取端所对应的获取端标识确定目标处理队列,将目标资源相关数据发送到目标处理队列中,以使得目标处理队列所对应的处理单元将目标资源相关数据发送给资源获取端。
在一个实施例中,装置包括:资源相关数据集合接收模块,用于接收待写入的资源相关数据集合,资源相关数据集合包括多个待写入的第一资源相关数据;资源相关数据标识确定模块,用于根据资源相关数据集合中,各个第一资源相关数据所对应的资源转移时间的先后顺序,确定第一资源相关数据所对应的资源相关数据标识;第一资源相关数据写入模块,用于按照资源相关数据集合中各个第一资源相关数据所对应的资源相关数据标识的标识顺序,将资源相关数据集合中的第一资源相关数据写入到资源数据存储队列中。
在一个实施例中,第一资源相关数据写入模块,用于按照资源相关数据集合中各个第一资源相关数据所对应的资源相关数据标识的标识顺序,将资源相关数据集合中的第一资源相关数据写入到环形队列中;从环形队列中并行读取第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中。
在一个实施例中,第一资源相关数据写入模块,用于确定并行读取次数,获取资源相关数据集合中的资源相关数据的数据数量;根据数据数量以及并行读取次数确定并行读取数量;重复执行从环形队列中并行读取数量的第一资源相关数据,将并行读取的第一资源相关数据写入到资源数据存储队列中,直至达到并行读取次数。
在一个实施例中,第一资源相关数据写入模块,用于当前数据读取线程确定环形队列中的当前槽位,确定当前槽位所对应的当前状态值;将当前状态值与数据未读取所对应的状态值进行对比,若对比一致,则读取当前槽位中的第一资源相关数据,并对当前槽位的状态值进行变更;若对比不一致,则更新当前槽位。
在一个实施例中,目标资源相关数据发送模块,用于获取目标数值以及资源获取端所对应的获取端标识;根据目标数值对获取端标识进行取模运算,得到目标取模数值;根据取模数值与队列之间的对应关系,确定目标数值所对应的处理队列,作为目标处理队列。
在一个实施例中,目标资源相关数据发送模块,用于确定对数据进行处理的处理线程数量,其中处理线程与处理队列具有一一对应关系;将处理线程数量作为目标数值。
关于资源相关数据处理装置的具体限定可以参见上文中对于资源相关数据处理方法的限定,在此不再赘述。上述资源相关数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储资源相关数据处理数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种资源相关数据处理方法。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。