CN116028247B - 一种基于消息中间件的文件采集系统 - Google Patents
一种基于消息中间件的文件采集系统 Download PDFInfo
- Publication number
- CN116028247B CN116028247B CN202310300838.1A CN202310300838A CN116028247B CN 116028247 B CN116028247 B CN 116028247B CN 202310300838 A CN202310300838 A CN 202310300838A CN 116028247 B CN116028247 B CN 116028247B
- Authority
- CN
- China
- Prior art keywords
- message
- file
- result
- processing unit
- downloading
- 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.)
- Active
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于消息中间件的文件采集系统,包括下载处理单元、存储处理单元和容错处理单元;下载处理单元、存储处理单元和容错处理单元之间通过消息中间件传递消息;以及,下载处理单元用于基于文件下载消息进行文件下载,得到文件下载结果,生成下载结果消息;存储处理单元用于接收下载成功消息;并基于队列数据的数据量和存储等待时间,进行文件存储,得到文件存储结果,生成存储结果消息;容错处理单元用于基于下载结果消息和存储结果消息触发重试容错。通过本发明,能够将下载处理、存储处理、容错处理分布式部署至不同的单元,并且各个单元之间采用消息中间件传递消息,从而提高文件采集效率。
Description
技术领域
本发明涉及数据采集技术领域,具体而言,涉及一种基于消息中间件的文件采集系统。
背景技术
目前,企业在开展数据智能化分析过程中,数据采集是必不可缺的一环。其中,面对海量图片、文档等文件的采集处理及管理是极具挑战性的。
在实践中发现,现有的文件采集方法是由采集处理单元实现源数据内容同步抓取、文件下载、文件存储。然而,如果采集处理单元达到一定规模或者目标网站待采集数据量较大,则会导致网络请求量增多,并且还会出现文件大小不一的情况,从而导致文件采集的效率较低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种基于消息中间件的文件采集系统,以至少提高文件采集效率。
根据本发明实施例的一个方面,提供了一种基于消息中间件的文件采集系统,包括下载处理单元、存储处理单元和容错处理单元;并且,所述下载处理单元、所述存储处理单元和所述容错处理单元之间通过消息中间件传递消息;以及,所述下载处理单元,用于接收所述消息中间件传递的文件下载消息;并基于所述文件下载消息进行文件下载,得到文件下载结果;以及,基于所述文件下载结果生成下载结果消息;其中,所述下载结果消息为下载成功消息或者下载失败消息;所述存储处理单元,用于接收所述消息中间件传递的所述下载成功消息;并基于队列数据的数据量和存储等待时间,进行文件存储,得到文件存储结果;以及,基于所述文件存储结果生成存储结果消息;其中,所述存储结果消息为存储成功消息或者存储失败消息;所述容错处理单元,用于接收所述消息中间件传递的所述下载结果消息和所述存储结果消息,并基于所述下载结果消息和所述存储结果消息触发重试容错。
作为一种可选的实施方式,所述文件下载消息包括以下至少一项:待下载的文件URL、下发时间、下发单位。
作为一种可选的实施方式,所述下载处理单元还用于:对所述文件下载消息进行重复校验,得到重复校验结果;如果所述重复校验结果指示所述文件下载消息为重复消息,则对所述文件下载消息进行去重误判,得到去重误判结果;如果所述去重误判结果指示所述文件下载消息存在误判,则将所述文件下载消息存入待下载队列;以及,所述下载处理单元用于基于所述文件下载消息进行文件下载,得到文件下载结果的方式具体为:从所述待下载队列中取出所述文件下载消息,并基于所述文件下载消息进行文件下载,得到所述文件下载结果。
作为一种可选的实施方式,所述下载处理单元还用于:如果所述重复校验结果指示所述文件下载消息不为重复消息,则将所述文件下载消息存入待下载队列。
作为一种可选的实施方式,所述下载处理单元还用于:如果所述去重误判结果指示所述文件下载消息不存在误判,则放弃对所述文件下载消息进行处理。
作为一种可选的实施方式,所述下载处理单元用于基于所述文件下载结果生成下载结果消息的方式具体为:如果所述文件下载结果为文件下载成功,则对下载成功的文件进行元数据解析,得到元数据信息;如果所述元数据信息指示文件大小符合预设的文件大小条件,则生成所述下载成功消息;如果所述元数据信息指示文件大小不符合所述预设的文件大小条件,则将下载成功的文件存储至文件服务器。
作为一种可选的实施方式,所述存储处理单元用于基于队列数据的数据量和存储等待时间,进行文件存储,得到文件存储结果的方式具体为:获取下载成功的待存储文件;将所述待存储文件存入缓冲队列;如果所述缓冲队列中的文件数量达到预设的数量阈值,则对所述缓冲队列中的所有所述待存储文件进行文件存储,得到所述文件存储结果。
作为一种可选的实施方式,所述存储处理单元还用于:如果所述缓冲队列中的文件数量未达到所述预设的数量阈值、且所述缓冲队列中的文件存储等待时长达到预设的时长阈值,则对所述缓冲队列中的所有所述待存储文件进行文件存储,得到所述文件存储结果。
作为一种可选的实施方式,所述容错处理单元用于基于所述下载结果消息和所述存储结果消息触发重试容错的方式具体为:对所述下载结果消息和所述存储结果消息进行解析,确定消息类型;基于预设的映射表,确定与所述消息类型对应的处理类别;其中,所述处理类别包括放弃重试类别和重试类别;如果所述处理类别为所述重试类别,则向所述消息中间件发送重试消息;其中,所述重试消息包括文件下载消息与文件存储消息;基于所述重试消息触发重试容错。
作为一种可选的实施方式,所述容错处理单元还用于在基于所述重试消息触发重试容错之后,基于预设的重试阈值,终止重试容错操作。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述系统中各单元的功能代码。
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述系统中各单元的功能代码。
在本发明实施例中,通过基于消息中间件的文件采集系统,能够将下载处理、存储处理、容错处理分布式部署至不同的单元,并且各个单元之间采用消息中间件传递消息,由于不同单元独立部署,能够分散单个单元的计算压力,从而一定程度上提高文件采集效率。并且,各个单元之间采用消息中间件传递消息,能够减少采集处理单元的代码开发量,从而进一步提高文件采集效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的基于消息中间件的文件采集系统的结构示意图;
图2是根据本发明实施例的另一种可选的基于消息中间件的文件采集系统的结构示意图;
图3是根据本发明实施例的一种可选的下载处理单元的执行流程图;
图4是根据本发明实施例的一种可选的存储处理单元的执行流程图;
图5是根据本发明实施例的一种可选的容错处理单元的执行流程图;
图6是根据本发明实施例的一种可选的电子装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种可选的基于消息中间件的文件采集系统的结构示意图,如图1所示,该系统包括下载处理单元101、存储处理单元102和容错处理单元103;并且,所述下载处理单元101、所述存储处理单元102和所述容错处理单元103之间通过消息中间件传递消息;以及
所述下载处理单元101,用于接收所述消息中间件传递的文件下载消息;并基于所述文件下载消息进行文件下载,得到文件下载结果;以及,基于所述文件下载结果生成下载结果消息;其中,所述下载结果消息为下载成功消息或者下载失败消息;
所述存储处理单元102,用于接收所述消息中间件传递的所述下载成功消息;并基于队列数据的数据量和存储等待时间,进行文件存储,得到文件存储结果;以及,基于所述文件存储结果生成存储结果消息;其中,所述存储结果消息为存储成功消息或者存储失败消息;
所述容错处理单元103,用于接收所述消息中间件传递的所述下载结果消息和所述存储结果消息,并基于所述下载结果消息和所述存储结果消息触发重试容错。
在本实施例中,下载处理单元101、存储处理单元102和容错处理单元103之间可以分布式部署在不同设备。可选的,下载处理单元101可以部署于区别其他各单元的至少一个电子设备中,存储处理单元102可以部署于区别其他各单元的至少一个电子设备中,容错处理单元103也可以部署于区别其他各单元的至少一个电子设备中。
本申请提出的基于消息中间件的文件采集系统系统由下载处理单元101、存储处理单元102、容错处理单元103组成。各单元各自完成不同职责,且相互之间通过消息中间件传递消息。
其中,各单元都可以预定义一组消息类型,消息类型具体包含以下至少一项:文件下载消息、下载成功消息、下载失败消息、存储成功消息、存储失败消息。并且,各单元能够各自订阅其感兴趣的消息类型,从而触发其内部处理流程的执行。
在本实施例中,采集处理单元可以先录入数据,之后,下载处理单元101进行数据解析并下载。存储处理单元102会根据存储策略将文件存入服务器。容错处理单元103负责收集所有处理结果,会根据结果的不同而采取不同措施。
具体的,下载处理单元101可以先接收消息中间件传递的文件下载消息,从采集处理单元中获取需要进行下载的文件,并基于该文件下载信息,对需要进行下载的文件进行文件下载,得到用于指示文件是否下载成功的文件下载结果。再针对文件下载结果生成相应的下载结果消息。这里的下载结果消息可以存储于消息中间件中,以使消息中间件将下载结果信息传递给存储处理单元102和容错处理单元103。
之后,存储处理单元102可以在接收到消息中间件传递的下载成功消息之后,基于需要进行存储处理的队列数据的数据量,和队列中需要进行进行存储处理的数据的存储等待时间,批量对需要进行存储的数据进行文件存储,得到用于指示文件存储是否成功的文件存储结果。再针对文件存储结果生成相应的存储结果消息。这里的存储结果消息可以存储于消息中间件中,以使消息中间件将存储结果信息传递给容错处理单元103。
之后,容错处理单元103可以接收消息中间件传递的下载结果消息和存储结果消息,并基于下载结果消息和存储结果消息触发重试容错或者触发放弃重试容错。具体的重试容错触发条件可以由用户自定义设置,本实施例对此不做限定。
作为一种可选的实施方式,所述文件下载消息包括以下至少一项:待下载的文件URL、下发时间、下发单位。
作为一种可选的实施方式,所述下载处理单元101还用于:对所述文件下载消息进行重复校验,得到重复校验结果;如果所述重复校验结果指示所述文件下载消息为重复消息,则对所述文件下载消息进行去重误判,得到去重误判结果;如果所述去重误判结果指示所述文件下载消息存在误判,则将所述文件下载消息存入待下载队列;以及,所述下载处理单元101用于基于所述文件下载消息进行文件下载,得到文件下载结果的方式具体为:从所述待下载队列中取出所述文件下载消息,并基于所述文件下载消息进行文件下载,得到所述文件下载结果。
作为一种可选的实施方式,所述下载处理单元101还用于:如果所述重复校验结果指示所述文件下载消息不为重复消息,则将所述文件下载消息存入待下载队列。
作为一种可选的实施方式,所述下载处理单元101还用于:如果所述去重误判结果指示所述文件下载消息不存在误判,则放弃对所述文件下载消息进行处理。
作为一种可选的实施方式,所述下载处理单元101用于基于所述文件下载结果生成下载结果消息的方式具体为:如果所述文件下载结果为文件下载成功,则对下载成功的文件进行元数据解析,得到元数据信息;如果所述元数据信息指示文件大小符合预设的文件大小条件,则生成所述下载成功消息;如果所述元数据信息指示文件大小不符合所述预设的文件大小条件,则将下载成功的文件存储至文件服务器。
在本实施例中,下载处理单元101从消息中间件接收到文件下载消息之后,为避免重复下载,可以首先对消息内的URL(uniformresource locator,统一资源定位系统)进行判断重复处理,判断是否已下载过文件下载消息指示下载的目标文件。这里会有以下两种情形:
第一,若曾经下载过目标文件,则另需从关系型数据库中查询出目标文件对应的实际数据,并根据目标文件对应的实际数据,验证是否存在误判。处理误判又会有以下两种情形:若产生误判(目标文件对应的实际数据确定不存在),则视此时的文件下载消息为待下载任务,并将目标文件存入下载队列中。若未产生误判(目标文件对应的实际数据确定存在),则放弃该下载任务,无需再次处理。
第二,若从未下载过目标文件,则将此时的文件下载消息存入下载队列,等待下载处理。
之后,依次从下载队列中取出任务后进入下载环节,这里的下载环节会对应得到文件下载结果,具体可以包含两种情形:若文件下载结果指示文件下载失败,则进入发送下载失败消息事件,此时下载任务结束,该条文件下载消息处理完毕;若文件下载结果指示文件下载成功,则进入解析文件元数据阶段,此处能得到下载成功的文件的格式、大小信息。
之后,先获取文件内容,再对文件元数据分析,根据文件大小是否超限进行判断处理,会有以下两种情形:若文件大小符合设定要求则向消息中间件发送下载成功消息;若文件大小不符合设定要求则直接存储至文件服务器。
至此,下载处理单元业务流程结束。
在实际应用中,下载处理单元可以监听文件下载消息,该消息可以由消息中间件传递而来。文件下载消息的具体参数有:待下载的文件URL、下发时间、下发单位。其中,下发时间就是消息的创建时间,下发单位可以是某个网站。
当下载处理单元接收到该类消息后优先进行去重判断,即上述的重复校验,具体可以借助布隆过滤器完成重复校验,即,如果布隆过滤器中不存在,则实际数据一定不存在;如果布隆过滤器中存在,则实际数据不一定存在。并且,通过加一层布隆过滤器可以避免重复下载,节省带宽,减少了后面下载流程的下载数量。并且,文件链接地址在经过一层过滤器后,被放过的链接地址会进入到缓存中间件进行临时存放,这里的存放采用队列的形式进行存放,从下载队列的尾部进行插入数据,保证要下载链接文件的有序性,通过缓存中间件应对海量数据的写入问题,同时也解决了数据的存放问题。其中,缓存中间件里面定义的队列键获取数据,数据从头部读取,通过定义一个读取线程,从缓存中间件里面持续的读取数据,将读取到的数据提交到线程池里面进行下载处理。这里可以采用java里面的线程池技术。之后,通过复用线程池中的线程,能够控制最大并发数,来达到下载的最大化。以及,通过读取http协议的请求头,可以判断待下载的文件是否支持块下载,对于超过自定义大小的文件采用分块下载,进一步提高下载效率。之后,将下载后的文件内容进行格式判断,组装下载结果元数据。该元数据及下载后的文件内容会使用protobuf协议(一个被广泛使用的序列化协议)进行序列化编码后发送到消息中间件的对应主题里面,这里采用protobuf协议相比JSON(JavaScriptObject Notation, JS对象简谱),能收获更好的序列化/反序列化性能、更小的数据占用空间消耗。若下载失败的链接地址则会生成下载失败消息,同样发往对应主题。
作为一种可选的实施方式,所述存储处理单元102用于基于队列数据的数据量和存储等待时间,进行文件存储,得到文件存储结果的方式具体为:获取下载成功的待存储文件;将所述待存储文件存入缓冲队列;如果所述缓冲队列中的文件数量达到预设的数量阈值,则对所述缓冲队列中的所有所述待存储文件进行文件存储,得到所述文件存储结果。
作为一种可选的实施方式,所述存储处理单元102还用于:如果所述缓冲队列中的文件数量未达到所述预设的数量阈值、且所述缓冲队列中的文件存储等待时长达到预设的时长阈值,则对所述缓冲队列中的所有所述待存储文件进行文件存储,得到所述文件存储结果。
在本实施例中,文件存储处理单元对需要进行存储的文件进行批量存储操作。其通过接收下载成功消息,将接收到的文件字节内容放到本地存储队列,存储队列对文件进行批量存储。这里通过控制每次存储的文件数量进行批量存储和文件达不到指定存储数量时,采用最大等待超时时间进行兜底式批量存储文件。在实际存储执行过程中采用线程池进行提交任务的方式,每次读取的存储消息任务,通过线程池内线程并行进行处理,减少阻塞操作。同时,如果存储过程中出现异常错误,会生成带有异常错误信息的存储失败消息发往消息中间件中。
在本实施例中,从接收到文件下载成功消息开始,首先将消息存入待存储的缓冲队列中,经内部子线程取出数据后按照单批次存储文件数量上限值判断,若达标则进行存储,若不达标则根据单批次存储操作等待上限时间强制执行存储处理。最后根据存储结果反馈向消息中间件发送成功或失败消息。
作为一种可选的实施方式,所述容错处理单元103用于基于所述下载结果消息和所述存储结果消息触发重试容错的方式具体为:对所述下载结果消息和所述存储结果消息进行解析,确定消息类型;基于预设的映射表,确定与所述消息类型对应的处理类别;其中,所述处理类别包括放弃重试类别和重试类别;如果所述处理类别为所述重试类别,则向所述消息中间件发送重试消息;其中,所述重试消息包括文件下载消息与文件存储消息;基于所述重试消息触发重试容错。
作为一种可选的实施方式,所述容错处理单元103还用于在基于所述重试消息触发重试容错之后,基于预设的重试阈值,终止重试容错操作。
在本实施例中,该处理单元会接收两类处理结果消息,一是下载处理结果消息、二是存储处理结果消息,经消息分类识别后决定是否放弃消息。所有接收到的消息都会持久化至数据库中。最后根据消息分类构建出该类消息的重试消息发送至消息中间件。其他处理单元会响应重试消息,再次进行消息处理。
其中,容错处理单元能够对文件下载失败、存储失败后进行重试消息发送,也能够进行全局性的信息记录。具体的无论下载处理单元、存储处理单元产生何种处理结果都会发往容错处理单元。在容错处理单元内部,其遵循策略模式这一设计模式来构建,针对不同的消息分类执行应对策略。具体的,容错处理单元会依据内置的消息类型与具体处理策略映射表进行识别,在URL连接失效等情况下会放弃处理,但无论放弃与否,凡是被接收到的消息本身都会进行持久化保存,并能够更新消息的状态、处理时间、已重试次数信息。基于此,保证了消息不丢弃,便于后期排查或恢复用。之后,根据消息类型生成重试消息,重试消息分别为:文件下载消息与文件存储消息。可见,消息会循环处理,为了确保无限重复重试下载或存储,容错处理单元会确保同一个URL重试超过设定最大值后终止重试。
本申请能够聚合整体文件处理流程,以独立系统形式存在,与其他业务系统解耦。本系统由多个单元独立部署组成,处理能力具有可伸缩性,增加软硬件资源使服务容量产生线性增长。立于其他业务系统来看,本系统利用消息中间件统一管理,屏蔽了与底层文件服务器对接方式、数据交互等差异化,为需要更换文件服务器种类等架构调整问题带来改动影响范围最小化及工作量减轻等优点;减少采集处理单元的代码开发工作量,仅需将待处理文件URL组装成消息结构体后发送至消息中间件即可;将图片、视频、文档等资源的采集放入本系统汇总,对于采集处理单元而言,能够从原来混合式采集优化成仅采集文本数据,提升采集处理单元处理性能。
请参阅图2,图2是根据本发明实施例的另一种可选的基于消息中间件的文件采集系统的结构示意图,如图2所示,下载处理单元可以接收执行数据源录入操作之后的数据源,之后,下载处理单元可以对这些数据源执行下载操作。之后,下载处理单元可以将下载完成的文件发送给存储处理单元,以供存储处理单元对已下载完成的文件进行存储。以及,下载处理单元和存储处理单元均可以将文件下载结果或者文件存储结果发送给容错处理单元,以使容错处理单元对文件下载结果或者文件存储结果进行容错处理。并且,容错处理单元还可以将处理完成的重试消息返回给下载处理单元,以使下载处理单元响应重试消息进行重新下载。或者,容错处理单元还可以将处理完成的重试消息返回给存储处理单元,以使存储处理单元响应重试消息进行重新存储。
请参阅图3,图3是根据本发明实施例的一种可选的下载处理单元的执行流程图,如图3所示,下载处理单元在接收到下载消息之后,可以判断该文件下载消息是否曾经下载过,如果是,则确定与该文件下载消息对应的已存在文件信息,再根据已存在文件信息进行去重误判。如果去重误判结果指示没有误判,则说明曾经确实下载过该文件下载消息,此时则放弃处理该文件下载消息。如果曾经没有下载过该文件下载消息或者去重误判结果指示存在误判,则说明曾经确实没有下载过该文件下载消息,则将该文件下载消息存入待下载的下载队列。之后,可以从下载队列中取出并下载文件下载消息,得到文件下载结果。如果文件下载结果指示文件下载失败,则发送下载失败消息。如果文件下载结果指示文件下载成功,则解析文件元信息,并基于文件元信息判断文件是否超限且并未存储,如果文件确实超限且并未存储,则直接存储该文件。如果文件没有超限且存储成功,则发送下载成功消息。
请参阅图4,图4是根据本发明实施例的一种可选的存储处理单元的执行流程图,如图4所示,存储处理单元可以接收下载成功消息,之后,将下载成功的、需要进行存储处理的文件放入缓冲队列,如果缓冲队列中的数据达到一定数量,则批量存储文件。或者,如果缓冲队列中的数据未达到一定数量,但是缓冲队列中的存储等待时间超时了,则批量存储文件。之后,在批量存储文件之后,确定文件是否存储成功。如果文件存储成功,则发送存储成功消息。如果文件存储失败,则发送存储失败消息。
请参阅图5,图5是根据本发明实施例的一种可选的容错处理单元的执行流程图,如图5所示,容错处理单元可以接收下载结果消息和存储结果消息,并识别消息类型。之后,基于消息类型判断URL连接是否有效、连接是否成功、URL参数是否未过期、磁盘空间是否充足、是否超出单次存储设定,如果任一项判断为否,则放弃重试并生成持久化消息处理结果。如果所有判断项均为是,则直接生成持久化消息处理结果,并根据重试策略发送重试消息,以进行重试容错处理。
在本发明实施例中,通过基于消息中间件的文件采集系统,能够将下载处理、存储处理、容错处理分布式部署至不同的单元,并且各个单元之间采用消息中间件传递消息,由于不同单元独立部署,能够分散单个单元的计算压力,从而一定程度上提高文件采集效率。并且,各个单元之间采用消息中间件传递消息,能够减少采集处理单元的代码开发量,从而进一步提高文件采集效率。
进一步的,根据本发明实施例的又一个方面,还提供了一种用于执行上述系统中各单元的功能代码的电子装置,如图6所示,该电子装置包括存储器602和处理器604,该存储器602中存储有计算机程序,该处理器604被设置为通过计算机程序执行上述。
其中,存储器602可用于存储软件程序以及模块,如本发明实施例中的各单元对应的程序指令/模块,处理器604通过运行存储在存储器602内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的单元功能。存储器602可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器602可进一步包括相对于处理器604远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器602具体可以但不限于用于存储操作指令等信息。
可选地,上述的传输装置606用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置606包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置606为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子装置还包括:显示器608和连接总线610。
根据本发明的实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述系统中各单元的功能代码。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种基于消息中间件的文件采集系统,其特征在于,包括下载处理单元、存储处理单元和容错处理单元;并且,所述下载处理单元、所述存储处理单元和所述容错处理单元之间通过消息中间件传递消息;以及
所述下载处理单元,用于接收所述消息中间件传递的文件下载消息;并基于所述文件下载消息进行文件下载,得到文件下载结果;以及,基于所述文件下载结果生成下载结果消息;其中,所述下载结果消息为下载成功消息或者下载失败消息;
所述存储处理单元,用于接收所述消息中间件传递的所述下载成功消息;并基于队列数据的数据量和存储等待时间,进行文件存储,得到文件存储结果;以及,基于所述文件存储结果生成存储结果消息;其中,所述存储结果消息为存储成功消息或者存储失败消息;
所述容错处理单元,用于接收所述消息中间件传递的所述下载结果消息和所述存储结果消息,并基于所述下载结果消息和所述存储结果消息触发重试容错,触发重试容错的方式具体为:
对所述下载结果消息和所述存储结果消息进行解析,确定消息类型;
基于预设的映射表,确定与所述消息类型对应的处理类别;其中,所述处理类别包括放弃重试类别和重试类别;
如果所述处理类别为所述重试类别,则向所述消息中间件发送重试消息;其中,所述重试消息包括文件下载消息与文件存储消息;
基于所述重试消息触发重试容错。
2.根据权利要求1所述的系统,其特征在于,所述文件下载消息包括以下至少一项:待下载的文件URL、下发时间、下发单位。
3.根据权利要求1所述的系统,其特征在于,所述下载处理单元还用于:
对所述文件下载消息进行重复校验,得到重复校验结果;
如果所述重复校验结果指示所述文件下载消息为重复消息,则对所述文件下载消息进行去重误判,得到去重误判结果;
如果所述去重误判结果指示所述文件下载消息存在误判,则将所述文件下载消息存入待下载队列;
以及,所述下载处理单元用于基于所述文件下载消息进行文件下载,得到文件下载结果的方式具体为:
从所述待下载队列中取出所述文件下载消息,并基于所述文件下载消息进行文件下载,得到所述文件下载结果。
4.根据权利要求3所述的系统,其特征在于,所述下载处理单元还用于:
如果所述重复校验结果指示所述文件下载消息不为重复消息,则将所述文件下载消息存入待下载队列。
5.根据权利要求3所述的系统,其特征在于,所述下载处理单元还用于:
如果所述去重误判结果指示所述文件下载消息不存在误判,则放弃对所述文件下载消息进行处理。
6.根据权利要求3所述的系统,其特征在于,所述下载处理单元用于基于所述文件下载结果生成下载结果消息的方式具体为:
如果所述文件下载结果为文件下载成功,则对下载成功的文件进行元数据解析,得到元数据信息;
如果所述元数据信息指示文件大小符合预设的文件大小条件,则生成所述下载成功消息;
如果所述元数据信息指示文件大小不符合所述预设的文件大小条件,则将下载成功的文件存储至文件服务器。
7.根据权利要求1所述的系统,其特征在于,所述存储处理单元用于基于队列数据的数据量和存储等待时间,进行文件存储,得到文件存储结果的方式具体为:
获取下载成功的待存储文件;
将所述待存储文件存入缓冲队列;
如果所述缓冲队列中的文件数量达到预设的数量阈值,则对所述缓冲队列中的所有所述待存储文件进行文件存储,得到所述文件存储结果。
8.根据权利要求7所述的系统,其特征在于,所述存储处理单元还用于:
如果所述缓冲队列中的文件数量未达到所述预设的数量阈值、且所述缓冲队列中的文件存储等待时长达到预设的时长阈值,则对所述缓冲队列中的所有所述待存储文件进行文件存储,得到所述文件存储结果。
9.根据权利要求1所述的系统,其特征在于,所述容错处理单元还用于在基于所述重试消息触发重试容错之后,基于预设的重试阈值,终止重试容错操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310300838.1A CN116028247B (zh) | 2023-03-27 | 2023-03-27 | 一种基于消息中间件的文件采集系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310300838.1A CN116028247B (zh) | 2023-03-27 | 2023-03-27 | 一种基于消息中间件的文件采集系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028247A CN116028247A (zh) | 2023-04-28 |
CN116028247B true CN116028247B (zh) | 2023-06-13 |
Family
ID=86074329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310300838.1A Active CN116028247B (zh) | 2023-03-27 | 2023-03-27 | 一种基于消息中间件的文件采集系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028247B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019227427A1 (zh) * | 2018-05-31 | 2019-12-05 | 优视科技新加坡有限公司 | 文件下载方法、装置及设备/终端/服务器 |
CN113163009A (zh) * | 2021-04-20 | 2021-07-23 | 平安消费金融有限公司 | 数据传送方法、装置、电子设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078902B2 (en) * | 2009-10-30 | 2011-12-13 | Verizon Patent And Licensing, Inc. | Fault surveillance and automatic fail-over processing in broker-based messaging systems and methods |
US8443056B2 (en) * | 2010-01-22 | 2013-05-14 | Netflix, Inc. | Client-server signaling in content distribution networks |
US9038093B1 (en) * | 2013-03-11 | 2015-05-19 | Sprint Communications Company L.P. | Retrieving service request messages from a message queue maintained by a messaging middleware tool based on the origination time of the service request message |
US9843418B2 (en) * | 2015-02-03 | 2017-12-12 | Change Healthcare Llc | Fault tolerant retry subsystem and method |
US9785480B2 (en) * | 2015-02-12 | 2017-10-10 | Netapp, Inc. | Load balancing and fault tolerant service in a distributed data system |
CN110677277B (zh) * | 2019-09-02 | 2021-12-28 | 深圳中兴网信科技有限公司 | 数据处理方法、装置、服务器和计算机可读存储介质 |
CN113641507A (zh) * | 2020-04-27 | 2021-11-12 | 北京京东振世信息技术有限公司 | 消息中间件的接入方法、消息的处理方法和装置 |
CN112291254B (zh) * | 2020-11-05 | 2023-05-05 | 中国人民银行清算总中心 | 一种用于可靠交易的消息处理方法及装置 |
CN112822260B (zh) * | 2020-12-31 | 2023-06-09 | 北京天融信网络安全技术有限公司 | 文件传输方法及装置、电子设备、存储介质 |
CN112925788A (zh) * | 2021-01-27 | 2021-06-08 | 上海商汤智能科技有限公司 | 一种数据集管理方法及系统、装置、电子设备和存储介质 |
-
2023
- 2023-03-27 CN CN202310300838.1A patent/CN116028247B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019227427A1 (zh) * | 2018-05-31 | 2019-12-05 | 优视科技新加坡有限公司 | 文件下载方法、装置及设备/终端/服务器 |
CN113163009A (zh) * | 2021-04-20 | 2021-07-23 | 平安消费金融有限公司 | 数据传送方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116028247A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110062025B (zh) | 数据采集的方法、装置、服务器及存储介质 | |
CN106657213B (zh) | 文件传输方法和装置 | |
CN107239381B (zh) | 崩溃信息的处理方法、装置及系统 | |
CN108055343B (zh) | 用于机房的数据同步方法及装置 | |
CN111447102B (zh) | Sdn网络设备访问方法、装置、计算机设备及存储介质 | |
CN115004673B (zh) | 消息推送方法、装置、电子设备及计算机可读介质 | |
CN109815214B (zh) | 数据库访问方法、系统、装置及存储介质 | |
CN108667770B (zh) | 一种网站的漏洞测试方法、服务器及系统 | |
CN111031135B (zh) | 消息传送方法、装置及电子设备 | |
CN113015165A (zh) | 物联网平台设备接入方法、设备及系统 | |
CN109905479B (zh) | 文件传输方法和装置 | |
CN110401711A (zh) | 数据处理方法、装置、系统及存储介质 | |
CN115622906A (zh) | 一种应用日志抓取系统及方法 | |
EP3506599B1 (en) | Method for synchronizing contact information, apparatus and medium | |
CN116028247B (zh) | 一种基于消息中间件的文件采集系统 | |
CN106790653B (zh) | 文件传输处理方法及装置 | |
CN114978902B (zh) | 信息处理方法、装置、设备、存储介质及程序产品 | |
CN114092211A (zh) | 核算数据的处理方法、电子设备和可读存储介质 | |
CN114443595A (zh) | 一种处理文件的方法及装置 | |
CN115051866A (zh) | 一种报文处理方法及装置、存储介质及电子设备 | |
CN112788077B (zh) | 数据采集方法、装置、计算机设备和计算机可读存储介质 | |
CN109688204B (zh) | 基于ndn网络的文件下载方法、节点、终端 | |
CN105704220A (zh) | 一种分布式数据采集方法及系统 | |
CN113407339A (zh) | 资源请求反馈方法、装置、可读存储介质及电子设备 | |
CN112597371A (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 | ||
GR01 | Patent grant |