CN112732657A - 一种在ftp服务场景下高效读取大量小文件的方法 - Google Patents
一种在ftp服务场景下高效读取大量小文件的方法 Download PDFInfo
- Publication number
- CN112732657A CN112732657A CN202011616639.4A CN202011616639A CN112732657A CN 112732657 A CN112732657 A CN 112732657A CN 202011616639 A CN202011616639 A CN 202011616639A CN 112732657 A CN112732657 A CN 112732657A
- Authority
- CN
- China
- Prior art keywords
- file
- ftp
- large number
- event
- small files
- 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/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- 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/13—File access structures, e.g. distributed indices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种在ftp服务场景下高效读取大量小文件的方法,包括交互本地化和本地文件监听,所述交互本地化,在不改变前端输入的参数情况,方法得到的入参是ftp协议的url,适用设计模式中的策略模式适配各种ftp服务器,目的为了提高在频繁创建的大量的小文件的监听逻辑效率,旨在提高跨网络服务交换的性能。
Description
技术领域
本发明涉及跨网服务交换领域,具体是一种在ftp服务场景下高效读取大量小文件的方法。
背景技术
跨网服务交换场景需要生成大量小文件,借助单向光闸的文件摆渡功能交换到对端网络,再做处理。目前软件应用在文件监听采用的方法大多是两种,
第一种:通过ftp协议,使用MLST命令轮询获取文件列表信息,信息包含一个标准UTC格式的文件修改时间,应用可利用此时间来判断前后时间间隔的时间是否一样来判断文件写完成(写完即可判断为完整),此方法造成效率低下的原因是需要多次判断前后时间。且MLST命令不是所有ftp服务都支持,业界常用的vsftp就不支持。
第二种:通过ftp协议,使用LIST命令轮询获取文件列表信息,由于返回文件的时间戳属性是基于服务器的时区,它使得在FTP对目录和文件同步时有许多的不同,因为没有方法获得服务器上当前文件的时间戳,所以只能采用记录文件在一段时间内的大小,以它在一段时间内不再改变为依据判断文件的完整性,这样的方法效率低下。
但是,目前采用走ftp协议+轮询的方式来判断,走ftp协议会造成大量网络交互,受网络因素影响,性能损耗大。使用轮询的方法来发现文件和判断文件,造成大部分文件处理不及时。使用用MLST命令存在局限性,此方法不能很好兼容各种ftp服务。因此,本领域技术人员提供了一种在ftp服务场景下高效读取大量小文件的方法,以解决上述背景技术中提出的问题。
发明内容
本发明的目的在于提供一种在ftp服务场景下高效读取大量小文件的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种在ftp服务场景下高效读取大量小文件的方法,包括交互本地化和本地文件监听,所述交互本地化,在不改变前端输入的参数情况,方法得到的入参是ftp协议的url,适用设计模式中的策略模式适配各种ftp服务器;
具体逻辑为:将ftp协议url解析出用户名,端口,推送目录。根据端口获取进程名,从而可以判断出ftp服务器类型,或者根据各种ftp服务器的配置文件名、其他特征来判断ftp服务器类型,然后读取配置文件,获取ftp用户与本地目录的映射关系,并缓存到Map集合。整个转化过程不需要由调用逻辑关注,完全由本方法自动适配。
作为本发明进一步的方案:所述本地文件监听利用jdk1.7自带的文件事件监听WatchService,配置监听实体的创建和修改事件,阻塞获取监听器事件队列的事件。
作为本发明再进一步的方案:所述事件出列后解析出文件名,再实例化为自定义的文件事件对象,对象属性包含文件File对象,文件创建时间戳,文件修改时间戳,当前文件字节长度,文件MD5摘要。
作为本发明再进一步的方案:所述事件入列到队列中,此处使用业界性能优越的有界无锁队列实现,此处使用了生产者消费者模式,另一线程监听队列获取文件事件对象继续处理。
作为本发明再进一步的方案:所述事件出列后先判断当前时间戳与文件修改时间戳是否大于某个时间,经过大量测试,基于16核cpu、64G内存和网络稳定的环境中,此时间值约为1毫秒为性能最佳。
作为本发明再进一步的方案:所述事件如果不是则再次入列,否则继续获取文件当前文件字节长度和文件MD5摘要,在对比前后的字节长度和MD5摘要是否相同,如果相同,即判断为完整,可继续后续处理,否则,更新对象的修改时间戳,当前文件字节长度和文件MD5摘要再次入列。
作为本发明再进一步的方案:所述后续文件处理建议适用多线程处理,避免同步操作,降低文件监听判断逻辑的效率。
与现有技术相比,本发明的有益效果是:
1、本发明方法尤其适合在高并发情况下,对频繁创建的大量的小文件监听逻辑实现。相比于轮询的方法,适用的cpu资源更低,网络交互更少,实时性更高,利用数据本地化+文件事件监听+队列的解决方案来提高效率,本方法同样适用监听大文件。
2、本发明运用了大数据的数据本地化策略,结合文件事件监听技术和无锁队列。数据本地化解决了大量网络交互的问题,不再受网络不稳的因素影响,保证了稳定性。使用文件事件监听技术可保证了发现文件的及时性,事件驱动的效率会比轮询方法高,实时性更强。
附图说明
图1为一种在ftp服务场景下高效读取大量小文件的方法的程序执行框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中,一种在ftp服务场景下高效读取大量小文件的方法,本方法使用java编程语言实现,实现过程如下:
第一步交互本地化,在不改变前端输入的参数情况,方法得到的入参是ftp协议的url。适用设计模式中的策略模式适配各种ftp服务器。具体逻辑为:将ftp协议url解析出用户名,端口,推送目录,根据端口获取进程名,从而可以判断出ftp服务器类型,或者根据各种ftp服务器的配置文件名、其他特征来判断ftp服务器类型,然后读取配置文件,获取ftp用户与本地目录的映射关系,并缓存到Map集合,整个转化过程不需要由调用逻辑关注,完全由本方法自动适配;
第二步本地文件监听,利用jdk1.7自带的文件事件监听WatchService,配置监听实体的创建和修改事件,阻塞获取监听器事件队列的事件,事件出列后解析出文件名,再实例化为自定义的文件事件对象,对象属性包含文件File对象,文件创建时间戳,文件修改时间戳,当前文件字节长度,文件MD5摘要,接着入列到队列中,此处使用业界性能优越的有界无锁队列实现。此处使用了生产者消费者模式,另一线程监听队列获取文件事件对象继续处理,出列后的事件先判断当前时间戳与文件修改时间戳是否大于某个时间,经过大量测试,基于16核cpu、64G内存和网络稳定的环境中,此时间值约为1毫秒为性能最佳,如果不是则再次入列,否则继续获取文件当前文件字节长度和文件MD5摘要,在对比前后的字节长度和MD5摘要是否相同,如果相同,即判断为完整,可继续后续处理。否则,更新对象的修改时间戳,当前文件字节长度和文件MD5摘要再次入列。
后续文件处理建议适用多线程处理,避免同步操作,降低文件监听判断逻辑的效率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (7)
1.一种在ftp服务场景下高效读取大量小文件的方法,其特征在于,包括交互本地化和本地文件监听,所述交互本地化,在不改变前端输入的参数情况,方法得到的入参是ftp协议的url,适用设计模式中的策略模式适配各种ftp服务器;
具体逻辑为:将ftp协议url解析出用户名,端口,推送目录。根据端口获取进程名,从而可以判断出ftp服务器类型,或者根据各种ftp服务器的配置文件名、其他特征来判断ftp服务器类型,然后读取配置文件,获取ftp用户与本地目录的映射关系,并缓存到Map集合,整个转化过程不需要由调用逻辑关注,完全由本方法自动适配。
2.根据权利要求1所述的一种在ftp服务场景下高效读取大量小文件的方法,其特征在于,所述本地文件监听利用jdk1.7自带的文件事件监听WatchService,配置监听实体的创建和修改事件,阻塞获取监听器事件队列的事件。
3.根据权利要求1所述的一种在ftp服务场景下高效读取大量小文件的方法,其特征在于,所述事件出列后解析出文件名,再实例化为自定义文件事件对象,对象属性包含文件File对象,文件创建时间戳,文件修改时间戳,当前文件字节长度,文件MD5摘要。
4.根据权利要求1所述的一种在ftp服务场景下高效读取大量小文件的方法,其特征在于,所述事件入列到队列中,此处使用业界性能优越的有界无锁队列实现,此处使用了生产者消费者模式,另一线程监听队列获取文件事件对象继续处理。
5.根据权利要求1所述的一种在ftp服务场景下高效读取大量小文件的方法,其特征在于,所述事件出列后先判断当前时间戳与文件修改时间戳是否大于某个时间,经过大量测试,基于16核cpu、64G内存和网络稳定的环境中,此时间值约为1毫秒为性能最佳。
6.根据权利要求1所述的一种在ftp服务场景下高效读取大量小文件的方法,其特征在于,所述事件如果不是则再次入列,否则继续获取文件当前文件字节长度和文件MD5摘要,在对比前后的字节长度和MD5摘要是否相同,如果相同,即判断为完整,可继续后续处理,否则,更新对象的修改时间戳,当前文件字节长度和文件MD5摘要再次入列。
7.根据权利要求1所述的一种在ftp服务场景下高效读取大量小文件的方法,其特征在于,所述后续文件处理建议适用多线程处理,避免同步操作,降低文件监听判断逻辑的效率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011616639.4A CN112732657A (zh) | 2020-12-30 | 2020-12-30 | 一种在ftp服务场景下高效读取大量小文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011616639.4A CN112732657A (zh) | 2020-12-30 | 2020-12-30 | 一种在ftp服务场景下高效读取大量小文件的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112732657A true CN112732657A (zh) | 2021-04-30 |
Family
ID=75610394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011616639.4A Pending CN112732657A (zh) | 2020-12-30 | 2020-12-30 | 一种在ftp服务场景下高效读取大量小文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112732657A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101938469A (zh) * | 2010-08-08 | 2011-01-05 | 北京大学 | 一种运行时Android库文件的透明加载方法及系统 |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN106599085A (zh) * | 2016-11-25 | 2017-04-26 | 努比亚技术有限公司 | web系统配置文件的自动刷新方法及装置 |
CN110019104A (zh) * | 2018-12-11 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 文件资源交换方法、文件资源服务器及文件交换系统 |
CN111309494A (zh) * | 2019-12-09 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种多线程事件处理组件 |
CN112148498A (zh) * | 2020-09-30 | 2020-12-29 | 平安普惠企业管理有限公司 | 数据同步方法、装置、服务器及存储介质 |
-
2020
- 2020-12-30 CN CN202011616639.4A patent/CN112732657A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101938469A (zh) * | 2010-08-08 | 2011-01-05 | 北京大学 | 一种运行时Android库文件的透明加载方法及系统 |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN106599085A (zh) * | 2016-11-25 | 2017-04-26 | 努比亚技术有限公司 | web系统配置文件的自动刷新方法及装置 |
CN110019104A (zh) * | 2018-12-11 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 文件资源交换方法、文件资源服务器及文件交换系统 |
CN111309494A (zh) * | 2019-12-09 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种多线程事件处理组件 |
CN112148498A (zh) * | 2020-09-30 | 2020-12-29 | 平安普惠企业管理有限公司 | 数据同步方法、装置、服务器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111309409A (zh) | 一种api服务调用实时统计方法 | |
CN110677462B (zh) | 多区块链网络的访问处理方法、系统、装置及存储介质 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN110765165A (zh) | 一种跨系统数据同步处理的方法、装置及系统 | |
CN111200651A (zh) | 定时调用微服务的方法、系统、设备和介质 | |
CN110417876A (zh) | 会话方法、分布式系统中的节点服务器及主控设备 | |
CN112817539A (zh) | 一种工业数据存储方法、系统、电子设备及存储介质 | |
CN113328927A (zh) | 一种具有计算、存储和网络交换功能的工业物联网网关 | |
CN112732657A (zh) | 一种在ftp服务场景下高效读取大量小文件的方法 | |
CN112367376A (zh) | 一种工业物联网下微服务间相互通讯框架的实现方法 | |
CN114816792B (zh) | 一种基于专用通道的远程函数调用方法 | |
CN115809179A (zh) | 基于应用性能数据的告警方法、系统、设备和存储介质 | |
CN109274715A (zh) | 车载多通道通信系统的平台资源管理系统 | |
CN114528049A (zh) | 一种基于InfluxDB实现API调用信息统计的方法及系统 | |
CN113835904A (zh) | 一种远程过程调用控制方法、装置、设备及存储介质 | |
CN113973105A (zh) | 一种简化服务总线上soap消息的系统及方法 | |
CN110955669B (zh) | 基于事件与内存数据库的前后端数据一致性方法及系统 | |
CN113515425A (zh) | 数据动态上报的方法和装置 | |
CN112565286A (zh) | 一种基于rpc访问的任务响应方法、装置、设备和存储介质 | |
CN112019491A (zh) | 一种报文处理方法及系统 | |
CN111464575A (zh) | 一种将监控界面封装到硬件设备的物联网通讯方案 | |
CN118034673B (zh) | 一种物联网设备模型可视化编辑生成和动态解析系统 | |
CN112347141B (zh) | 一种数据访问控制方法、系统、设备及介质 | |
CN111143280B (zh) | 一种数据调度方法、系统、装置及存储介质 | |
CN115640153B (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 |