一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据文件上传处理方法和系统与流程

2022-06-01 13:39:51 来源:中国专利 TAG:


1.本发明涉及大数据技术领域,特别涉及一种数据文件上传处理方法和系统。


背景技术:

2.目前现有的系统在使用的过程中,随着业务的发展和用户量的增加,越来越多的业务需要使用文件上传数据以及数据量越来越大,当用户上传的文件过大时,服务器需要消耗大量的资源去响应。当前系统使用同步上传和下载的方法,传输后立马进行数据的解析和处理。也就是说,现有技术在上传的数据量过大时,本就占用了服务器的大量内存,并且数据处理的时间并不会很短,常驻的大量内存和频繁的数据处理拖慢整个服务器的响应,如果此时再有用户上传,会导致服务器内存溢出,进而导致服务崩溃。


技术实现要素:

3.本发明其中一个发明目的在于提供一种数据文件上传处理方法和系统,所述方法和系统提供了一种异步处理的大数据的文件处理方法,可以降低系统的复杂度,并且使得消息上传和数据处理之间进行行为解耦,提高了文件上传系统的复用能力和水平扩容能力。
4.本发明另一个发明目的在于提供一种数据文件上传处理方法和系统,所述方法和系统利用轻量的rocketmq作为消息中间件执行消息的异步发送,当异步消息服务器存在多个实例时,所述rocketmq消息中间件监控topic的消费速度,当所述topic的消费速度过慢时通过所述rocketmq执行水平扩容,从而提升消息的消息能力。
5.本发明另一个发明目的在于提供一种数据文件上传处理方法和系统,所述方法和系统通过所述rocketmq消息中间控制所述consumer的消费线程数,从而可以保障所述consumer在执行并行消费时,避免因为处理文件过多而导致服务器内存溢出的问题。
6.为了实现至少一个上述发明目的,本发明进一步提供一种数据文件上传处理方法,所述方法包括入下步骤:
7.获取前端数据文件,将所述数据文件分片断点上传至oss平台;
8.生成所述数据文件的上传记录列表,所述上传记录列表生成自身的文件列表id;
9.调用rocketmq将所述文件列表id发送到异步消息服务器;
10.所述异步消息服务器根据所述文件列表id分批下载所述oss平台的数据文件,并执行所述数据文件的异步处理。
11.根据本发明其中一个较佳实施例,所述上传记录列表的生成方法包括:在文件上传至所述oss平台时,获取数据文件id,数据文件key、上传对象、上传时间、文件类型的主要字段内容,将所述主要字段内容保存于所述上传记录列表中。
12.根据本发明另一个较佳实施例,所述前端将数据文件上传至oss平台的方法包括:当前端服务器上传所述数据文件前,对所述数据文件生成通用唯一识别码(uuid)作为所述数据文件的数据文件key,进一步调用oss平台的输入对象接口(putobject api)将所述数
据文件和对应的数据文件key上传至oss平台,并进一步将所述数据文件key通过前端接口传入后端服务器。
13.根据本发明另一个较佳实施例,调用所述rocketmq将所述文件id发送到异步消息服务器,用于执行数据文件解耦处理方法包括:创建rocketmq消息对象,设置消费的主题(topic)为上传任务(uploadtask),将所述消息对象发送到设置的消费主题队列中,将所述消息对象的主体字段设置为文件列表id,通过生产者将所述消息发送给rocketmq的broker后不再接受消息的发送结果。
14.根据本发明另一个较佳实施例,异步消息服务器下载数据文件处理的方法包括:异步消息服务器创建消费者(consumer)监听消费主题为上传任务的消费队列,通过启动rocketmq-console监控所述上传任务消费主题的消费速度,设置单位时间消费个数上限阈值,所述消费速度大于设置的单位时间消费个数上限阈值,则通过所述rocketmq再次生成上传任务消费主题的消费队列,用于水平扩容消息服务。
15.根据本发明另一个较佳实施例,所述异步消息服务器下载数据文件处理的方法包括:通过所述rocketmq监控每个消费队列的消费线程数,预设单个消费队列的消费线程数阈值,若当前消费队列的消费线程数大于预设的消费线程数阈值,则不再向当前消费队列分配消息任务。
16.根据本发明另一个较佳实施例,当异步消息服务器获取主题为上传任务消息并处理上传任务消息后,进一步调用oss平台的获取对象接口(getobject api)获取数据文件的字节流,进一步创建本地文件,将所述数据文件的字节流读取写入到所述本地文件中。
17.根据本发明另一个较佳实施例,当将所述数据文件的字节流保存在本地文件后,开启文件阅读流(filereadstream),通过bufferedreader api将所述文件阅读流封装成bufferedreader,进一步在磁盘或内存空间生成一层缓存,逐行读取文件数据,设置行数读取阈值,若读取的数据行数大于所述行数读取阈值则执行一次数据库操作。
18.为了实现至少一个上述发明目的,本发明进一步提供一种数据文件上传处理系统,所述系统执行上述一种数据文件上传处理方法。
19.本发明进一步提供一种计算机可读存储介质,述计算机可读存储介质存储有计算机程序,所述计算机程序可被处理器执行所述一种数据文件上传处理方法。
附图说明
20.图1显示的是本发明一种数据文件上传处理方法的流程示意图。
具体实施方式
21.以下描述用于揭露本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本发明的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本发明的精神和范围的其他技术方案。
22.可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不能理解为对数量的限制。
23.请结合图1,本发明公开了一种数据文件上传处理方法和系统,所述方法主要包括如下步骤:首先需要创建一张上传任务列表,所述上传任务列表用于记录前端服务器数据文件的上传记录,进一步调用数据上传接口将前端服务器的数据文件和对应的上传任务表上传至oss平台,其中所述oss平台为用于对象存储的数据仓库。后端服务器的异步消息服务器从所述oss平台中下载对应的上传数据文件和上传任务列表分批进行异步处理。从而实现数据文件处理操作的解耦,降低业务系统的复杂度,提高业务发展的水平扩容能力。
24.具体而言,所述方法通过在前端服务器创建一张名称为upload_task(上传任务)的列表,并构建所述上传任务列表中的主要字段,其中所述主要字段包括:id、biz_type、file_key、status、upload_by、upload_time,上述主要字段分别对应的含义为数据文件id,数据文件类型,数据文件key,数据文件状态,数据文件被上传的对象,数据文件上传时间。获取前端上传的数据文件后,获取数据文件中的主要字段的内容填充到所述上传任务列表中。并进一步生成传任务列表id,用于标识该上传任务列表,从而使得所述上传任务列表可以实时记录前端数据上传的过程。
25.需要说明的是,所述数据文件key是在数据文件上传前生成,在数据文件上传前,通过前端生成通用唯一识别码(uuid)作为所述数据文件key,在获取前端的数据文件和对应的上传任务列表后,进一步调用oss平台的输入对象接口“putobject api”将所述数据文件key和对应的文件上传至所述oss平台,在完成所述数据文件key和对应的文件的上传后,通过前端的/upload/task/create接口将所述数据文件key传入到后端服务器中。因为无需前端对后端服务器传输实际的数据文件和文件列表,因此前端和后端数据文件的交互实现实现异步的解耦操作,无需在前端和后端设置复杂的系统配置,从而可以减少系统的文件处理成本。
26.后端服务器在获取到前端服务器传入的数据文件key,可以获取前端的文件上传记录并将文件上传记录保存于后端服务器的数据库中。后端服务器创建上传任务对象(uploadtask),其中上传任务对象中包括前端传入的数据文件key,并通过所述数据文件key从oss平台获取文件上传任务列表,根据所述文件上传任务列表的文件状态(status)判断是否上传完成。后端服务器将生成的所述上传任务对象插入到后端服务器的数据库中,并进一步根据后端服务器mybat i s标签的usegeneratekeys让程序拿到数据库中的自增id,所述自增id用于标识所述上传任务对象(列表),在获取到所述上传任务列表id后,进一步调用rocketmq消息中间件创建消息(message)对象,其中设置所述消息对象的主题(topic)为upload_task,从而可以让消息发送到指定主题下的消息队列中,其中将所述消息对象中主体(body)字段的值为上传任务(uploadtask)对象的id,进一步使用生产者(producer)将所述消息发送到rocketmq的broker,通过所述rocketmq的broker作为异步消息服务器进行消息处理操作。发送消息后不再等待接收消息的发送结果,从而完成所述消息异步发送操作。
27.值得一提的是,所述异步消息服务器创建消费者(consumer)监听主题(topic)为上传任务upload_task的消息,当异步消息服务器中存在多个实力时,可以通过所述rocketmq对消息的负载均衡实现消息的均衡分发。具体包括如下步骤:启动rocketmq-console用于监控所述上传任务(uploadtask)消息队列的消费速度,设置单位时间消息消费个数阈值,若在单位时间内监测到所述上传任务(uploadtask)消息队列的消息消费个数
大于所述单位时间消息消费个数阈值,则执行所述上传任务(uploadtask)消息队列的水平扩容操作,重新生成多个上传任务(uploadtask)消息队列,进行消息分配处理操作。在本发明其中一个较佳实施例中,为了减少消息队列文件处理过多的问题,本发明通过所述rocketmq消息中间件监控消费者的消费线程数,设置消息队列消费线程数阈值,若超过所述消息队列消费线程数,则通过负载均衡方式将消息重新分配给消费线程数较少的消息队列。因此上述方法可以有效地避免因为同时处理过多的文件而导致内存溢出的现象。
28.所述异步消息服务器在监听到主题为上传任务(uploadtask)的消息后,需要查询是否存在上传任务列表,判断上传任务列表的状态是否是上传中,并将完成消息更新的状态更改为started。其中所述异步消息服务器对所述上传任务(uploadtask)的消息处理方法包括:调用oss平台的获取输入接口(get object api)将上传到所述oss平台的数据文件下载到所述异步消息服务器的临时文件中,并通过所述获取输入接口(get object api)获取临时文件的字节输入流(inputstream),创建一个用于缓冲读取的长度为1024byte数组,进一步通过files.createtemp创建一个后端服务器的本地文件,使用字节流写入功能(inputstream.read)每次读取1024个字节的数据后将读取的数据通过字节流写入功能(filewritesteam.write)写入到所述本地文件中。
29.进一步的,本发明调用缓存读取器接口(bufferedreader api)将所述临时文件中的信息分批次的放入到内存中进行处理,处理方法包括:在开启文档字节流读取(filereadstream)操作时,在磁盘或内存中生成一层缓存层,将字节流包装成缓存数据,用于供所述缓存读出器(bufferedreader)识别读取,从而可以有效地避免内存中加载过多数据而影响数据文件处理效率。
30.本发明进一步通过所述缓存读取器对下载的数据文件进行逐行读取(bufferedreader.readline),当每读取一行数据时,生成一个列表保存读取的数据,进一步设置行数读取阈值,若读取的数据行数大于所述行数读取阈值则执行一次数据库的保存操作。比如设置行数读取阈值为100行,则每100行就执行读取数据库操作。其中所述数据库的操作包括但不仅限于保存、调用、删除等操作,从而在集中处理的条件下可以保障一定的数据处理速度。
31.在完成所述数据文件处理后将处理后的数据文件保存于后端服务器的本地文件中,并更新所述上传记录列表状态为“finish”,并进一步将异步消息服务器中存在的临时文件删除。
32.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(cpu)执行时,执行本技术的方法中限定的上述功能。需要说明的是,本技术上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom
或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、rf等等,或者上述的任意合适的组合。
33.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
34.本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明,本发明的目的已经完整并有效地实现,本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献