一种基于分布式消息队列的数据ftp采集方法

文档序号:10473795阅读:448来源:国知局
一种基于分布式消息队列的数据ftp采集方法
【专利摘要】本发明公开了一种基于分布式消息队列的数据FTP采集方法,包括如下步骤:a)读取FTP配置文件,扫描FTP服务器,并读取需要采集的FTP文件信息;b)记录每一次扫描的时间点,并根据上一次扫描的时间点进行数据过滤;c)将过滤后的需要采集的FTP文件信息发送到分布式消息队列ActiveMQ;d)从ActiveMQ中获取FTP文件信息中的文件名称、服务器IP、服务器账号和密码,根据服务器IP、服务器账号、密码进行FTP连接,并进入到该文件所在的目录下进行数据采集。本发明确保可以进行分布式的FTP数据采集,保障数据的一致性,不会出现数据重采、漏采、异常等问题;且维护容易,扩展性强。
【专利说明】
-种基于分布式消息队列的数据FTP采集方法
技术领域
[0001] 本发明设及一种数据采集方法,尤其设及一种基于分布式消息队列的数据FTP采 集方法。
【背景技术】
[0002] FTP是File Transfer ProtocoK文件传输协议)的英文简称,而中文简称为"文传 协议"。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序 (Application)。基于不同的操作系统有不同的FTP应用程序,而所有运些应用程序都遵守 同一种协议W传输文件;是一种安全和稳定快速的传输文件块技术。
[0003] 随着大数据领域的发展,为了数据传输的更准确性和及时性,IT行业出现了很多 流行的数据传输工具和技术;其中涌出类kafka,flume等分布式的文件采集和传输技术代 替很很多传统的数据采集技术;但是FTP文件传输仍然起着不可小勵的作用;特别是在电 信/移动行业,随着4G的推进和普遍性,厂商为了更快、更好、更加安全和稳定的将数据块传 输给数据中屯、处理,FTP传输技术起着重要的作用,为了保障能够适应大数据的发展和推 进;数据传输的过程中尤其需要保障数据安全稳定高效的传输,不能让数据发生延迟现象。
[0004] 目前,业界普遍的实现数据稳定传输的方式有两种:
[0005] 1、单程序点对点获取数据,将FTP的IP,账号,密码直接植入到程序中,通过定时定 时调度去扫描FTP存储的文件信息,获取文件信息记录写入到磁盘A文件中作为原始校验信 息,然后逐个文件去采集,采集成功后的文件写入到B文件中作为对比,采集完成通过程序 将A和B文件进行对比,WA为标准进行校验,如果B中有缺失,重新进行通过程序去获取;运 种方式有存在较大的缺点,A和B文件必须上锁保证无其他干扰,程序校验特别,需要耗费相 当大的人力去维护,处理不当会产生死锁导致文件,甚至程序内存溢出,导致文件校验失 败,漏采集,生产系统文件得不到及时处理,并且缺失数据,重复采集,导致系统数据不准 确;导致巨大损失。
[0006] 2、依然利用程序点对点进行数据采集,FTP的IP,账号,密码,进行配置,程序加载 配置文件植入到程序中,单点程序扫描FTP存储的文件信息,将文件信息插入到数据库,通 过SQL语句进行程序校验比对;当信息过多,操作过于频繁,数据库很难承受运种压力,时间 长了会出现连接超时,连接等待,S化执行非常缓慢,甚至数据库岩机现象;导致文件采集失 败,数据库操作失败也会导致数据文件漏采集,生产系统文件得不到及时处理,导致系统数 据不准确;导致巨大损失。
[0007] 由上可见,点对点采集文件的消费模式,W及通过手工文件校验或者通过数据保 存记录进行校验的传统形式保障模式已经不能满足现在大数据时代的数据采集保障模式; 尤其在日超过5T~20TW上,并且文件采集交互周期在1分钟~5分钟的频繁状态下,数据库 连接和交互方式不堪重负,因此,需要对现有的数据文件采集消费方法进行改进。

【发明内容】

[0008] 本发明所要解决的技术问题是提供一种基于分布式消息队列的数据FTP采集方 法,确保可W进行分布式的FTP数据采集,保障数据的一致性,不会出现数据重采、漏采、异 常等问题;且维护容易,扩展性强。
[0009] 本发明为解决上述技术问题而采用的技术方案是提供一种基于分布式消息队列 的数据FTP采集方法,包括如下步骤:a)读取FTP配置文件,扫描FTP服务器,并读取需要采集 的FTP文件信息;b)记录每一次扫描的时间点,并根据上一次扫描的时间点进行数据过滤; C)将过滤后的需要采集的FTP文件信息发送到分布式消息队列ActiveMQ;d)从ActiveMQ中 获取FTP文件信息中的文件名称、服务器IP、服务器账号和密码,根据服务器IP、服务器账 号、密码进行FTP连接,并进入到该文件所在的目录下进行数据采集。
[0010] 上述的基于分布式消息队列的数据FTP采集方法,其中,所述FTP配置文件中记录 有FTP服务器IP、账号、密码和目录,所述步骤a)根据FTP配置文件连接FTP服务器,打开对应 的目录,扫描该目录下的文件,并读取FTP文件信息。
[0011] 上述的基于分布式消息队列的数据FTP采集方法,其中,所述步骤b)记录上一次扫 描的时间点,如果本次扫描时间点小于或等于上次记录的时间则丢弃本次扫描。
[0012] 上述的基于分布式消息队列的数据FTP采集方法,其中,所述步骤d)通过TCP连接 ActiVeMQ读取数据,并将采集到的数据直接缓存在内存中,在内存中进行同步控制并处理 并发的采集程序。
[0013] 上述的基于分布式消息队列的数据FTP采集方法,其中,如果所述步骤d)中数据采 集出现故障,则将本次处理的信息重新写入到ActiveMQ队列里面,等待下一次进行补采。
[0014] 本发明对比现有技术有如下的有益效果:本发明提供的基于分布式消息队列的数 据FTP采集方法,采用分布式队列作为事务保障机制,确保可W进行分布式的FTP数据采集, 保障数据的一致性,不会出现数据重采、漏采、异常导致数据延迟处理不正确等问题;适用 跨度广泛,实用性强,没有版本限制,可W使用任何的FTP采集,且维护容易,扩展性强,并能 保障数据采集的实时性。
【附图说明】
[0015] 图1为本发明基于分布式消息队列的数据FTP采集架构示意图;
[0016] 图2为本发明基于分布式消息队列的数据FTP采集流程图。
【具体实施方式】
[0017] 下面结合附图和实施例对本发明作进一步的描述。
[001引图1为本发明基于分布式消息队列的数据FTP采集架构示意图;图2为本发明基于 分布式消息队列的数据FTP采集流程图。
[0019] 请参见图1和图2,本发明提供的基于分布式消息队列的数据FTP采集方法,包括如 下步骤:
[0020] 步骤Sl:读取FTP配置文件,扫描FTP服务器,并读取需要采集的FTP文件信息;
[0021] 步骤SI:记录每一次扫描的时间点,并根据上一次扫描的时间点进行数据过滤;
[0022] 步骤SI:将过滤后的需要采集的FTP文件信息发送到分布式消息队列ActiveMQ;
[0023] 步骤S4:从ActiveMQ中获取FTP文件信息中的文件名称、服务器IP、服务器账号和 密码,根据服务器IP、服务器账号、密码进行FTP连接,并进入到该文件所在的目录下进行数 据采集。
[0024] 本发明基于acti VityMQ分布式消息队列的系统架构上进行封装,利用ActiveMQ的 高性能的分布式消息队列对FTP更新的文件信息进行实时存储,通过配置FTP采集的信息, 定时扫描程序读取配置信息,将需要采集的FTP服务器的上文件信息写到ActiveMQ队列里 面,ActiveMQ的消息具备了高可用的性能,确保了不会因为服务器故障导致数据漏采的情 况,ActiveMQ具体了消费控制,确保了不会出现重复消费而导致了数据的重采文件,对于消 费了数据之后,FTP服务器出现故障导致无法采集,则只需将此信息重新写入到ActiveMQ队 列里面,等待下一次进行补采。分布式采集程序读取ActiveMQ中的消息,通过消息中的FTP 服务器信息及文件目录信息,连接FTP服务器进行数据采集。
[0025] 本发明提供的基于分布式消息队列的数据FTP采集方法,主要分为四个步骤:扫描 FTP服务器、数据过虑、数据发送到ActiveMQ、FTP采集;下面给出各步骤的具体实现过程。
[0026] 1、扫描FTP服务器
[0027] 读取FTP配置文件,配置文件里面配置的FTP服务器IP、账号、密码、目录。
[0028] 连接FTP服务器,打开对应的目录,扫描该目录下的文件。
[0029] 2、进行数据过滤,避免数据重采,记录上一次扫描的时间点,再进行扫描时去时间 大于上次记录的时间进行过滤,确保每次扫描到的数据都是初次扫描,避免重复采集。获取 文件名称、服务器IP、服务器账号、密码。
[0030] 3、数据写入ActiveMQ中,将FTP过滤后的文件信息发送到分布式消息队列 ActiveMQ,它具备了 W下特点:
[0031] 1)多种语言和协议编写客户端。语言:^va,C,C++,C#,Ruby,Perl,Python,PHP。应 用协议:〇penWire,Stomp REST,WS Notification,XMPP,AMQP。
[0032] 2)完全支持JMSl. I和J2邸1.4规范(持久化,XA消息,事务)。
[0033] 3)支持多种传送协议:in-VM,TCP,S化,NIO,UDP,JGroups,JXTA。
[0034] 4)支持通过JDBC和journal提供高速的消息持久化。
[0035] 5)从设计上保证了高性能的集群,客户端-服务器,点对点。
[0036] 6)内置的failover机制,确保client的高可用,当某个broker故障时,自动使用其 他备用broker。
[0037] 本发明发送数据到ActiveMQ中程序如下:
[00;3 引
[0039]
[0040] 4、分布式采集程序从ActiveMQ中消费数据,读取到消息的文件名称、服务器IP、月良 务器账号、密码,根据IP、账号、密码进行FTP连接,并进入到该文件所在的目录下,进行数据 义集。
[0041 ]通过TCP连接ActiveMQ读取数据,数据直接缓存在内存中,确保每个采集程序不会 消费同一条记录。在内存中进行同步控制,并发速度可到百万/秒。确保采集程序的时延低。 读取ActiveMQ数据的巧序化下:
[0042]
[0043] 综上所述,本发明提供的基于分布式消息队列的数据FTP采集方法,使用activeMQ 作为采集信息控制点,通过控制消息队列确保采集的并发及一致性方法,并可满足所有通 过FTP方式进行采集的解决方案。具体优点如下:1)解决FTP采集重复消费问题。2)解决大数 据分布式采集下高并发、低延时。3)提升数据采集的一致性的同时,也不影响采集的整体性 能。4)适用跨度广泛,实用性强,没有版本限制,可W集成到目前任何FTP采集程序。5)维护 容易,扩展性强。
[0044]虽然本发明已W较佳实施例掲示如上,然其并非用W限定本发明,任何本领域技 术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范 围当W权利要求书所界定的为准。
【主权项】
1. 一种基于分布式消息队列的数据FTP采集方法,其特征在于,包括如下步骤: a) 读取FTP配置文件,扫描FTP服务器,并读取需要采集的FTP文件信息; b) 记录每一次扫描的时间点,并根据上一次扫描的时间点进行数据过滤; c) 将过滤后的需要采集的FTP文件信息发送到分布式消息队列ActiveMQ; d) 从ActiveMQ中获取FTP文件信息中的文件名称、服务器IP、服务器账号和密码,根据 服务器IP、服务器账号、密码进行FTP连接,并进入到该文件所在的目录下进行数据采集。2. 如权利要求1所述的基于分布式消息队列的数据FTP采集方法,其特征在于,所述FTP 配置文件中记录有FTP服务器IP、账号、密码和目录,所述步骤a)根据FTP配置文件连接FTP 服务器,打开对应的目录,扫描该目录下的文件,并读取FTP文件信息。3. 如权利要求1所述的基于分布式消息队列的数据FTP采集方法,其特征在于,所述步 骤b)记录上一次扫描的时间点,如果本次扫描时间点小于或等于上次记录的时间则丢弃本 次扫描。4. 如权利要求1所述的基于分布式消息队列的数据FTP采集方法,其特征在于,所述步 骤d)通过TCP连接Act iveMQ读取数据,并将采集到的数据直接缓存在内存中,在内存中进行 同步控制并处理并发的采集程序。5. 如权利要求1所述的基于分布式消息队列的数据FTP采集方法,其特征在于,如果所 述步骤d)中数据采集出现故障,则将本次处理的信息重新写入到ActiveMQ队列里面,等待 下一次进行补釆。
【文档编号】H04L29/08GK105827702SQ201610149074
【公开日】2016年8月3日
【申请日】2016年3月16日
【发明人】程永新, 宋辉, 吴泽锋
【申请人】上海轻维软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1