基于分布式服务器集群的数据计算方法及系统与流程

文档序号:12719070阅读:366来源:国知局
基于分布式服务器集群的数据计算方法及系统与流程

本申请涉及通信领域,尤其涉及一种基于分布式服务器集群的数据计算方法及系统。



背景技术:

在一些大规模数据计算的场景中,需要进行计算的数据库中包含的数量量通常非常庞大,而单台物理服务器的计算性能通常会存在极限。因此,为了应对单台服务器计算性能上的不足,业界常规的处理方式是,通过引入服务器集群参与并行计算,并对数据库进行分库分表;例如,可以将数据库中存储的数据分拆到不同的数据库和不同的数据库分表中。

然而,这种方式在某种程度上,虽然可以缓解在大规模数据计算的场景下处理性能上的压力,但随着时间和业务的快速发展,各数据库分表中的数据量也会快速累积,因此仍然可能会造成集群在执行数据计算时,系统消耗过大,计算效率低的问题。



技术实现要素:

本申请提出一种基于分布式服务器集群的数据计算方法,所述分布式服务器集群包括任务划分子集群、数据读取子集群以及数据计算子集群;其中,所述分布式服务器集群中的服务器均为多线程服务器,所述方法包括:

任务划分子集群中的服务器在接收到计算任务时,分别向数据读取子集群中的服务器并行发起调用;

数据读取子集群中的服务器响应所述任务划分子集群中的服务器发起的调用,从与所述调用的发起方对应的数据库分表中并行读取预设数量的待计算数据条目;

所述数据读取子集群中的服务器分别向数据计算子集群中的服务器并行发起调用,将读取到的所述预设数量的待计算数据条目提交至所述数据计算子集群中的服务器,以由所述数据计算子集群中的服务器基于接收到的所述待计算数据条目执行多线程的并行计算。

可选的,所述任务划分子集群中的服务器均在本地维护了对应的数据库分表;所述数据库分表包括待计算数据条目以及与所述待计算数据条目对应的计算状态;其中,所述计算状态包括初始状态、待计算状态、计算完成状态以及重算状态。

可选的,所述方法还包括:

所述任务划分子集群中的服务器基于预设策略,动态维护所述数据库分表中各待计算数据条目的计算状态;

其中,所述预设策略包括:

定时将所述数据库分表中的数据条目,设置为初始状态;

当任一数据条目计算完成时,将该数据条目设置为计算完成状态;

当接收到任一数据条目的计算参数或者任一数据条目的计算参数发生更新时,如果该数据条目为初始状态,将该数据条目设置为待计算状态;如果该数据条目为计算完成状态,将该数据条目设置为重算状态。

可选的,所述计算任务包括定时计算任务以及实时计算任务;

所述方法还包括:

所述数据读取子集群中的服务器在从所述数据库分表中读取待计算数据条目时,如果所述计算任务为定时计算任务,优先读取所述待计算状态的数据条目;

所述数据读取子集群中的服务器在从所述数据库分表中读取待计算数据条目时,如果所述计算任务为实时计算任务,优先读取重算状态的数据条目。

可选的,所述任务划分子集群中的服务器提供批量访问接口,以使数据读取子集群中的服务器响应所述任务划分子集群中的服务器发起的调用时,从与所述调用的发起方对应的数据库分表中批量读取待计算数据条目。

可选的,所述将读取到的所述预设数量的待计算数据条目提交至所述数据计算子集群中的服务器,包括:

将读取到的所述预设数量的待计算数据条目进行拼接,得到目标字符串;

将所述目标字符串下发至所述数据计算子集群中的服务器,以由所述数据计算子集群中的服务器针对所述目标字符串执行拆分,得到所述预设数量的待计算数据条目。

本申请还提出一种基于分布式服务器集群的数据计算系统,所述分布式服务器集群中的服务器均为多线程服务器;所述分布式服务器集群包括任务划分子集群、数据读取子集群以及数据计算子集群;其中:

任务划分子集群,任务划分子集群中的服务器在接收到计算任务时,分别向数据读取子集群中的服务器并行发起调用;

数据读取子集群,数据读取子集群中的服务器响应所述任务划分子集群中的服务器发起的调用,从与所述调用的发起方对应的数据库分表中并行读取预设数量的待计算数据条目;以及,所述数据读取子集群中的服务器分别向数据计算子集群中的服务器并行发起调用,将读取到的所述预设数量的待计算数据条目提交至所述数据计算子集群中的服务器;

数据计算子集群,基于接收到的所述待计算数据条目执行多线程的并行计算。

可选的,所述任务划分子集群:

所述任务划分子集群中的服务器均在本地维护了对应的数据库分表;所述数据库分表包括待计算数据条目以及与所述待计算数据条目对应的计算状态;其中,所述计算状态包括初始状态、待计算状态、计算完成状态以及重算状态。

可选的,所述任务划分子集群:

所述任务划分子集群中的服务器基于预设策略,动态维护所述数据库分表中各待计算数据条目的计算状态;

其中,所述预设策略包括:

定时将所述数据库分表中的数据条目,设置为初始状态;

当任一数据条目计算完成时,将该数据条目设置为计算完成状态;

当接收到任一数据条目的计算参数或者任一数据条目的计算参数发生更新时,如果该数据条目为初始状态,将该数据条目设置为待计算状态;如果该数据条目为计算完成状态,将该数据条目设置为重算状态。

可选的,所述计算任务包括定时计算任务以及实时计算任务;

所述数据读取子集群:

所述数据读取子集群中的服务器在从所述数据库分表中读取待计算数据条目时,如果所述计算任务为定时计算任务,优先读取所述待计算状态的数据条目;

所述数据读取子集群中的服务器在从所述数据库分表中读取待计算数据条目时,如果所述计算任务为实时计算任务,优先读取重算状态的数据条目。

可选的,所述任务划分子集群:

所述任务划分子集群中的服务器提供批量访问接口,以使数据读取子集群中的服务器响应所述任务划分子集群中的服务器发起的调用时,从与所述调用的发起方对应的数据库分表中批量读取待计算数据条目。

可选的,所述数据读取子集群:

所述数据读取子集群中的服务器将读取到的所述预设数量的待计算数据条目进行拼接,得到目标字符串,并将所述目标字符串下发至所述数据计算子集群中的服务器,以由所述数据计算子集群中的服务器针对所述目标字符串执行拆分,得到所述预设数量的待计算数据条目。

本申请中,提出一种用于大规模数据计算的分布式的服务器集群架构,该分布式的服务器集群架构可以包括任务划分子集群、数据读取子集群以及数据计算子集群,任务划分子集群中的服务器在接收到计算任务时,分别向数据读取子集群中的服务器并行发起调用;数据读取子集群中的服务器响应任务划分子集群中的服务器发起的调用,从与所述调用的发起方对应的数据库分表中并行读取预设数量的待计算数据条目;数据读取子集群中的服务器分别向数据计算子集群中的服务器并行发起调用,将读取到的所述预设数量的待计算数据条目提交至所述数据计算子集群中的服务器,以由所述数据计算子集群中的服务器基于接收到的所述待计算数据条目执行多线程的并行计算;由于在基于该分布式的服务器集群架构进行数据计算时,可以将计算任务划分到不同的子集群中进行并行计算,因此可以显著的提升在进行大规模数据计算时的计算性能,以及计算效率。

附图说明

图1是本申请一实施例提供的一种本例示出的一种现有技术中在进行大规模数据计算时的系统架构图;

图2是本申请一实施例提供的一种基于分布式服务器集群的数据计算方法的流程图;

图3是本申请一实施例提供的一种基于分布式服务器集群的数据计算系统架构图。

具体实施方式

请参见图1,图1为本例示出的一种现有技术中在进行大规模数据计算时的系统架构图。

如图1所示的系统架构,包括调度中心、消息中心以及计算系统。

其中,上述调度中心,可以对上述计算系统进行任务调度,来触发计算系统执行相应的计算任务。上述消息中心,可以将上述调度中心触发的计算任务,以消息的形式通知给上述计算系统。而上述计算系统,具体可以是一服务器集群,包含若干台作为数据计算执行者的物理服务器。

例如,在实际应用中,上述调度中心,可以通过定时任务,触发具体的定时计算任务,并向消息中心发送对应的定时触发消息。消息中心在收到该定时触发消息后,可以向计算系统发送一个定时任务消息,将调度中心触发的定时计算任务通知给计算系统。而计算系统,则可以向调度中心申请定时计算任务,并订阅消息中心发出的定时任务消息,来响应调度中心触发的定时计算任务。

在图1示出的上述系统架构中,为了应对单台服务器计算性能上的不足,通常会对数据库中存储的待处理的数据条目,进行分库分表。

在这种情况下,上述计算系统中每一个具体的物理服务器,均可以在其本地维护一个数据库分表。当上述计算系统,响应了调度中心触发的计算任务后,系统中的各台服务器可以通过各自访问其本地的数据库分表,来并行的执行计算任务。

然而,在以上技术方案中,虽然通过对数据库进行分库分表,可以在某种程度上缓解处理性能上的压力,但各服务器在执行计算任务时,通常是采用单线程的方式,逐条的访问本地的数据库分表中的数据条目,一次计算只处理一个数据条目,因此对本地的数据库分表的访问压力较大,系统的性能消耗过高,而且计算效率较低。

有鉴于此,本申请中提出一种用于大规模数据计算的分布式的服务器集群架构,该分布式的服务器集群架构可以包括任务划分子集群、数据读取子集群以及数据计算子集群,任务划分子集群中的服务器在接收到计算任务时,分别向数据读取子集群中的服务器并行发起调用;数据读取子集群中的服务器响应任务划分子集群中的服务器发起的调用,从与所述调用的发起方对应的数据库分表中并行读取预设数量的待计算数据条目;数据读取子集群中的服务器分别向数据计算子集群中的服务器并行发起调用,将读取到的所述预设数量的待计算数据条目提交至所述数据计算子集群中的服务器,以由所述数据计算子集群中的服务器基于接收到的所述待计算数据条目执行多线程的并行计算;由于在基于该分布式的服务器集群架构进行数据计算时,可以将计算任务划分到不同的子集群中进行并行计算,因此可以显著的提升在进行大规模数据计算时的计算性能,以及计算效率。

下面通过具体实施例并结合具体的应用场景对本申请进行描述。

请参考图2,图2是本申请一实施例提供的基于分布式服务器集群的数据计算方法,应用于分布式服务器集群,该分布式服务器集群包括任务划分子集群、数据读取子集群以及数据计算子集群,所述方法执行以下步骤:

步骤201,任务划分子集群中的服务器在接收到计算任务时,分别向数据读取子集群中的服务器并行发起调用;

步骤202,数据读取子集群中的服务器响应所述任务划分子集群中的服务器发起的调用,从与所述调用的发起方对应的数据库分表中并行读取预设数量的待计算数据条目;

步骤203,数据读取子集群中的服务器分别向数据计算子集群中的服务器并行发起调用,将读取到的所述预设数量的待计算数据条目下发至数据计算子集群中的服务器,以由所述数据计算子集群中的服务器基于接收到的所述待计算数据条目执行多线程的并行计算。

上述分布式服务器集群,包含若干台多线程服务器。所谓多线程服务器,是指可以同时并行运行多个线程的服务器,每一个线程可以执行一个具体的计算任务。

为了提升整体的计算性能和计算效率,上述分布式服务器集群,将采用一种分层架构。在基于该分布式的服务器集群的架构进行数据计算时,可以将计算任务划分到不同的子集群中进行并行计算,以此来提升在进行大规模数据计算时的计算性能,以及计算效率。

请参见图3,图3为本例示出的一种基于分布式服务器集群的数据计算系统架构图。

在图3所示出的系统架构中,仍然可以包括调度中心、消息中心以及计算系统。

所述调度中心以及所述消息中心均可以是一具体的服务器。作为消息中心的服务器,可以与作为调度中心的服务器保持连接,用以接收调度中心在触发相应的计算任务时,发出的触发消息。

与现有技术不同的是,在本例中,图3所示出的系统机构中,作为上述计算系统的服务器集群,具体可以是一分布式服务器集群。

并且,上述分布式服务器集群中所包含的服务器,可以按照功能进行细分,划分为任务划分子集群、数据读取子集群以及数据计算子集群。在任务划分子集群、数据读取子集群以及数据计算子集群中,均可以各自包含若干台独立的服务器。

如图3所示,任务划分子集群中的服务器,可以分别与作为消息中心的服务器保持连接,用以接收消息中心发出的任务消息,来响应调度中心触发的计算任务。

数据读取子集群中的服务器,可以分别与任务划分子集群中所有的服务器保持连接;数据计算子集群中的服务器可以分别与数据读取子集群中所有的服务器保持连接。

即在本例中,任务划分子集群、数据读取子集群以及数据计算子集群中的服务器之间的连接,将呈现一种星形的耦合状态,任务划分子集群中的任意一台服务器,可以与数据读取子集群中所有的服务器保持连接,而数据读取子集群中的任意一台服务器,也可以与数据计算子集群中所有的服务器保持连接。

在本例中,上述任务划分子集群,可以包含若干台用于任务划分的服务器。

一方面,任务划分子集群中的这些服务器可以订阅消息中心发出的任务消息,来响应调度中心触发的计算任务,并在响应了调度中心触发的计算任务后,并行调用上述数据读取子集群中的服务器,将该计算任务下发至上述数据读取子集群中的服务器,由上述数据读取子集群中的服务器,来并行的读取与该计算任务对应的数据条目。

另一方面,在初始状态下,还可以对数据库中的存储的待计算的数据条目进行分库分表,并在任务划分子集群中的这些服务器本地,分别维护一张数据库分表。

其中,在示出的一种实施方式中,上述数据库分表存储的具体内容包括待计算的数据条目以及与上述待计算数据条目对应的计算状态;上述计算状态包括初始状态、待计算状态、计算完成状态以及重算状态。

另外,上述任务划分子集群中的服务器,还可以基于预设策略,动态维护在其本地数据库分表中各待计算的数据条目的计算状态。

在示出的一种实施方式中,上述预设策略具体可以包括如下策略:

定时将数据库分表中的数据条目,设置为初始状态;

当数据库分表中任一数据条目计算完成时,将该数据条目设置为计算完成状态;当接收到任一数据条目的计算参数或者任一数据条目的计算参数发生更新时,如果该数据条目为初始状态,将该数据条目设置为待计算状态;如果该数据条目为计算完成状态,将该数据条目设置为重算状态。

其中,需要说明的是,上述计算参数,是指在针对该数据条目进行计算时,必不可少的参数。

例如,在基金的收益计算的应用场景中,上述数据条目可以是一条包含用户基金账户、用户购买的基金代码、资产等信息的记录。由于基金的收益计算,为需要结合每日更新的最新净值,执行的一种周期性计算,而基金净值通常是基金的收益计算必不可少的参数,因此在这种场景中,基金净值则是与该记录对应的计算参数。

在维护该记录的计算状态时,由于基金收益计算为每日进行的周期性计算,因此可以在每日0点,定时将上述数据库分表中的数据条目设置为初始状态,同时可以通过判断是否接收到当日的基金净值,或者当日的基金净值是否更新,来确定该记录是否需要计算或者重算,以维护该记录的计算状态。

当然,上述预设策略中所包含的策略,并不限于以上示出的具体策略,在实际应用中,也可以在以上示出的具体策略的基础上进行改进,或者引入其它策略;

例如,在实现时,在以上示出的策略的基础上,还可以引入数据条目计算完成的日期的判断;当接收到任一数据条目的计算参数,或者任一数据条目的计算参数发生更新时,如果该数据条目为计算完成状态,可以进一步判断计算完成的日期,如果是当日,则可以将该数据条目设置为重算状态;如果昨日,则可以将该数据条目设置为待计算状态,在本例中不再一一列举。

在本例中,上述数据读取子集群,可以包含若干台用于数据读取的服务器。这些服务器可以响应任务划分子集群中的服务器发起的调用,从调用发起方本地维护的数据库分表中读取预设数量的数据条目,然后通过并行调用数据读取子集群中的服务器,将读取到的预设数量的数据条目,下发至数据计算子集群中的服务器,由上述数据读取子集群中的服务器,来并行的执行最终的计算任务。

在本例中,上述数据读取子集群,可以包含若干台用于数据计算的服务器。这些服务器可以响应数据读取子集群中的服务器发起的调用,基于接收到的由调用发起方下发的数据条目,执行多线程的并行计算。

以下结合图3对调度中心触发一次计算任务后,上述分布式服务器集群中各子集群中的服务器的计算交互过程进行详细描述。

在本例中,调度中心触发一次计算任务后,可以通过消息中心向任务划分子集群中所有的服务器,分别发送任务消息。

其中,需要说明的是,调度中心触发的计算任务,可以包括定时计算任务,以及实时计算任务。

当调度中心触发的计算任务为定时计算任务时,可以通过消息中心向任务划分子集群中所有的服务器,分别发送定时任务消息;当调度中心触发的计算任务为实时计算任务时,可以通过消息中心向任务划分子集群中所有的服务器,分别发送实时任务消息。

当任务划分子集群中的服务器在接收到消息中心发出的任务消息后,确定接收到调度中心触发的计算任务,任务划分子集群中的服务器可以分别并行调用数据读取子集群中的服务器,来触发读取子集群中的服务器,并行的读取与该计算任务对应的数据条目。

此时对于读取子集群中的任意一台服务器来说,都会被任务划分子集群中所有的服务器同时调用。

在这种情况下,读取子集群中的服务器可以预先建立一个线程池,在接收到任务划分子集群中的任一服务器发起的调用时,可以从线程池中随机启动一个线程,来响应该服务器发起的调用。

例如,在实现时,当读取子集群中的服务器为基于Java的框架时,可以使用executor线程管理工具从线程池中,为发起调用的服务器随机启动一个线程。其中,通过executor线程管理工具从线程池中启动线程的具体实现过程,在本例中不再详述,本领域技术人员可以参考相关技术中的记载。

通过这种方式,当数据读取子集群中的服务器同时被任务划分子集群中所有的服务器调用时,可以从线程池中为调用发起方,分配不同的线程来加以区分,通过不同的线程来响应不同的调用发起方的任务。

其中,任务划分子集群中的服务器调用数据读取子集群中的服务器时的具体调用方式,在本例中不进行特别限定;例如,在示出的一种实施方式中,可以采用单向调用(oneway调用)。

在本例中,读取子集群中的服务器在响应任务划分子集群中的各服务器发起的调用时,可以执行为各调用发起方的服务器启动的线程,从各调用发起方的服务器对应的数据库分表中,并行的读取预设数量的数据条目。

例如,假设读取子集群中的某一服务器线程池为10,该服务器被任务划分子集群中的10台服务器同时调用,那么可以从线程池中为这10台调用发起方的服务器分别启动一个线程,然后同时执行这10个线程,从这10台调用发起方的服务器本地的数据库分表中,并行的读取数据。

其中,上述预设数量在本例中不进行特别限定,在实际应用中可以基于上述数据计算子集群中的服务器具体的数据计算能力进行设定;

例如,当上述计算任务为定时计算任务时,如果定时计算任务的触发频率过快(比如1分钟),此时数据库分表中可供计算的数据条目通常较少;在这种情况下,读取到的数据条目可能无法适配数据计算子集群中的服务器的实际计算能力,从而造成数据计算子集群中的服务器计算资源的浪费;

相反,如果定时计算任务的触发频率过慢,此时数据库分表中可供计算的数据条目通常较多;在这种情况下,可供计算的数据条目超出数据计算子集群中的服务器的实际计算能力,可能需要多次调度和数据读取。

因此,在实际应用中,可以根据数据计算子集群中的服务器的实际计算能力,来设定定时计算任务的频率,从而可以保证读取到的数据条目的数据,与计算子集群中的服务器的实际计算能力能够适配,从而最大程度的充分利用计算子集群中的服务器的计算能力。

同时,为了提升数据读取效率,降低由于多次频繁读取导致的开销过大的问题,上述任务划分子集群中的服务器均可以在其本地提供一个批量访问接口,从而数据读取子集群中的服务器在响应任务划分子集群中的服务器发起的调用时,可以通过访问该批量接口,从调用发起方其本地维护的数据库分表中,批量的读取数据条目。

在本例中,如前所述,调度中心触发的计算任务可以包括实时计算任务,也可以包括定时计算任务。

其中,在调度中心触发的计算任务,为实时计算任务以及定时计算任务的情况下,数据读取子集群中的服务器,在从调用发起方其本地维护的数据库分表中,读取数据条目的具体方式也可以不同。

在示出的一种实施方式中,如果上述计算任务为定时计算任务,数据读取子集群中的服务器,在从调用发起方其本地维护的数据库分表中,读取数据条目时,可以优先读取数据库分表中被设置为待计算状态的数据条目。

在这种情况下,可以通过触发定时计算任务,对数据库分表中尚未完成计算的数据条目优先进行计算。

在示出的另一种实施方式中,如果上述计算任务为实时计算任务,数据读取子集群中的服务器,在从调用发起方其本地维护的数据库分表中,读取数据条目时,可以优先读取数据库分表中被设置为重算状态的数据条目。

在这种情况下,可以通过触发实时计算任务,对数据库分表中已经完成计算,但计算参数发生更新的数据条目实时的进行计算。

在本例中,当数据读取子集群中的各服务器,通过执行为各调用发起方的服务器启动的线程,从各调用发起方的服务器其本地维护的数据库分表中,批量读取到预设数量的数据条目后,可以分别向数据计算子集群中的服务器并行发起调用,将读取到的预设数量的数据条目,下发至数据计算子集群中的服务器,由上述数据读取子集群中的服务器,来并行的执行最终的计算任务。

此时对于计算子集群中的任意一台服务器来说,都会被数据读取子集群中所有的服务器同时调用。

在这种情况下,计算子集群中的服务器也可以预先建立一个线程池,在接收到数据读子集群中的任一服务器发起的调用时,可以从线程池中随机启动一个线程,来响应该服务器发起的调用,接收该服务器下发的数据条目,并通过执行该线程对接收到的数据条目进行计算。

通过这种方式,当数据计算子集群中的服务器同时被数据读取子集群中所有的服务器调用时,可以从线程池中为调用发起方,分配不同的线程来加以区分,通过不同的线程来响应不同的调用发起方的任务,并最终通过同时执行多线程,来完成针对数据读取子集群中所有的服务器下发的数据条目的并行计算。

其中,在示出的一种实施方式中,数据读取子集群中的各服务器,在将批量读取到预设数量的数据条目下发给数据计算子集群中的服务器时,可以通过与数据计算子集群中的服务器约定方式,对读取到的预设数量的待计算数据条目进行拼接,得到一个目标字符串,然后将该目标字符串下发给数据计算子集群中的服务器。

数据计算子集群中的服务器在接收到该目标字符串时,可以按照约定的方式针对该目标字符串执行拆分,将该目标字符串拆分得成预设数量的待计算的数据条目。

通过这种方式,可以提升数据条目的下发效率,同时使得数据计算子集群中的服务器,可以通过单个线程来批量处理一批数据条目,而不再是追条数据条目进行计算,从而可以提升计算效率。

在本例中,数据计算子集群中的服务器,在通过同时执行多线程,来完成针对数据读取子集群中所有的服务器下发的数据条目的并行计算时,可以查询与该数据条目对应的计算参数,然后基于查询到的计算参数,来完成针对各数据条目的并行计算。

其中,各数据条目对应的计算参数,可以存储在上述数据库分表中,也可以存储在其它的第三方系统中,在查询各数据条目对应的计算参数时,为了降低由于多次频繁读取导致的开销过大的问题,仍然可以通过访问批量接口来批量的进行查询。

例如,在基金的收益计算的应用场景中,上述数据条目可以是一条包含用户基金账户、用户购买的基金代码、用户购买的基金对应的资产等信息的记录,而计算基金的收益所需的计算参数,通常可以包括基金净值、基金份额、基金的买入总额和赎回总额等参数,因此在查询各数据条目对应的计算参数时,可以从上述数据库分表,或者与第三方系统(比如基金公司)对接,来批量查询基金净值、基金份额、基金的买入总额和赎回总额等计算参数,然后完成基金的收益计算。

其中,数据计算子集群中的服务器,在通过同时执行多线程,针对数据读取子集群中的服务器下发的数据条目进行并行计算的过程中,当任一线程提前完成计算任务,则可以立即结束返回。

例如,当上述计算任务为定时计算任务时,在现有技术中,启用的线程通常需要在一轮定时任务结束后,才能结束返回,而如果某一个线程在定时任务前就已完成了计算任务,那么就会造成该线程性能上的浪费。因此,在这种情况下,如果某一个线程在一轮定时任务结束之前,提前完成了计算任务,则可以立即结束返回。通过这种方式,可以避免该线程在性能上的浪费。

在本例中,当数据计算子集群中的服务器,基于查询到的计算参数,完成针对各数据条目的并行计算得到计算结果后,可以向任务划分子集群中对应的服务器返回计算结果,从而使得任务划分子集群中的服务器,可以对计算结果进行记录,并基于接收到的该计算结果,对本地维护的上述数据库分表中相应的数据条目的计算状态进行更新。

当然,数据计算子集群中的服务器,在针对数据读取子集群中的服务器下发的数据条目进行计算的过程中,如果计算的数据条目的计算状态为计算完成状态,此时可以直接将该数据条目的计算结果向任务划分子集群中对应的服务器返回即可,而不需要进行重复计算。

通过以上实施例可见,由于在基于上述分布式的服务器集群架构进行数据计算时,可以将计算任务划分到不同的子集群中进行并行计算,由数据读取子集群中的服务器执行并行的读取数据条目,由数据计算子集群中的服务器执行并行的数据条目计算,从而可以显著的提升在进行大规模数据计算时的计算性能,以及计算效率。

以下结合基金收益计算的应用场景,并结合图3示出的系统架构对以上实施例中的技术方案进行详细描述。

需要说明的是,以基金收益计算的应用场景为例,仅为示例性说明,在实际应用中,如图3所示的系统架构,也可以应用在其它大规模数据计算的应用场景;例如,也可以应用在诸如大型电商平台、支付平台中的大规模数据计算。

在本例中,在基金的收益计算的应用场景中,待计算的数据条目通常可以是一条包含用户基金账户、用户购买的基金代码、用户购买的基金对应的资产等信息的记录,而计算基金的收益所需的计算参数,通常可以包括基金净值、基金份额、基金的买入总额和赎回总额等参数。

请参见图1,在现有技术中,作为计算系统的服务器集群中每一个具体的物理服务器,均可以在其本地维护一个数据库分表。该数据分表包含若干条包含用户基金账户、用户购买的基金代码、用户购买的基金对应的资产等信息的记录。

上述计算系统,在响应了调度中心触发的计算任务后,系统中的各台服务器可以采用单线程的方式,逐条的访问本地的数据库分表中的记录,来并行的执行计算任务。

通过这种方式,由于一次计算只处理一个条记录,因此本地的数据库分表的访问压力较大,系统的性能消耗过高,而且计算效率较低。

请参见图3,在本例中,作为计算系统的服务器集群为一种分布式的服务器集群。该分布式的服务器集群,将采用一种分层架构,该分布式服务器集群中所包含的服务器,均为多线程服务器,可以被划分为任务划分子集群、数据读取子集群以及数据计算子集群。

调度中心触发一次计算任务后,可以通过消息中心向任务划分子集群中所有的服务器,分别发送任务消息。任务划分子集群中的服务器,在接收到该任务消息后,可以分别并行调用数据读取子集群中的服务器。

读取子集群中的服务器可以预先建立一个线程池,在接收到任务划分子集群中的任一服务器发起的调用时,可以从线程池中随机启动一个线程,来响应该服务器发起的调用,从该服务器对应的数据库分表中,批量读取预设数量的记录。

通过这种方式,读取子集群中的服务器在响应任务划分子集群中的各服务器发起的调用时,可以执行为各调用发起方的服务器启动的线程,从各调用发起方的服务器对应的数据库分表中,并行的读取预设数量的记录。

数据读取子集群中的各服务器,还可以分别向数据计算子集群中的服务器并行发起调用,将读取到的预设数量的记录,下发至数据计算子集群中的服务器,由上述数据读取子集群中的服务器,来并行的执行最终的收益计算。

计算子集群中的服务器也可以预先建立一个线程池,在接收到数据读子集群中的任一服务器发起的调用时,可以从线程池中随机启动一个线程,来响应该服务器发起的调用,接收该服务器下发的记录,并通过执行该线程对接收到的记录进行计算。

通过这种方式,当数据计算子集群中的服务器同时被数据读取子集群中所有的服务器调用时,可以从线程池中为调用发起方,分配不同的线程来加以区分,通过不同的线程来响应不同的调用发起方的任务,并最终通过同时执行多线程,来并行查找与数据读取子集群中所有的服务器下发的记录对应的基金净值、基金份额、基金的买入总额和赎回总额等计算参数,并完成最终的并行计算,为每一条记录分别计算出对应的基金收益,并向任务划分子集群中对应的服务器返回计算结果。

可见,采用图3所示出的系统架构进行基金收益计算,与采用图1所示出的系统架构进行基金收益计算相比,由于图3所示出的系统架构中的服务器均为多线程服务器,而且在整个计算过程中,记录的读取,计算参数的查找,以及最终的计算,都是由若干台多线程的服务器相互配合并行执行,因此与采用图1所示出的系统架构,通过单线程逐条计算数据库分表中记录的基金收益计算方式相比,可以显著的提升计算性能和计算效率。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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