CN114253713A - 一种基于reactor的异步批处理方法及系统 - Google Patents

一种基于reactor的异步批处理方法及系统 Download PDF

Info

Publication number
CN114253713A
CN114253713A CN202111483865.4A CN202111483865A CN114253713A CN 114253713 A CN114253713 A CN 114253713A CN 202111483865 A CN202111483865 A CN 202111483865A CN 114253713 A CN114253713 A CN 114253713A
Authority
CN
China
Prior art keywords
file
data
server
kernels
buffer area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111483865.4A
Other languages
English (en)
Other versions
CN114253713B (zh
Inventor
吕卿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Citic Bank Corp Ltd
Original Assignee
China Citic Bank Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Citic Bank Corp Ltd filed Critical China Citic Bank Corp Ltd
Priority to CN202111483865.4A priority Critical patent/CN114253713B/zh
Publication of CN114253713A publication Critical patent/CN114253713A/zh
Application granted granted Critical
Publication of CN114253713B publication Critical patent/CN114253713B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种基于reactor的异步批处理方法及系统,涉及计算机应用领域,尤其涉及一种基于reactor的异步批处理方法及系统。所述方法包括:通过根据服务器内核数量,获得目标数据源的文件块集合;基于Spring Batch框架启动目标数据源的工作线程;确定存储数据的内核缓冲区;基于内存映射技术,对文件块集合中的任一文件块数据读取;将读取到的数据存储至内核缓冲区;基于Reactor技术,消费线程将内核缓冲区的数据写入目的端,将内核缓冲区的所有存储数据全部写入目的端后,结束异步批处理。解决了现有技术中原生Spring Batch框架存在内部架构复杂、流程冗余,从而导致性能低下的技术问题。

Description

一种基于reactor的异步批处理方法及系统
技术领域
本申请涉及计算机应用领域,尤其涉及一种基于reactor的异步批处理方法及系统。
背景技术
Spring Batch是一个轻量级、全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序。Spring Batch提供大量的可重复的数据处理功能,包括日志记录跟踪、事务管理、作业处理统计、工作重新启动、跳过和资源管理等重要功能,且以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。然而现有原生Spring Batch框架无法多线程并发加载一个数据源,使得加载速度慢,影响用户体验感,并且一旦出现意外需要重跑,需要回滚所有已经加载成功的数据,浪费大量加载时间,因此结合其他计算机技术提高现有原生Spring Batch框架性能具有重要的意义。
本申请发明人在实现本申请实施例中技术方案的过程中,发现上述技术至少存在如下技术问题:
现有技术中原生Spring Batch框架存在内部架构复杂、流程冗余,从而导致性能低下的技术问题。
发明内容
本申请的目的是提供一种基于reactor的异步批处理方法及系统,用以解决现有技术中原生Spring Batch框架存在内部架构复杂、流程冗余,从而导致性能低下的技术问题。
鉴于上述问题,本申请实施例提供了一种基于reactor的异步批处理方法及系统。
第一方面,本申请提供了一种基于reactor的异步批处理方法,所述方法通过一种基于reactor的异步批处理系统实现,其中,所述方法包括:通过步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。
另一方面,本申请还提供了一种基于reactor的异步批处理系统,用于执行如第一方面所述的一种基于reactor的异步批处理方法,其中,所述系统包括:第一获得单元:所述第一获得单元用于执行步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;第一启动单元:所述第一启动单元用于执行步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;第一确定单元:所述第一确定单元用于执行步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;第一读取单元:所述第一读取单元用于执行步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;第一存储单元:所述第一存储单元用于执行步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;第一写入单元:所述第一写入单元用于执行步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。
第三方面,本申请实施例还提供了一种基于reactor的异步批处理系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述第一方面所述方法的步骤。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
1.通过步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。达到了基于reactor将大文件均匀拆分,进而多线程并发加载,提高文件加载速度,此外如果出现意外需要重跑,仅需回滚出错的文件分块,达到节约加载时间的技术效果。
2.通过指针ptr,实现了对基于MMU转换的物理地址对应文件的直接处理,无需多次调用文件读写,达到了简化流程,提高处理效率的技术效果。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例一种基于reactor的异步批处理方法的流程示意图;
图2为本申请实施例一种基于reactor的异步批处理方法中根据服务器内核数量,获得目标数据源的文件块集合的流程示意图;
图3为本申请实施例一种基于reactor的异步批处理方法中基于Spring Batch框架,启动所述目标数据源的工作线程的流程示意图;
图4为本申请实施例一种基于reactor的异步批处理方法中基于MMU,将所述逻辑地址转换为物理地址,对所述目标映射文件进行处理的流程示意图;
图5为本申请实施例一种基于reactor的异步批处理系统的结构示意图;
图6为本申请实施例示例性电子设备的结构示意图。
附图标记说明:
第一获得单元11,第一启动单元12,第一确定单元13,第一读取单元14,第一存储单元15,第一写入单元16,总线300,接收器301,处理器302,发送器303,存储器304,总线接口305。
具体实施方式
本申请实施例通过提供一种基于reactor的异步批处理方法及系统,解决了现有技术中原生Spring Batch框架存在内部架构复杂、流程冗余,从而导致性能低下的技术问题。达到了基于reactor将大文件均匀拆分,进而多线程并发加载,提高文件加载速度,此外如果出现意外需要重跑,仅需回滚出错的文件分块,达到节约加载时间的技术效果。
下面,将参考附图对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。基于本申请的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部。
申请概述
Spring Batch是一个轻量级、全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序。Spring Batch提供大量的可重复的数据处理功能,包括日志记录跟踪、事务管理、作业处理统计、工作重新启动、跳过和资源管理等重要功能,且以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。然而现有原生Spring Batch框架无法多线程并发加载一个数据源,使得加载速度慢,影响用户体验感,并且一旦出现意外需要重跑,需要回滚所有已经加载成功的数据,浪费大量加载时间,因此结合其他计算机技术提高现有原生Spring Batch框架性能具有重要的意义。
现有技术中原生Spring Batch框架存在内部架构复杂、流程冗余,从而导致性能低下的技术问题。
针对上述技术问题,本申请提供的技术方案总体思路如下:
本申请提供了一种基于reactor的异步批处理方法,所述方法应用于一种基于reactor的异步批处理系统,其中,所述方法包括:通过步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。
在介绍了本申请基本原理后,下面将结合说明书附图来具体介绍本申请的各种非限制性的实施方式。
实施例一
请参阅附图1,本申请实施例提供了一种基于reactor的异步批处理方法,其中,所述方法应用于一种基于reactor的异步批处理系统,所述方法具体包括如下步骤:
步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;
具体而言,所述一种基于reactor的异步批处理方法应用于所述一种基于reactor的异步批处理系统,可以基于reactor将大文件均匀拆分,进而多线程并发加载,提高文件加载速度,此外如果出现意外需要重跑,仅需回滚出错的文件分块,达到节约加载时间的技术效果。其中,所述reactor(反应器模式)是一种处理一个或多个客户端并发交付服务请求的事件设计模式。当请求抵达后,服务处理程序使用I/O多路复用策略,然后同步地派发这些请求至相关的请求处理程序。所述异步是指两个任务之间的没有执行次序先后之分。所述批处理是对某对象进行批量的处理。
首先确定服务器的内核数量,依据服务器内核数量将目标数据源的文件均匀拆分为与内核数量相同的文件分块,所有拆分后的文件分块组成所述目标数据源的文件块集合。其中,所述内核是指对应服务器所用处理器的核心数。举例如某目标数据源文件共有m个字节,对应处理的服务器有n个内核,那么该目标数据源文件经过拆分,可以得到n个每份字节大小为m/n的文件分块,那么,对应的n个文件分块组成该目标文件源的文件块集合。达到了基于服务器实际配置,将目标数据源文件均匀分片的技术效果。
步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;
具体而言,所述Spring Batch框架是Spring提供的一个数据处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序。根据所述服务器内核数量,启动所述目标数据源对应的工作线程。其中,所述工作线程包括生产线程和消费线程。所述生产线程用于读取所述目标数据源文件拆分后的各个文件分块。所述消费线程用于写入各个生产线程读取到的各文件分块数据。因此,生成线程数量和消费线程数量相同,且工作线程数量与对应服务器内核数量相同。基于Spring Batch框架启动数据源文件的工作线程,完成对数据源文件的加载,实现对文件进行批处理的技术目标。
步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;
具体而言,所述内核缓冲区分别对应目标数据源的各个生产线程,某m个字节的目标数据源文件经过拆分,得到n个每份字节大小为m/n的文件分块,那么,对应的n个文件分块各自对应一条生产线程,各生产线程拥有一个缓冲区。通过与生产线程一一对应的缓冲区,各生产线程分别将读取到的对应文件分块数据临时存储在缓冲区,实现临时存储读取数据的技术目标。
步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;
具体而言,所述内存映射技术是操作系统提供的一种新的文件数据存取机制,利用内存映射文件技术,系统可以在内存空间中为文件保留一部分空间,并将文件映射到这块保留空间,一旦文件被映射后,操作系统将管理页映射缓冲以及高速缓冲等任务,而不需要调用分配、释放内存块和文件输入输出的API函数,也不需要自己提供任何缓冲算法。基于内存映射技术,Spring Batch框架中的各个生产线程分别对所述文件块集合中的文件分块进行数据读取,并将读取到的数据映射至计算机内存。通过内存映射技术,在处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,所有的文件缓存操作均由系统直接管理,从而节约了读取数据的时间,减轻了系统运行压力,达到了提高读取效率的技术效果。
步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;
具体而言,通过缓冲区,可以实时存储各生产线程读取的对应文件分块数据,经过多次读取、存储,最终完成所有目标数据源文件对应的各个文件分块数据信息,即,将所有目标数据源文件读取完毕。通过多线程并行读取目标数据源文件,提高了目标数据源文件的读取速度,同时各生产线程均对应一个缓冲区,完成各生产线程实时读取数据的缓存,一旦出现意外需要重跑数据,则仅需对出错线程对应的文件分块进行重跑,无需重跑所有目标数据源文件,造成资源浪费和时间浪费,达到了优化Spring Batch框架性能的技术效果。
步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。
具体而言,所述Reactor(反应器模式)是一种处理一个或多个客户端并发交付服务请求的事件设计模式。当请求抵达后,服务处理程序使用I/O多路复用策略,然后同步地派发这些请求至相关的请求处理程序。基于Reactor技术,各生产线程对应的消费线程将存入对应缓冲区的读取数据写入目的端,经过各消费线程多次写入,最终完成所有缓冲区数据到目的端的写入,随即结束对所述目标数据源的异步批处理。通过Reactor技术的多线程技术,将生产与消费模式进行了明确区分,分工明确、责任单一,解决了原生Spring Batch框架内部架构复杂、流程冗余导致的性能低下的技术问题,提升了Spring Batch框架的处理性能。
进一步的,如附图2所示,本申请实施例步骤S100还包括:
步骤S110:根据所述目标数据源,获得文件字节大小;
步骤S120:根据所述文件字节大小和所述服务器内核数量,对所述目标数据源进行分块,生成所述文件块集合以及任一文件块字节大小;
步骤S130:其中,所述文件块集合的数量与所述服务器内核数量一致,且所述任一文件块字节大小为所述文件字节大小与所述服务器内核数量相除的结果。
具体而言,根据所述目标数据源的文件信息,确定文件的字节大小,进一步根据目标数据源文件字节大小和对应服务器内核数量,将目标数据源的文件均匀拆分为与内核数量相同的文件分块,所有拆分后的文件分块组成所述目标数据源的文件块集合。其中,所述文件块集合中的文件分块数量与所述服务器内核数量相同,且任一文件分块的字节大小均为目标数据源文件字节大小与所述服务器内核数量的比值。举例如某目标数据源文件共有m个字节,对应处理的服务器有n个内核,那么该目标数据源文件经过拆分,可以得到n个每份字节大小为m/n的文件分块,对应的文件分块和对应处理的服务器内核均为n,即数量相同。
基于目标数据源文件字节和服务器内核数,实现了对目标数据源文件的均匀分块,基于服务器实际配置,将目标数据源文件均匀分片,达到了保证后续数据读取进度保持接近的技术效果。
进一步的,如附图3所示,本申请实施例步骤S200还包括:
步骤S210:根据所述文件块集合,确定批处理任务信息,其中,所述批处理任务信息由任务执行逻辑单位组成,且所述任务执行逻辑单位包括读数据单位、数据处理单位以及写数据单位;
步骤S220:基于作业执行器,所述任务执行逻辑单位处理所述批处理任务信息,并启动所述目标数据源的工作线程;
步骤S230:将所述工作线程的执行结果保存至作业仓库。
具体而言,基于Spring Batch框架对目标数据源文件拆分后形成的所述文件块集合进行批处理。首先确定批处理任务信息,即任务执行逻辑单位,包括读数据单位、数据处理单位以及写数据单位。其中,所述读数据单位用于从目标数据源文件拆分后的分块文件中读取文件信息;所述数据处理单位用于对读取分块文件后的数据进行处理,包括数据清洗、转换、过滤、校验等;所述写数据单位用于将数据处理单位处理后的数据写入对应目的端。
进一步的,基于作业执行器,所述任务执行逻辑单位对所述批处理任务信息进行处理,进而启动所述目标数据源的工作线程。其中,所述作业执行器是执行处理作业的入口。当工作线程完成目标数据源文件的处理后,将所述工作线程的执行结果保存至对应的作业仓库。其中,所述作业仓库是一个用于将作业、处理等概念进行持久化的一个类。达到了记录跟踪,事务管理、作业处理统计、作业重启、跳过和资源管理等众多批处理功能的技术效果。
进一步的,如附图4所示,本申请实施例步骤S400还包括:
步骤S410:将所述读取到的数据作为目标映射文件,服务器系统调用mmap(),逻辑上,将所述目标映射文件从硬盘的文件系统,经过进程逻辑地址空间,映射到所述计算机内存;
步骤S420:通过所述mmap(),返回指针ptr,且所述指针ptr指向所述进程逻辑地址空间的逻辑地址;
步骤S430:基于MMU,将所述逻辑地址转换为物理地址,对所述目标映射文件进行处理。
具体而言,基于内存映射技术,对生产线程读取到的文件分块数据进行映射,计算机同时完成映射存储,进一步直接进行文件处理。首先将所述读取到的数据作为目标映射文件,服务器系统调用mmap()将所述目标映射文件从硬盘的文件系统,经过进程逻辑地址空间,映射到计算机内存。进一步通过所述mmap(),返回指针ptr。所述指针ptr指向所述进程逻辑地址空间的逻辑地址。最后基于MMU,将所述逻辑地址转换为物理地址,从而对所述目标映射文件进行处理。其中,所述MMU是Memory Management Unit的缩写,中文名是内存管理单元,是一种负责处理中央处理器的内存访问请求的计算机硬件。通过返回指针ptr,后续直接利用指针ptr即可处理文件,无需多次调用,但是只有将逻辑地址转换为物理地址后,才能基于指针ptr完成文件处理。
通过指针ptr,实现了对基于MMU转换的物理地址对应文件的直接处理,无需多次调用文件读写,达到了简化流程,提高处理效率的技术效果。
进一步的,本申请实施例步骤S430还包括:
步骤S431:若所述将所述逻辑地址转换为物理地址的进程失败,生成缺页中断结果;
步骤S432:根据所述缺页中断结果的中断响应函数和所述mmap()构建的映射关系,将所述目标映射文件从所述硬盘读取到所述计算机内存。
具体而言,如果所述将所述逻辑地址转换为物理地址的进程失败,即基于MMU的转换不成功时,系统自动生成缺页中断结果,并根据所述缺页中断结果的中断响应函数,通过与所述mmap()构建的映射关系后将所述目标映射文件从所述硬盘读取到所述计算机内存。达到了自动化挽救逻辑地址转换失败,确保顺利读取目标映射文件的技术效果。
进一步的,本申请实施例步骤S432还包括:
步骤S4321:判断所述计算机内存是否达到预设内存要求;
步骤S4322:若所述计算机内存没有达到所述预设内存要求,基于虚拟内存机制swap,将所述计算机内存中的非工作物理页面交换至所述硬盘上。
具体而言,在基于MMU的逻辑地址转换失败后,系统首先自动判断所述计算机内存是否达到了所述预设内存要求,如果所述计算机内存没有达到所述预设内存要求,那么基于虚拟内存机制swap,将所述计算机内存中的非工作物理页面交换到所述硬盘上。其中,所述预设内存要求是指系统基于目标数据源文件的字节大小等,预先设置的计算机最小内存要求。所述swap是一种虚拟的内存。通过将所述计算机内存中的非工作物理页面交换到所述硬盘上,从而保证计算机内存符合所述预设内存要求,达到保证目标映射文件顺利读取的技术效果。
综上所述,本申请实施例所提供的一种基于reactor的异步批处理方法具有如下技术效果:
1.通过步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。达到了基于reactor将大文件均匀拆分,进而多线程并发加载,提高文件加载速度,此外如果出现意外需要重跑,仅需回滚出错的文件分块,达到节约加载时间的技术效果。
2.通过指针ptr,实现了对基于MMU转换的物理地址对应文件的直接处理,无需多次调用文件读写,达到了简化流程,提高处理效率的技术效果。
实施例二
基于与前述实施例中一种基于reactor的异步批处理方法,同样发明构思,本发明还提供了一种基于reactor的异步批处理系统,请参阅附图5,所述系统包括:
第一获得单元11,所述第一获得单元11用于执行步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;
第一启动单元12,所述第一启动单元12用于执行步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;
第一确定单元13,所述第一确定单元13用于执行步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;
第一读取单元14,所述第一读取单元14用于执行步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;
第一存储单元15,所述第一存储单元15用于执行步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;
第一写入单元16,所述第一写入单元16用于执行步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。
进一步的,所述系统还包括:
第二获得单元,所述第二获得单元用于根据所述目标数据源,获得文件字节大小;
第一生成单元,所述第一生成单元用于根据所述文件字节大小和所述服务器内核数量,对所述目标数据源进行分块,生成所述文件块集合以及任一文件块字节大小;
第一设置单元,所述第一设置单元用于其中,所述文件块集合的数量与所述服务器内核数量一致,且所述任一文件块字节大小为所述文件字节大小与所述服务器内核数量相除的结果。
进一步的,所述系统还包括:
第一确定单元,所述第一确定单元用于根据所述文件块集合,确定批处理任务信息,其中,所述批处理任务信息由任务执行逻辑单位组成,且所述任务执行逻辑单位包括读数据单位、数据处理单位以及写数据单位;
第一处理单元,所述第一处理单元用于基于作业执行器,所述任务执行逻辑单位处理所述批处理任务信息,并启动所述目标数据源的工作线程;
第一保存单元,所述第一保存单元用于将所述工作线程的执行结果保存至作业仓库。
进一步的,所述系统还包括:
第一映射单元,所述第一映射单元用于将所述读取到的数据作为目标映射文件,服务器系统调用mmap(),逻辑上,将所述目标映射文件从硬盘的文件系统,经过进程逻辑地址空间,映射到所述计算机内存;
第一返回单元,所述第一返回单元用于通过所述mmap(),返回指针ptr,且所述指针ptr指向所述进程逻辑地址空间的逻辑地址;
第一转换单元,所述第一转换单元用于基于MMU,将所述逻辑地址转换为物理地址,对所述目标映射文件进行处理。
进一步的,所述系统还包括:
第二生成单元,所述第二生成单元用于若所述将所述逻辑地址转换为物理地址的进程失败,生成缺页中断结果;
第一构建单元,所述第一构建单元用于根据所述缺页中断结果的中断响应函数和所述mmap()构建的映射关系,将所述目标映射文件从所述硬盘读取到所述计算机内存。
进一步的,所述系统还包括:
第一判断单元,所述第一判断单元用于判断所述计算机内存是否达到预设内存要求;
第一交换单元,所述第一交换单元用于若所述计算机内存没有达到所述预设内存要求,基于虚拟内存机制swap,将所述计算机内存中的非工作物理页面交换至所述硬盘上。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,前述图1实施例一中的一种基于reactor的异步批处理方法和具体实例同样适用于本实施例的一种基于reactor的异步批处理系统,通过前述对一种基于reactor的异步批处理方法的详细描述,本领域技术人员可以清楚的知道本实施例中一种基于reactor的异步批处理系统,所以为了说明书的简洁,在此不再详述。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
示例性电子设备
下面参考图6来描述本申请实施例的电子设备。
图6图示了根据本申请实施例的电子设备的结构示意图。
基于与前述实施例中一种基于reactor的异步批处理方法的发明构思,本发明还提供一种基于reactor的异步批处理系统,其上存储有计算机程序,该程序被处理器执行时实现前文所述一种基于reactor的异步批处理方法的任一方法的步骤。
其中,在图6中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口305在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。
处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。
本申请提供了一种基于reactor的异步批处理方法,所述方法应用于一种基于reactor的异步批处理系统,其中,所述方法包括:通过步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。解决了现有技术中原生Spring Batch框架存在内部架构复杂、流程冗余,从而导致性能低下的技术问题。达到了基于reactor将大文件均匀拆分,进而多线程并发加载,提高文件加载速度,此外如果出现意外需要重跑,仅需回滚出错的文件分块,达到节约加载时间的技术效果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全软件实施例、完全硬件实施例、或结合软件和硬件方面实施例的形式。此外,本申请为可以在一个或多个包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。而所述的计算机可用存储介质包括但不限于:U盘、移动硬盘、只读存储器(Read-0nly Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、磁盘存储器、只读光盘(Compact Disc Read-Only Memory,简称CD-ROM)、光学存储器等各种可以存储程序代码的介质。
本发明是参照本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种基于reactor的异步批处理方法,其中,所述方法应用于一种基于reactor的异步批处理系统,所述方法包括:
步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;
步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;
步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;
步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;
步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;
步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。
2.如权利要求1所述的方法,其中,所述步骤S100包括:
根据所述目标数据源,获得文件字节大小;
根据所述文件字节大小和所述服务器内核数量,对所述目标数据源进行分块,生成所述文件块集合以及任一文件块字节大小;
其中,所述文件块集合的数量与所述服务器内核数量一致,且所述任一文件块字节大小为所述文件字节大小与所述服务器内核数量相除的结果。
3.如权利要求1所述的方法,其中,所述步骤S200包括:
根据所述文件块集合,确定批处理任务信息,其中,所述批处理任务信息由任务执行逻辑单位组成,且所述任务执行逻辑单位包括读数据单位、数据处理单位以及写数据单位;
基于作业执行器,所述任务执行逻辑单位处理所述批处理任务信息,并启动所述目标数据源的工作线程;
将所述工作线程的执行结果保存至作业仓库。
4.如权利要求1所述的方法,其中,所述步骤S400包括:
将所述读取到的数据作为目标映射文件,服务器系统调用mmap(),逻辑上,将所述目标映射文件从硬盘的文件系统,经过进程逻辑地址空间,映射到所述计算机内存;
通过所述mmap(),返回指针ptr,且所述指针ptr指向所述进程逻辑地址空间的逻辑地址;
基于MMU,将所述逻辑地址转换为物理地址,对所述目标映射文件进行处理。
5.如权利要求4所述的方法,其中,所述方法还包括:
若所述将所述逻辑地址转换为物理地址的进程失败,生成缺页中断结果;
根据所述缺页中断结果的中断响应函数和所述mmap()构建的映射关系,将所述目标映射文件从所述硬盘读取到所述计算机内存。
6.如权利要求5所述的方法,其中,所述方法还包括:
判断所述计算机内存是否达到预设内存要求;
若所述计算机内存没有达到所述预设内存要求,基于虚拟内存机制swap,将所述计算机内存中的非工作物理页面交换至所述硬盘上。
7.一种基于reactor的异步批处理系统,其中,所述系统包括:
第一获得单元:所述第一获得单元用于执行步骤S100:根据服务器内核数量,获得目标数据源的文件块集合;
第一启动单元:所述第一启动单元用于执行步骤S200:基于Spring Batch框架,根据所述服务器内核数量,启动所述目标数据源的工作线程,所述工作线程包括读取所述目标数据源的生产线程和写入读取数据的消费线程,且所述工作线程的数量与所述服务器内核数量一致;
第一确定单元:所述第一确定单元用于执行步骤S300:根据所述服务器内核数量,确定存储数据的内核缓冲区;
第一读取单元:所述第一读取单元用于执行步骤S400:基于内存映射技术,所述生产线程中的任一生产线程对所述文件块集合中的任一文件块进行数据读取,并将读取到的数据映射至计算机内存;
第一存储单元:所述第一存储单元用于执行步骤S500:将所述读取到的数据存储至所述内核缓冲区中任一缓冲区,重复所述步骤S400和所述步骤S500,直至将所述文件块集合中的所有数据全部读取完毕;
第一写入单元:所述第一写入单元用于执行步骤S600:基于Reactor技术,所述消费线程将存入所述内核缓冲区的数据写入目的端,重复所述步骤S600,直至将所述内核缓冲区的所有存储数据全部写入所述目的端,结束对所述目标数据源的异步批处理。
8.一种基于reactor的异步批处理系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现权利要求1~6任一项所述方法的步骤。
CN202111483865.4A 2021-12-07 2021-12-07 一种基于reactor的异步批处理方法及系统 Active CN114253713B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111483865.4A CN114253713B (zh) 2021-12-07 2021-12-07 一种基于reactor的异步批处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111483865.4A CN114253713B (zh) 2021-12-07 2021-12-07 一种基于reactor的异步批处理方法及系统

Publications (2)

Publication Number Publication Date
CN114253713A true CN114253713A (zh) 2022-03-29
CN114253713B CN114253713B (zh) 2024-07-09

Family

ID=80794144

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111483865.4A Active CN114253713B (zh) 2021-12-07 2021-12-07 一种基于reactor的异步批处理方法及系统

Country Status (1)

Country Link
CN (1) CN114253713B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115167786A (zh) * 2022-09-06 2022-10-11 浪潮电子信息产业股份有限公司 一种数据存储方法、装置、系统、设备和介质
CN116910142A (zh) * 2023-09-12 2023-10-20 山东师范大学 基于空间化的农业生态系统服务可视化评估方法及系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819497A (zh) * 2012-05-31 2012-12-12 华为技术有限公司 一种内存分配方法、装置及系统
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
CN107329813A (zh) * 2017-06-09 2017-11-07 北京中科睿芯科技有限公司 一种面向众核处理器的全局感知数据主动预取方法及系统
US20180286115A1 (en) * 2017-04-01 2018-10-04 Intel Corporation Conditional shader for graphics
CN110750356A (zh) * 2019-09-09 2020-02-04 华南师范大学 适用于非易失性内存的多核交互方法、系统及存储介质
CN110955542A (zh) * 2019-12-11 2020-04-03 深圳盈佳信联科技有限公司 一种数据集成服务平台
US20200117605A1 (en) * 2018-12-20 2020-04-16 Intel Corporation Receive buffer management
CN111124679A (zh) * 2019-12-19 2020-05-08 南京莱斯信息技术股份有限公司 一种面向多源异构海量数据限时自动处理方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
CN102819497A (zh) * 2012-05-31 2012-12-12 华为技术有限公司 一种内存分配方法、装置及系统
US20180286115A1 (en) * 2017-04-01 2018-10-04 Intel Corporation Conditional shader for graphics
CN107329813A (zh) * 2017-06-09 2017-11-07 北京中科睿芯科技有限公司 一种面向众核处理器的全局感知数据主动预取方法及系统
US20200117605A1 (en) * 2018-12-20 2020-04-16 Intel Corporation Receive buffer management
CN110750356A (zh) * 2019-09-09 2020-02-04 华南师范大学 适用于非易失性内存的多核交互方法、系统及存储介质
CN110955542A (zh) * 2019-12-11 2020-04-03 深圳盈佳信联科技有限公司 一种数据集成服务平台
CN111124679A (zh) * 2019-12-19 2020-05-08 南京莱斯信息技术股份有限公司 一种面向多源异构海量数据限时自动处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JOHN M. LEVESQUE: ""Application Development for Titan - A Multi-Petaflop Hybrid-Multicore MPP System"", 《2012 SC COMPANION: HIGH PERFORMANCE COMPUTING, NETWORKING STORAGE AND ANALYSIS》, 11 April 2013 (2013-04-11), pages 1731 - 1821 *
尹京昱: ""面向高并发小包数据分布式存储系统的设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 2017, 15 February 2017 (2017-02-15), pages 137 - 82 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115167786A (zh) * 2022-09-06 2022-10-11 浪潮电子信息产业股份有限公司 一种数据存储方法、装置、系统、设备和介质
CN116910142A (zh) * 2023-09-12 2023-10-20 山东师范大学 基于空间化的农业生态系统服务可视化评估方法及系统

Also Published As

Publication number Publication date
CN114253713B (zh) 2024-07-09

Similar Documents

Publication Publication Date Title
US9189487B2 (en) Method for recording transaction log, and database engine
US9229789B2 (en) Transparent user mode scheduling on traditional threading systems
JP5295228B2 (ja) 複数のプロセッサを備えるシステム、ならびにその動作方法
CN114253713B (zh) 一种基于reactor的异步批处理方法及系统
CN107016016B (zh) 一种数据处理的方法及装置
US8738890B2 (en) Coupled symbiotic operating system
US7228543B2 (en) Technique for reaching consistent state in a multi-threaded data processing system
US8954969B2 (en) File system object node management
CN115934102B (zh) 通用寄存器动态分配方法、装置、计算机设备和存储介质
EP3719645B1 (en) Extension application mechanisms through intra-process operation systems
US9053022B2 (en) Synchronous software interface for an accelerated compute engine
US7921220B2 (en) Reducing occurrences of two-phase commits in a multi-node computing system
CN111429140B (zh) 一种实现多层级智能合约栈的原子性的方法和装置
CN112631994A (zh) 数据迁移方法及系统
US20090320036A1 (en) File System Object Node Management
US11385927B2 (en) Interrupt servicing in userspace
US8359602B2 (en) Method and system for task switching with inline execution
US20080072009A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
CN111090627A (zh) 基于池化的日志存储方法、装置、计算机设备及存储介质
CN110765098B (zh) 流程运行预测系统及方法
JP3163196B2 (ja) 仮想記憶制御における命令中断情報格納制御方法
KR101395007B1 (ko) 복수의 프로세서를 이용한 스냅샷 이미지 처리 장치 및 방법
CN109669771B (zh) 依赖环境更迭方法及装置
JP6439887B1 (ja) 情報処理装置
CN117194002A (zh) 一种应用于分布式计算引擎的处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant