CN111625507A - 一种文件处理方法及装置 - Google Patents
一种文件处理方法及装置 Download PDFInfo
- Publication number
- CN111625507A CN111625507A CN202010478332.6A CN202010478332A CN111625507A CN 111625507 A CN111625507 A CN 111625507A CN 202010478332 A CN202010478332 A CN 202010478332A CN 111625507 A CN111625507 A CN 111625507A
- Authority
- CN
- China
- Prior art keywords
- file
- server
- processed
- processing
- subtasks
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种文件处理方法及装置,适用于包括多个服务器的分布式集群;所述方法包括:第一服务器按照文件处理配置,确定待处理文件的各分片对应的各子任务;第一服务器将各子任务发送至第三服务器,并将各子任务个数写入第三服务器;第三服务器接收各子任务,并将各子任务广播至各第二服务器;各第二服务器按照文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给第三服务器;第三服务器确定接收的处理结果个数等于各子任务个数,则待处理文件处理完成。采用上述方法,可以实现通过多线程同时分别对该待处理文件的待处理分片进行处理,且通过设置文件处理配置可以减少时间成本和人力成本。
Description
技术领域
本发明涉及大数据技术领域,特别涉及一种文件处理方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出更高的要求。也就是说,虽然通过对计算机技术的应用,大大加快了业务处理的速度与准确性,释放了大量的人力物力。但随着行业的发展,现有的技术已经无法满足业务处理需求。
现有技术中通过一台服务器处理业务,由工作人员撰写相应的处理逻辑以及运行处理逻辑的相关逻辑实现业务处理。例如,通过将客户的理财信息文件加载在该服务器的本地,如此,该服务器根据处理逻辑的相关逻辑运行该处理逻辑,进而对该服务器本地的客户的理财信息文件进行处理。这种处理方式,虽然相对于传统处理方式加快了处理速度、提高了准确性。但是由于社会经济的快速发展,人们的理财观念增强,关注理财的人群已经不止于固定的一类人;如,年轻人、某类工作或某地区的人等;对于各年龄段、各行业和各地区的人都几乎会对理财产品有一定了解。因此,使得理财人群基数增大,理财产品的销售量增加;相应的,对于客户理财信息的统计也成为了一项较为繁重的工作,现有技术的处理方式,已经无法满足如今业务量的需求。
因此,现在亟需一种文件处理方法及装置,可以加快文件的处理速度,减少时间成本和人力成本。
发明内容
本发明实施例提供一种文件处理方法及装置,可以加快文件的处理速度,减少时间成本和人力成本。
第一方面,本发明实施例提供一种文件处理方法,适用于包括多个服务器的分布式集群;所述方法包括:第一服务器按照文件处理配置,确定待处理文件的各分片对应的各子任务;所述第一服务器将各子任务发送至第三服务器,并将各子任务个数写入所述第三服务器;所述第三服务器接收所述各子任务,并将所述各子任务广播至各第二服务器;所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器;所述第三服务器确定接收的所述处理结果个数等于所述各子任务个数,则所述待处理文件处理完成。
采用上述方法,第一服务器根据文件处理配置确定待处理文件的各分片对应的各子任务,进一步将各子任务发送至第三服务器。如此,使得第三服务器对各子任务进行管理,便于后续第二服务器获取各子任务并进行处理,且第三服务器为具有原子性的服务器,可以保证待处理文件的各子任务全部处理完成后再结束任务,保证待处理文件的处理结果的完整性与准确性。进一步地,第三服务器广播使得第二服务器依次获取子任务,以使得第二服务器可以根据各子任务得到相应的待处理分片,并对该待处理分片进行处理。如此,相比于现有技术中的由一台服务器处理待处理文件;本申请通过多台第二服务器实现多线程同时分别对该待处理文件进行处理,可以加快处理速度,减少第二服务器的处理压力。另外,通过设置文件处理配置,还可以减少时间成本和人力成本。
在一种可能的设计中,所述第一服务器按照所述文件处理配置,确定待处理文件的各分片对应的各子任务,包括:第一服务器按照文件处理配置中的文件路径,获取待处理文件;所述第一服务器按照所述文件处理配置中的分片规则,确定所述待处理文件的各分片位置;所述第一服务器根据所述各分片位置确定各子任务。
采用上述方法,第一服务器根据文件处理配置中的文件路径获取待处理文件,进一步按照文件处理配置中的分片规则确定各分片位置。最后,第一服务器可以根据各分片位置确定各子任务。如此,可以通过各子任务中的各分片位置确定各分片在待处理文件的那一部分。进一步地,第二服务器获取到各子任务后,以使得第二服务器可以根据各子任务得到相应的待处理分片,并对该待处理分片进行处理。如此,实现通过多台第二服务器、多线程同时分别对该待处理文件进行处理,可以加快处理速度,减少第二服务器的处理压力。另外,通过设置文件处理配置,还可以减少时间成本和人力成本。
在一种可能的设计中,所述第一服务器按照所述文件处理配置中的分片规则,确定所述待处理文件的各分片位置,包括:所述第一服务器确定所述待处理文件的文件体;所述第一服务器根据所述分片规则中的分片阈值,确定所述文件体的各分片位置;针对每个分片位置,按照如下方式确定:自分片起始位置开始统计,在满足所述分片阈值的位置确定当前字符是否为换行符;若不是则继续统计直至首个换行符的位置作为分片结束位置。
采用上述方法,第一服务器确定待处理文件的文件体后,根据分片规则中的分片阈值确定文件体的各分片位置。如此,获取不包括文件头和文件尾的文件体,对文件体进行分片,可以保证分片文件的内容为需要处理的内容,增加处理的准确性。且因为分片阈值可以通过待处理文件的大小、文件体的大小以及第一服务器和第二服务器的处理能力等因素确定。如此,可以使得各服务器以最快的效率对待处理文件进行多线程处理。若根据分片阈值自分片起始位置统计确定的结束位置不是换行符的时候,则继续统计直到确定首个换行符,将该换行符的位置作为结束位置。如此,可以保证待处理分片内的文件信息的完整性,增加后续服务器对待处理分片处理的准确性。
在一种可能的设计中,所述第一服务器根据所述分片规则中的分片阈值,确定所述文件体的各分片位置,包括:所述分片阈值可以通过如下公式确定:
P=MIN(G,MAX(P/(2*N),L))
其中,P为所述分片阈值;G为所述分片阈值最大值,L为所述分片阈值最小值,所述G和L由历史经验值和服务器的性能确定;N为服务器的处理器核数。
采用上述方法,对待处理文件分片时,根据分片阈值对待处理文件进行分片。而分片阈值是经过历史经验和服务器性能确定的最佳分片的大小。以此,加快第二服务器对各子任务对应的待处理文件分片处理的速度,节省时间成本。
在一种可能的设计中,所述第一服务器确定所述待处理文件的文件体,包括:所述第一服务器自所述待处理文件的第一个非换行符的字符开始,按照所述文件处理配置中的文件头行数,确定所述待处理文件的文件头;所述第一服务器自所述待处理文件的最后一个非换行符的字符开始,按照所述文件处理配置中的文件尾行数,确定所述待处理文件的文件尾;所述第一服务器将所述待处理文件中除所述文件头和所述文件尾的部分,确定为所述文件体。
采用上述方法,第一服务器可以根据待处理文件的类型和文件处理配置中对各类型文件的文件头行数和文件尾行数的配置,准确确定文件体。增加分片待处理文件的准确度,保证了每个待处理分片内容的准确度。另外,通过倒数待处理文件的第一个非换行符的字节确定文件尾,可以减少第一服务器自文件头遍历到文件尾的工作量,加快文件体的确定速度。
在一种可能的设计中,所述第三服务器接收所述各子任务,并将所述各子任务广播至各第二服务器,包括:所述第三服务器接收所述各子任务,则向所述各第二服务器广播;所述第二服务器接收到广播后依次从所述第三服务器中获取子任务,并根据所述子任务中的分片位置从所述待处理文件中获取待处理分片;所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器,包括:所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的所述待处理分片,并将所述待处理分片的处理结果发送给所述第三服务器。
采用上述方法,第三服务器接收各子任务后,向各第二服务器广播,使得第二服务器接收到广播后依次从第三服务器中获取子任务,并根据子任务中的分片位置从待处理文件中获取待处理分片。如此,使得各第二服务器不会获取相同的子任务,提高第二服务器处理子任务的效率,保证待处理文件的处理结果的准确性。第二服务器根据文件处理配置中的处理逻辑并行处理各自的待处理分片。可以在文件处理配置中灵活设置所需处理逻辑,根据文件处理配置中的处理逻辑,可以得到所需待处理文件的处理结果,且第二服务器并行处理各子任务增加待处理文件的处理速度。第二服务器将处理结果发送至第三服务器,有利于各子任务的处理结果的统一管理以及第三服务器确认处理任务的原子性,保证待处理文件处理的完整性。
在一种可能的设计中,所述第二服务器根据所述子任务中的分片位置从所述待处理文件中获取待处理分片,包括:所述第二服务器通过内存映射方式,根据所述子任务中的分片位置从所述待处理文件中获取所述待处理分片至所述第二服务器的内存中。
采用上述方法,第二服务器通过内存映射方式根据子任务中的分片位置获得待处理分片,将该待处理分片存储并处理,减少第二服务器中的被占用资源,降低第二服务器的处理压力,加快第二服务器的处理速度。另外,第二服务器还可以依照顺序依次获取待处理分片的部分内容,对部分内容处理得到处理结果。如此,保留处理结果,删除该结果对应的部分内容,使得第二服务器的内存资源一直处于最大可利用的状态,减小第二服务器的资源占用,增加第二服务器的处理性能,进一步加快第二服务器的处理速度。
在一种可能的设计中,所述文件处理配置为在预设模板上进行编写得到的;所述预设模板设置有打开文件、读取文件及关闭文件的功能代码。
采用上述方法,由于文件处理配置在预设模板上编写,而预设模板中设置了打开文件、读取文件及关闭文件的功能代码。因此,无需工作人员另外编写相应的功能代码,减少工作人员的工作压力以及时间成本。另外,由于该部分的功能代码的复杂性,本申请通过这种方法,不仅可以降低工作人员的工作压力和时间成本;还可以消除由于工作人员编写打开文件或读取文件的功能代码出现失误而导致文件被破坏的情况。还可以消除由于工作人员忘记编写或编写错误关闭文件的功能代码,而使得待处理文件一直占用服务器资源的情况。
第二方面,本发明实施例提供一种文件处理装置,适用于包括多个服务器的分布式集群;所述装置包括:
处理模块,用于按照文件处理配置,确定待处理文件的各分片对应的各子任务;
收发模块,用于将各子任务发送至第三服务器,并将各子任务个数写入所述第三服务器;
收发模块,用于接收所述各子任务,并将所述各子任务广播至各第二服务器;
所述处理模块还用于,按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器;
所述收发模块还用于,确定接收的所述处理结果个数等于所述各子任务个数,则所述待处理文件处理完成。
第三方面,本发明实施例还提供一种计算设备,包括:存储器,用于存储程序指令;处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如第一方面的各种可能的设计中所述的方法。
第四方面,本发明实施例还提供一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如第一方面的各种可能的设计中所述的方法。
本发明的这些实现方式或其他实现方式在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种文件处理方法的架构示意图;
图2为本发明实施例提供的一种文件处理方法的流程示意图;
图3为本发明实施例提供的一种文件处理方法的流程示意图;
图4为本发明实施例提供的一种文件处理装置示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种文件处理的***架构,第一服务器102可以是第二服务器104中的任意一个,第一服务器102从本地或文件服务器101中获取待处理文件。这里可以通过内存映射的方式从文件服务器中获得待处理文件,可以降低第一服务器102的资源占用。第一服务器102将该待处理文件分片并确定每个待处理分片的开始位置和结束位置,根据各分片位置确定各子任务,并将各子任务发送至各第二服务器104,使得各第二服务器104根据各子任务获取待处理分片进行处理。这里第一服务器102确定各子任务后,还可以将各子任务发送至第三服务器,使得各第二服务器104从第三服务器中获取各子任务,进而获取待处理分片进行处理。如此,因为第三服务器在高并发场景下的可用性及其原子性,可以保证待处理文件处理的速度和结果的完整性及准确性。此处,第三服务器可以是任何具有高并发和原子性的功能的程序或算法所在的服务器,例如,Redis服务器,或包含Java的高并发和原子性的功能程序的服务器等。
基于此,本发明实施例提供了一种文件处理方法的流程,如图2所示,包括:
步骤201、第一服务器按照文件处理配置,确定待处理文件的各分片对应的各子任务;
此处,各子任务中可以包括各分片位置、待处理分片的文件地址、待处理文件的标识等等。文件处理配置中的处理逻辑可以是相应的运算方式;例如,待处理文件为公司一年的客户购买理财的信息,可以通过设置相应的运算方式对应的处理逻辑确定该公司这一年的营业额。还可以是相应的分析处理;例如,确定该公司这一年的购买理财所用金额最多的客户。这里处理逻辑具体不做限定。
步骤202、所述第一服务器将各子任务发送至第三服务器,并将各子任务个数写入所述第三服务器;
此处,第一服务器将各子任务发送至第三服务器的同时,将子任务的个数,也就是待处理分片的个数taskCount写入第三服务器中,用以后面第三服务器确定各第二服务器处理各子任务的执行状态。由于第二服务器的数据库处理速度比较慢,且在高并发场景下可能导致某一台或多台第二服务器的状态未成功同步,会导致任务执行状态一直无法更新。因此,通过设置第三服务器来进行第二服务器的状态同步。防止出现部分待处理分片未被处理就完成处理任务,或部分待处理分片被多次处理,使得待处理文件的处理结果不准确。
步骤203、所述第三服务器接收所述各子任务,并将所述各子任务广播至各第二服务器;
步骤204、所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器;
此处,将处理结果发送至第三服务器,保证了第三服务器获取第二服务器的子任务处理状态,进一步为第二服务器提供新的子任务。第三服务器获取第二服务器处理待处理文件的各子任务的状态,加快待处理文件的处理速度。
步骤205、所述第三服务器确定接收的所述处理结果个数等于所述各子任务个数,则所述待处理文件处理完成。
此处,第三服务器确定处理结果个数等于子任务数,确定待处理文件处理完成。如此,保证处理任务的完整性。防止任务处理未完成,发生网络异常等状况时,第二服务器获得的处理结果为不完整的处理结果。
采用上述方法,第一服务器根据文件处理配置确定待处理文件的各分片对应的各子任务,进一步将各子任务发送至第三服务器。如此,使得第三服务器对各子任务进行管理,便于后续第二服务器获取各子任务并进行处理,且第三服务器为具有原子性的服务器,可以保证待处理文件的各子任务全部处理完成后再结束任务,保证待处理文件的处理结果的完整性与准确性。进一步地,第三服务器广播使得第二服务器依次获取子任务,以使得第二服务器可以根据各子任务得到相应的待处理分片,并对该待处理分片进行处理。如此,相比于现有技术中的由一台服务器处理待处理文件;本申请通过多台第二服务器实现多线程同时分别对该待处理文件进行处理,可以加快处理速度,减少第二服务器的处理压力。另外,通过设置文件处理配置,还可以减少时间成本和人力成本。
本申请实施例提供了一种文件处理方法,第一服务器按照文件处理配置,确定待处理文件的各分片对应的各子任务,包括:第一服务器按照文件处理配置中的文件路径,获取待处理文件;所述第一服务器按照所述文件处理配置中的分片规则,确定所述待处理文件的各分片位置;所述第一服务器根据所述各分片位置确定各子任务。
此处,文件处理配置中的文件路径可以由用户直接输入,也可以为预先设定;文件路径可以是待处理文件在第一服务器内存中的物理地址;可以是待处理文件所在的文件服务器的所在地址,以及待处理文件在文件服务器的内存中的物理地址;也可以是通过内存映射产生的相对于存储待处理文件的文件服务器内存的物理地址的逻辑地址。这里文件路径具体不做限制。文件处理配置中的分片规则为对待处理文件分片的规则,可以包括待处理分片的大小、待处理分片记录方式等,具体不做限定。待处理文件的各分片位置为待处理分片在待处理文件中的位置信息,可以用待处理分片开始位置在待处理文件的第几个字节,结束位置在待处理文件的第几个字节来记录。例如,待处理文件共有3000个字节,该第1个待处理分片的开始位置在待处理文件的第1个字节,结束位置在待处理文件的第100个字节;该第2个待处理分片的开始位置在待处理文件的第101个字节,结束位置在待处理文件的第200个字节。如此,将待处理分片的开始位置和结束位置等信息记录可生成该待处理分片对应的子任务。
本申请实施例提供了一种文件处理配置中的分片规则,所述第一服务器按照所述文件处理配置中的分片规则,确定所述待处理文件的各分片位置,包括:所述第一服务器确定所述待处理文件的文件体;所述第一服务器根据所述分片规则中的分片阈值,确定所述文件体的各分片位置;针对每个分片位置,按照如下方式确定:自分片起始位置开始统计,在满足所述分片阈值的位置确定当前字符是否为换行符;若不是则继续统计直至首个换行符的位置作为分片结束位置。也就是说,文件处理配置中的分片规则可以先确定待处理文件的文件体,根据分片规则中设定的分片阈值,确定文件体的各分片位置。其中,分片阈值表示待处理分片的每片的大小,单位为B,分片阈值的大小可以根据待处理文件的大小(单位为B)和服务器的处理器核数N确定;如此,可以消除由于待处理分片过大,后续对待处理分片进行处理时,可能导致内存消耗过高;相应的也可以消除因为待处理分片过小而产生很多小的待处理分片,浪费可用内存。因此,还设定一个待处理分片大小的最大值G和最小值L,单位都是B,为了尽可能的利用服务器的性能,保证一个待处理文件可以分成合适的片数来并行处理;可以通过公式P(分片阈值)=MIN(G,MAX(P/(2*N),L))来最终确定待处理分片大小。在上一个示例中,待处理文件共有3000个字节,若设定的分片阈值为100个字节作为一个待处理分片,则该第1个待处理分片的开始位置在待处理文件的第1个字节,结束位置在待处理文件的第100个字节;该第2个待处理分片的开始位置在待处理文件的第101个字节,结束位置在待处理文件的第200个字节。则第1个待处理分片为待处理文件的第1-100个字节,则第2个待处理分片为待处理文件的第101-200个字节;如此,直到第30个待处理分片为待处理文件的第2901-3000个字节。其中,若是当分片阈值确定的结束位置不是换行符,则需要继续统计到首个换行符。如此,保证每个待处理分片的内容的完整性。在上一个示例中,若第1个待处理分片的结束位置在待处理文件的第100个字节,但该第100个字节不是换行符,则代表该行的内容未结束,需要继续向下统计,直到获得首个换行符,确定该行内容结束。若首个换行符为待处理文件的第120个字节,则第1个待处理分片为待处理文件的第1-120个字节。则第2个待处理分片为待处理文件的第121-220个字节。
本申请实施例还提供了一种文件分片过程实现的代码公式,如下所示:
local filePair List;//待处理文件的待处理分片结果集合。
For long point=0;point<=n-1do;//开始遍历待处理文件,point表示待处理文件当前指针位置;
local end=point+P;//按固定大小P进行分片。
if end>=n-1;//判断是否已到文件尾。
end=n-1;//表示已读取到文件尾。
else;
end=seekRowEnd();//从end指针位置开始往后遍历,找到第一个换行符作为该待处理分片的结束位置。seekRowEnd()方法表示从指定位置开始,往后一个字节一个字节的遍历待处理文件,直到找到第一个换行符,返回该换行符在待处理文件中的位置值;
end//分片过程结束。
这里,通过上述方法可以实现将待处理文件分片。
local filePair;//新建一个待处理分片。
filePair.start=point;//设置该待处理分片的开始位置。
filePair.end=end;//设置该待处理分片的结束位置。
filePairList.add(filePair);//将该待处理分片的位置信息加入分片结果集合。
point=end+1;//将文件指针往下移动一个字节,继续分片。
End;
这里,将上一个分片过程得到的待处理分片的位置信息记录,以用于后续该待处理分片的处理。
如此,采用这种方式;获取不包括文件头和文件尾的文件体,对文件体进行分片,可以保证分片文件的内容为需要处理的内容,增加处理的准确性。且因为分片阈值可以通过待处理文件的大小、文件体的大小以及第一服务器和第二服务器的处理能力等因素确定。如此,可以使得各服务器以最快的效率对待处理文件进行多线程处理。若根据分片阈值自分片起始位置统计确定的结束位置不是换行符的时候,则继续统计直到确定首个换行符,将该换行符的位置作为结束位置。如此,可以保证待处理分片内的文件信息的完整性,增加后续服务器对待处理分片处理的准确性。
本申请实施例提供了又一种文件处理配置中的分片规则,所述第一服务器确定所述待处理文件的文件体,包括:所述第一服务器自所述待处理文件的第一个非换行符的字符开始,按照所述文件处理配置中的文件头行数,确定所述待处理文件的文件头;所述第一服务器自所述待处理文件的最后一个非换行符的字符开始,按照所述文件处理配置中的文件尾行数,确定所述待处理文件的文件尾;所述第一服务器将所述待处理文件中除所述文件头和所述文件尾的部分,确定为所述文件体。
此处,待处理文件的第一个非换行符的字符标志文件头的开始,因此,可以自待处理文件的第一个非换行符的字符开始,按照文件处理配置中的文件头行数,确定待处理文件的文件头。待处理文件的最后一个非换行符的字符标志文件尾的开始,因此,可以自待处理文件的最后一个非换行符的字符开始,按照文件处理配置中的文件尾行数,确定待处理文件的文件尾。如此,通过文件处理配置中的分片规则中记录的文件头行数和文件尾行数可以确定待处理文件的文件体。如此,可以根据待处理文件的类型和文件处理配置中对各类型文件的文件头行数和文件尾行数的配置,进一步根据文件头行数和文件尾行数,准确确定文件体。增加分片待处理文件的准确度,保证了每个待处理分片内容的准确度。
本申请实施例提供了一种文件的处理方法,所述第三服务器接收所述各子任务,并将所述各子任务广播至各第二服务器,包括:所述第三服务器接收所述各子任务,则向所述各第二服务器广播;所述第二服务器接收到广播后依次从所述第三服务器中获取子任务,并根据所述子任务中的分片位置从所述待处理文件中获取待处理分片;所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器,包括:所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的所述待处理分片,并将所述待处理分片的处理结果发送给所述第三服务器。
此处,第一服务器获取待处理文件并分片后,根据各待处理分片的各分片位置确定各子任务,将各子任务发送至第三服务器,第三服务器接收到各子任务后向第二服务器发出广播,通知各第二服务器来获取各子任务。这里也可以是第二服务器一直监控第一服务器的分片处理状态,当第一服务器分片完成后,第二服务器主动从第三服务器中获取子任务。或者第一服务器和第二服务器共享处理状态,如此,当第一服务器分片完成后,第二服务器主动从第三服务器中获取子任务。另外,第二服务器通过获取的子任务中的分片位置获得对应的待处理分片,各第二服务器根据文件处理配置中的处理逻辑对各自获取的待处理分片进行同时处理,加快待处理文件的处理速度。且第二服务器根据分片位置获取子任务对应的待处理分片,第二服务器中没有存储待处理文件,因此,待处理文件不会占用第二服务器的内存资源。保证第二服务器的处理性能。
本申请实施例提供了一种文件处理方法,所述第二服务器根据所述子任务中的分片位置从所述待处理文件中获取待处理分片,包括:所述第二服务器通过内存映射方式,根据所述子任务中的分片位置从所述待处理文件中获取所述待处理分片至所述第二服务器的内存中。也就是说,第二服务器通过内存映射的方式获取对应子任务的待处理分片,可以在待处理分片处理完后,只保存该待处理分片的处理结果,继而继续处理下一个待处理分片,使得第二服务器中一直只有一个待处理分片占用小的内存,保证资源的占用率一直最小,保证第二服务器的性能。
此处,根据上述分片过程的实施例,本申请实施例还提供了一种待处理分片读取方法,如下所示:
第二服务器将待处理分片通过内存映射加载到内存中,filePair(k)表示待处理分片结果集合中的第k个分片,根据待处理分片的开始位置和结束位置,将待处理分片的内容映射到虚拟内存中,然后在通过缓存,以设定行数一部分一部分的依次加载到内存中,以使得第二服务器内存中总是只有设定行数的待处理分片;当设定行数为V,则:
local rowList;//待处理分片行数据集合。
local row;//读取的每行数据内容。
local count=0;
for bytedata in filePair(k).data do;//bytedata为待处理分片filePair(k)的内容。
if bytedata==‘\n’//判断该内容最后一个字节是否为换行符。
rowList.add(row);//如果是换行符则说明已经读完一行,将已读取的这行内容添加到rowList中。
row.clear();//把row清空,准备读取下一行数据。
count++;//已读取到的行数+1。
if count==V;//判断本次读取的总行数是否达到V值。
callBusinessProcess(rowList);//读取到V条数据,调用对应该待处理文件的处理逻辑。
rowList.clear();//清空已读取到的行数据。
count=0;//将count清零,重新计数。
End;
Else;
row.append(data);//如果读到的待处理分片内容不是行尾,则添加到行内容中。
End;
End;
这里,在读取待处理分片的内容时,本申请还提供一个配置表,支持配置非法字符,对读取到的待处理分片中的每一个字节通过该配置表先进行校验,即可在待处理分片读取的过程中过滤掉一些非法字符的内容。
本申请实施例提供了一种文件处理配置的设置方法,所述文件处理配置为在预设模板上进行编写得到的;所述预设模板设置有打开文件、读取文件及关闭文件的功能代码。此处,预设模板中设置有打开文件、读取文件及关闭文件的功能代码。因此,无需工作人员另外编写相应的功能代码,减少工作人员的工作压力以及时间成本。另外,由于该部分的功能代码的复杂性,本申请通过这种方法,不仅可以降低工作人员的工作压力和时间成本;还可以消除由于工作人员编写打开文件或读取文件的功能代码出现失误而导致文件被破坏的情况。还可以消除由于工作人员忘记编写或编写错误关闭文件的功能代码,而使得待处理文件一直占用服务器资源的情况。这里还可以在预设模板中加入针对每一种待处理文件的文件类型对应的配置项,在配置项中加入每种类型待处理文件的固定参数,如上述待处理文件的文件头行数及文件尾行数;如此,无需工作人员另外设置相应的参数,减少工作人员的工作量,降低时间成本。
基于上述流程,本发明实施例提供了一种文件处理方法的流程,其中,第三服务器以Redis服务器为例进行描述,如图3所示,包括:
步骤301、第一服务器获取待处理文件;
步骤302、根据该待处理文件的文件大小和第一服务器与第二服务器的性能确定分片阈值;
步骤303、第一服务器根据分片阈值将该待处理文件分片,生成待处理分片的分片位置,并根据各待处理分片的分片位置生成各子任务;
步骤304、将该各子任务发送至Redis服务器;
步骤305、Redis服务器接收各子任务后,发送广播给第二服务器;
步骤306、第二服务器接收到该广播后从Redis服务器中获取子任务;
步骤307、第二服务器根据子任务获取对应的待处理分片,根据待处理分片的处理逻辑对该待处理分片进行处理,并记录该待处理分片的处理结果;
步骤308、第二服务器可以共享各待处理分片的处理结果,由一个或多个第二服务器根据各待处理分片的处理结果确定待处理文件的处理结果;或者第二服务器也可以将各待处理分片的处理结果发送至文件服务器,在文件服务器中确定待处理文件的处理结果。
基于同样的构思,本发明实施例提供一种文件处理装置,图4为本发明实施例提供的一种文件处理装置示意图,如图4示,包括:
处理模块401,用于按照文件处理配置,确定待处理文件的各分片对应的各子任务;
收发模块402,用于将各子任务发送至第三服务器,并将各子任务个数写入所述第三服务器;
所述收发模块402还用于,接收所述各子任务,并将所述各子任务广播至各第二服务器;
所述处理模块401还用于,按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器;
所述处理模块401还用于,确定接收的所述处理结果个数等于所述各子任务个数,则所述待处理文件处理完成。
在一种可能的设计中,所述处理模块401具体用于:第一服务器按照文件处理配置中的文件路径,获取待处理文件;所述第一服务器按照所述文件处理配置中的分片规则,确定所述待处理文件的各分片位置;所述第一服务器根据所述各分片位置确定各子任务。在一种可能的设计中,所述第一服务器按照所述文件处理配置中的分片规则,确定所述待处理文件的各分片位置,包括:所述第一服务器确定所述待处理文件的文件体;所述第一服务器根据所述分片规则中的分片阈值,确定所述文件体的各分片位置;针对每个分片位置,按照如下方式确定:自分片起始位置开始统计,在满足所述分片阈值的位置确定当前字符是否为换行符;若不是则继续统计直至首个换行符的位置作为分片结束位置。
在一种可能的设计中,所述处理模块401具体用于:所述分片阈值可以通过如下公式确定:
P=MIN(G,MAX(P/(2*N),L))
其中,P为所述分片阈值;G为所述分片阈值最大值,L为所述分片阈值最小值,所述G和L由历史经验值和服务器的性能确定;N为服务器的处理器核数。
在一种可能的设计中,所述处理模块401具体用于:所述第一服务器自所述待处理文件的第一个非换行符的字符开始,按照所述文件处理配置中的文件头行数,确定所述待处理文件的文件头;所述第一服务器自所述待处理文件的最后一个非换行符的字符开始,按照所述文件处理配置中的文件尾行数,确定所述待处理文件的文件尾;所述第一服务器将所述待处理文件中除所述文件头和所述文件尾的部分,确定为所述文件体。
在一种可能的设计中,所述收发模块402具体用于:所述第三服务器接收所述各子任务,则向所述各第二服务器广播;所述第二服务器接收到广播后依次从所述第三服务器中获取子任务,并根据所述子任务中的分片位置从所述待处理文件中获取待处理分片;所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器,包括:所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的所述待处理分片,并将所述待处理分片的处理结果发送给所述第三服务器。
在一种可能的设计中,所述收发模块402具体用于:所述第二服务器通过内存映射方式,根据所述子任务中的分片位置从所述待处理文件中获取所述待处理分片至所述第二服务器的内存中。
在一种可能的设计中,所述文件处理配置为在预设模板上进行编写得到的;所述预设模板设置有打开文件、读取文件及关闭文件的功能代码。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (11)
1.一种文件处理方法,其特征在于,适用于包括多个服务器的分布式集群;所述方法包括:
第一服务器按照文件处理配置,确定待处理文件的各分片对应的各子任务;
所述第一服务器将各子任务发送至第三服务器,并将各子任务个数写入所述第三服务器;
所述第三服务器接收所述各子任务,并将所述各子任务广播至各第二服务器;
所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器;
所述第三服务器确定接收的所述处理结果个数等于所述各子任务个数,则所述待处理文件处理完成。
2.如权利要求1所述的方法,其特征在于,第一服务器按照文件处理配置,确定待处理文件的各分片对应的各子任务,包括:
第一服务器按照文件处理配置中的文件路径,获取待处理文件;
所述第一服务器按照所述文件处理配置中的分片规则,确定所述待处理文件的各分片位置;所述第一服务器根据所述各分片位置确定各子任务。
3.如权利要求2所述的方法,其特征在于,所述第一服务器按照所述文件处理配置中的分片规则,确定所述待处理文件的各分片位置,包括:
所述第一服务器确定所述待处理文件的文件体;
所述第一服务器根据所述分片规则中的分片阈值,确定所述文件体的各分片位置;
针对每个分片位置,按照如下方式确定:自分片起始位置开始统计,在满足所述分片阈值的位置确定当前字符是否为换行符;若不是则继续统计直至首个换行符的位置作为分片结束位置。
4.如权利要求3所述的方法,其特征在于,所述第一服务器根据所述分片规则中的分片阈值,确定所述文件体的各分片位置,包括:
所述分片阈值可以通过如下公式确定:
P=MIN(G,MAX(P/(2*N),L))
其中,P为所述分片阈值;G为所述分片阈值最大值,L为所述分片阈值最小值,所述G和L由历史经验值和服务器的性能确定;N为服务器的处理器核数。
5.如权利要求3所述的方法,其特征在于,所述第一服务器确定所述待处理文件的文件体,包括:
所述第一服务器自所述待处理文件的第一个非换行符的字符开始,按照所述文件处理配置中的文件头行数,确定所述待处理文件的文件头;
所述第一服务器自所述待处理文件的最后一个非换行符的字符开始,按照所述文件处理配置中的文件尾行数,确定所述待处理文件的文件尾;
所述第一服务器将所述待处理文件中除所述文件头和所述文件尾的部分,确定为所述文件体。
6.如权利要求1所述的方法,其特征在于,所述第三服务器接收所述各子任务,并将所述各子任务广播至各第二服务器,包括:
所述第三服务器接收所述各子任务,则向所述各第二服务器广播;所述第二服务器接收到广播后依次从所述第三服务器中获取子任务,并根据所述子任务中的分片位置从所述待处理文件中获取待处理分片;
所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器,包括:
所述各第二服务器按照所述文件处理配置中的处理逻辑并行处理各自的所述待处理分片,并将所述待处理分片的处理结果发送给所述第三服务器。
7.如权利要求6所述的方法,其特征在于,根据所述子任务中的分片位置从所述待处理文件中获取待处理分片,包括:
所述第二服务器通过内存映射方式,根据所述子任务中的分片位置从所述待处理文件中获取所述待处理分片至所述第二服务器的内存中。
8.如权利要求1-7任一项所述的方法,其特征在于,所述文件处理配置为在预设模板上进行编写得到的;所述预设模板设置有打开文件、读取文件及关闭文件的功能代码。
9.一种文件处理方法,其特征在于,适用于包括多个服务器的分布式集群;所述方法包括:
处理模块,用于按照文件处理配置,确定待处理文件的各分片对应的各子任务;
收发模块,用于将各子任务发送至第三服务器,并将各子任务个数写入所述第三服务器;
收发模块,用于接收所述各子任务,并将所述各子任务广播至各第二服务器;
所述处理模块还用于,按照所述文件处理配置中的处理逻辑并行处理各自的子任务,并将处理结果发送给所述第三服务器;
所述收发模块还用于,确定接收的所述处理结果个数等于所述各子任务个数,则所述待处理文件处理完成。
10.一种计算设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行权利要求1至8任一项所述的方法。
11.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读程序,当计算机读取并执行所述计算机可读程序时,使得计算机执行如权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010478332.6A CN111625507A (zh) | 2020-05-29 | 2020-05-29 | 一种文件处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010478332.6A CN111625507A (zh) | 2020-05-29 | 2020-05-29 | 一种文件处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111625507A true CN111625507A (zh) | 2020-09-04 |
Family
ID=72271950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010478332.6A Pending CN111625507A (zh) | 2020-05-29 | 2020-05-29 | 一种文件处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625507A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579297A (zh) * | 2020-12-25 | 2021-03-30 | 中国农业银行股份有限公司 | 一种数据处理方法及装置 |
CN114363321A (zh) * | 2021-12-30 | 2022-04-15 | 支付宝(杭州)信息技术有限公司 | 文件传输方法、设备及*** |
-
2020
- 2020-05-29 CN CN202010478332.6A patent/CN111625507A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579297A (zh) * | 2020-12-25 | 2021-03-30 | 中国农业银行股份有限公司 | 一种数据处理方法及装置 |
CN114363321A (zh) * | 2021-12-30 | 2022-04-15 | 支付宝(杭州)信息技术有限公司 | 文件传输方法、设备及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729135B (zh) | 按序进行并行数据处理的方法和装置 | |
CN104317928A (zh) | 一种基于分布式数据库的业务etl方法及*** | |
CN106649828B (zh) | 一种数据查询方法及*** | |
CN107402950B (zh) | 基于分库分表的文件处理方法和装置 | |
CN107590207A (zh) | 数据同步方法及装置、电子设备 | |
CN106383666B (zh) | 一种数据存储方法及装置 | |
CN111625507A (zh) | 一种文件处理方法及装置 | |
CN109241165B (zh) | 一种数据库同步延时的确定方法、装置和设备 | |
CN111784318B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113672375B (zh) | 资源分配预测方法、装置、设备及存储介质 | |
CN111553652B (zh) | 业务处理方法及装置 | |
CN111125719B (zh) | 一种提升代码安全检测效率的方法、装置、计算机设备、和可读存储介质 | |
CN112631731A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN110221914B (zh) | 文件处理方法及装置 | |
CN112104403A (zh) | 基于消息队列的多线程遥感卫星基带数据处理方法及装置 | |
CN111625505A (zh) | 一种文件拆分方法及装置 | |
CN106803202B (zh) | 一种待测试交易记录的提取方法和装置 | |
CN113342897A (zh) | 一种数据同步的方法及装置 | |
CN113657084A (zh) | 一种自动读取Excel内容的方法及*** | |
CN112581277A (zh) | 一种数据处理方法及装置 | |
CN114625546A (zh) | 一种数据处理方法及装置 | |
CN105931091B (zh) | 一种文件生成方法及装置 | |
EP3418914A1 (en) | Data management apparatuses, methods, and non-transitory tangible machine-readable media thereof | |
CN106559445B (zh) | 一种数据处理方法及装置 | |
CN112052330A (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 |