一種基于分布式消息隊(duì)列的數(shù)據(jù)ftp采集方法
【專利摘要】本發(fā)明公開了一種基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,包括如下步驟:a)讀取FTP配置文件,掃描FTP服務(wù)器,并讀取需要采集的FTP文件信息;b)記錄每一次掃描的時(shí)間點(diǎn),并根據(jù)上一次掃描的時(shí)間點(diǎn)進(jìn)行數(shù)據(jù)過濾;c)將過濾后的需要采集的FTP文件信息發(fā)送到分布式消息隊(duì)列ActiveMQ;d)從ActiveMQ中獲取FTP文件信息中的文件名稱、服務(wù)器IP、服務(wù)器賬號和密碼,根據(jù)服務(wù)器IP、服務(wù)器賬號、密碼進(jìn)行FTP連接,并進(jìn)入到該文件所在的目錄下進(jìn)行數(shù)據(jù)采集。本發(fā)明確??梢赃M(jìn)行分布式的FTP數(shù)據(jù)采集,保障數(shù)據(jù)的一致性,不會(huì)出現(xiàn)數(shù)據(jù)重采、漏采、異常等問題;且維護(hù)容易,擴(kuò)展性強(qiáng)。
【專利說明】
-種基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及一種數(shù)據(jù)采集方法,尤其設(shè)及一種基于分布式消息隊(duì)列的數(shù)據(jù)FTP采 集方法。
【背景技術(shù)】
[0002] FTP是File Transfer ProtocoK文件傳輸協(xié)議)的英文簡稱,而中文簡稱為"文傳 協(xié)議"。用于Internet上的控制文件的雙向傳輸。同時(shí),它也是一個(gè)應(yīng)用程序 (Application)?;诓煌牟僮飨到y(tǒng)有不同的FTP應(yīng)用程序,而所有運(yùn)些應(yīng)用程序都遵守 同一種協(xié)議W傳輸文件;是一種安全和穩(wěn)定快速的傳輸文件塊技術(shù)。
[0003] 隨著大數(shù)據(jù)領(lǐng)域的發(fā)展,為了數(shù)據(jù)傳輸?shù)母鼫?zhǔn)確性和及時(shí)性,IT行業(yè)出現(xiàn)了很多 流行的數(shù)據(jù)傳輸工具和技術(shù);其中涌出類kafka,flume等分布式的文件采集和傳輸技術(shù)代 替很很多傳統(tǒng)的數(shù)據(jù)采集技術(shù);但是FTP文件傳輸仍然起著不可小勵(lì)的作用;特別是在電 信/移動(dòng)行業(yè),隨著4G的推進(jìn)和普遍性,廠商為了更快、更好、更加安全和穩(wěn)定的將數(shù)據(jù)塊傳 輸給數(shù)據(jù)中屯、處理,F(xiàn)TP傳輸技術(shù)起著重要的作用,為了保障能夠適應(yīng)大數(shù)據(jù)的發(fā)展和推 進(jìn);數(shù)據(jù)傳輸?shù)倪^程中尤其需要保障數(shù)據(jù)安全穩(wěn)定高效的傳輸,不能讓數(shù)據(jù)發(fā)生延遲現(xiàn)象。
[0004] 目前,業(yè)界普遍的實(shí)現(xiàn)數(shù)據(jù)穩(wěn)定傳輸?shù)姆绞接袃煞N:
[0005] 1、單程序點(diǎn)對點(diǎn)獲取數(shù)據(jù),將FTP的IP,賬號,密碼直接植入到程序中,通過定時(shí)定 時(shí)調(diào)度去掃描FTP存儲(chǔ)的文件信息,獲取文件信息記錄寫入到磁盤A文件中作為原始校驗(yàn)信 息,然后逐個(gè)文件去采集,采集成功后的文件寫入到B文件中作為對比,采集完成通過程序 將A和B文件進(jìn)行對比,WA為標(biāo)準(zhǔn)進(jìn)行校驗(yàn),如果B中有缺失,重新進(jìn)行通過程序去獲取;運(yùn) 種方式有存在較大的缺點(diǎn),A和B文件必須上鎖保證無其他干擾,程序校驗(yàn)特別,需要耗費(fèi)相 當(dāng)大的人力去維護(hù),處理不當(dāng)會(huì)產(chǎn)生死鎖導(dǎo)致文件,甚至程序內(nèi)存溢出,導(dǎo)致文件校驗(yàn)失 敗,漏采集,生產(chǎn)系統(tǒng)文件得不到及時(shí)處理,并且缺失數(shù)據(jù),重復(fù)采集,導(dǎo)致系統(tǒng)數(shù)據(jù)不準(zhǔn) 確;導(dǎo)致巨大損失。
[0006] 2、依然利用程序點(diǎn)對點(diǎn)進(jìn)行數(shù)據(jù)采集,F(xiàn)TP的IP,賬號,密碼,進(jìn)行配置,程序加載 配置文件植入到程序中,單點(diǎn)程序掃描FTP存儲(chǔ)的文件信息,將文件信息插入到數(shù)據(jù)庫,通 過SQL語句進(jìn)行程序校驗(yàn)比對;當(dāng)信息過多,操作過于頻繁,數(shù)據(jù)庫很難承受運(yùn)種壓力,時(shí)間 長了會(huì)出現(xiàn)連接超時(shí),連接等待,S化執(zhí)行非常緩慢,甚至數(shù)據(jù)庫巖機(jī)現(xiàn)象;導(dǎo)致文件采集失 敗,數(shù)據(jù)庫操作失敗也會(huì)導(dǎo)致數(shù)據(jù)文件漏采集,生產(chǎn)系統(tǒng)文件得不到及時(shí)處理,導(dǎo)致系統(tǒng)數(shù) 據(jù)不準(zhǔn)確;導(dǎo)致巨大損失。
[0007] 由上可見,點(diǎn)對點(diǎn)采集文件的消費(fèi)模式,W及通過手工文件校驗(yàn)或者通過數(shù)據(jù)保 存記錄進(jìn)行校驗(yàn)的傳統(tǒng)形式保障模式已經(jīng)不能滿足現(xiàn)在大數(shù)據(jù)時(shí)代的數(shù)據(jù)采集保障模式; 尤其在日超過5T~20TW上,并且文件采集交互周期在1分鐘~5分鐘的頻繁狀態(tài)下,數(shù)據(jù)庫 連接和交互方式不堪重負(fù),因此,需要對現(xiàn)有的數(shù)據(jù)文件采集消費(fèi)方法進(jìn)行改進(jìn)。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明所要解決的技術(shù)問題是提供一種基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方 法,確??蒞進(jìn)行分布式的FTP數(shù)據(jù)采集,保障數(shù)據(jù)的一致性,不會(huì)出現(xiàn)數(shù)據(jù)重采、漏采、異 常等問題;且維護(hù)容易,擴(kuò)展性強(qiáng)。
[0009] 本發(fā)明為解決上述技術(shù)問題而采用的技術(shù)方案是提供一種基于分布式消息隊(duì)列 的數(shù)據(jù)FTP采集方法,包括如下步驟:a)讀取FTP配置文件,掃描FTP服務(wù)器,并讀取需要采集 的FTP文件信息;b)記錄每一次掃描的時(shí)間點(diǎn),并根據(jù)上一次掃描的時(shí)間點(diǎn)進(jìn)行數(shù)據(jù)過濾; C)將過濾后的需要采集的FTP文件信息發(fā)送到分布式消息隊(duì)列ActiveMQ;d)從ActiveMQ中 獲取FTP文件信息中的文件名稱、服務(wù)器IP、服務(wù)器賬號和密碼,根據(jù)服務(wù)器IP、服務(wù)器賬 號、密碼進(jìn)行FTP連接,并進(jìn)入到該文件所在的目錄下進(jìn)行數(shù)據(jù)采集。
[0010] 上述的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,其中,所述FTP配置文件中記錄 有FTP服務(wù)器IP、賬號、密碼和目錄,所述步驟a)根據(jù)FTP配置文件連接FTP服務(wù)器,打開對應(yīng) 的目錄,掃描該目錄下的文件,并讀取FTP文件信息。
[0011] 上述的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,其中,所述步驟b)記錄上一次掃 描的時(shí)間點(diǎn),如果本次掃描時(shí)間點(diǎn)小于或等于上次記錄的時(shí)間則丟棄本次掃描。
[0012] 上述的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,其中,所述步驟d)通過TCP連接 ActiVeMQ讀取數(shù)據(jù),并將采集到的數(shù)據(jù)直接緩存在內(nèi)存中,在內(nèi)存中進(jìn)行同步控制并處理 并發(fā)的采集程序。
[0013] 上述的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,其中,如果所述步驟d)中數(shù)據(jù)采 集出現(xiàn)故障,則將本次處理的信息重新寫入到ActiveMQ隊(duì)列里面,等待下一次進(jìn)行補(bǔ)采。
[0014] 本發(fā)明對比現(xiàn)有技術(shù)有如下的有益效果:本發(fā)明提供的基于分布式消息隊(duì)列的數(shù) 據(jù)FTP采集方法,采用分布式隊(duì)列作為事務(wù)保障機(jī)制,確保可W進(jìn)行分布式的FTP數(shù)據(jù)采集, 保障數(shù)據(jù)的一致性,不會(huì)出現(xiàn)數(shù)據(jù)重采、漏采、異常導(dǎo)致數(shù)據(jù)延遲處理不正確等問題;適用 跨度廣泛,實(shí)用性強(qiáng),沒有版本限制,可W使用任何的FTP采集,且維護(hù)容易,擴(kuò)展性強(qiáng),并能 保障數(shù)據(jù)采集的實(shí)時(shí)性。
【附圖說明】
[0015] 圖1為本發(fā)明基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集架構(gòu)示意圖;
[0016] 圖2為本發(fā)明基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集流程圖。
【具體實(shí)施方式】
[0017] 下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的描述。
[001引圖1為本發(fā)明基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集架構(gòu)示意圖;圖2為本發(fā)明基于 分布式消息隊(duì)列的數(shù)據(jù)FTP采集流程圖。
[0019] 請參見圖1和圖2,本發(fā)明提供的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,包括如 下步驟:
[0020] 步驟Sl:讀取FTP配置文件,掃描FTP服務(wù)器,并讀取需要采集的FTP文件信息;
[0021] 步驟SI:記錄每一次掃描的時(shí)間點(diǎn),并根據(jù)上一次掃描的時(shí)間點(diǎn)進(jìn)行數(shù)據(jù)過濾;
[0022] 步驟SI:將過濾后的需要采集的FTP文件信息發(fā)送到分布式消息隊(duì)列ActiveMQ;
[0023] 步驟S4:從ActiveMQ中獲取FTP文件信息中的文件名稱、服務(wù)器IP、服務(wù)器賬號和 密碼,根據(jù)服務(wù)器IP、服務(wù)器賬號、密碼進(jìn)行FTP連接,并進(jìn)入到該文件所在的目錄下進(jìn)行數(shù) 據(jù)采集。
[0024] 本發(fā)明基于acti VityMQ分布式消息隊(duì)列的系統(tǒng)架構(gòu)上進(jìn)行封裝,利用ActiveMQ的 高性能的分布式消息隊(duì)列對FTP更新的文件信息進(jìn)行實(shí)時(shí)存儲(chǔ),通過配置FTP采集的信息, 定時(shí)掃描程序讀取配置信息,將需要采集的FTP服務(wù)器的上文件信息寫到ActiveMQ隊(duì)列里 面,ActiveMQ的消息具備了高可用的性能,確保了不會(huì)因?yàn)榉?wù)器故障導(dǎo)致數(shù)據(jù)漏采的情 況,ActiveMQ具體了消費(fèi)控制,確保了不會(huì)出現(xiàn)重復(fù)消費(fèi)而導(dǎo)致了數(shù)據(jù)的重采文件,對于消 費(fèi)了數(shù)據(jù)之后,F(xiàn)TP服務(wù)器出現(xiàn)故障導(dǎo)致無法采集,則只需將此信息重新寫入到ActiveMQ隊(duì) 列里面,等待下一次進(jìn)行補(bǔ)采。分布式采集程序讀取ActiveMQ中的消息,通過消息中的FTP 服務(wù)器信息及文件目錄信息,連接FTP服務(wù)器進(jìn)行數(shù)據(jù)采集。
[0025] 本發(fā)明提供的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,主要分為四個(gè)步驟:掃描 FTP服務(wù)器、數(shù)據(jù)過慮、數(shù)據(jù)發(fā)送到ActiveMQ、FTP采集;下面給出各步驟的具體實(shí)現(xiàn)過程。
[0026] 1、掃描FTP服務(wù)器
[0027] 讀取FTP配置文件,配置文件里面配置的FTP服務(wù)器IP、賬號、密碼、目錄。
[0028] 連接FTP服務(wù)器,打開對應(yīng)的目錄,掃描該目錄下的文件。
[0029] 2、進(jìn)行數(shù)據(jù)過濾,避免數(shù)據(jù)重采,記錄上一次掃描的時(shí)間點(diǎn),再進(jìn)行掃描時(shí)去時(shí)間 大于上次記錄的時(shí)間進(jìn)行過濾,確保每次掃描到的數(shù)據(jù)都是初次掃描,避免重復(fù)采集。獲取 文件名稱、服務(wù)器IP、服務(wù)器賬號、密碼。
[0030] 3、數(shù)據(jù)寫入ActiveMQ中,將FTP過濾后的文件信息發(fā)送到分布式消息隊(duì)列 ActiveMQ,它具備了 W下特點(diǎn):
[0031] 1)多種語言和協(xié)議編寫客戶端。語言:^va,C,C++,C#,Ruby,Perl,Python,PHP。應(yīng) 用協(xié)議:〇penWire,Stomp REST,WS Notification,XMPP,AMQP。
[0032] 2)完全支持JMSl. I和J2邸1.4規(guī)范(持久化,XA消息,事務(wù))。
[0033] 3)支持多種傳送協(xié)議:in-VM,TCP,S化,NIO,UDP,JGroups,JXTA。
[0034] 4)支持通過JDBC和journal提供高速的消息持久化。
[0035] 5)從設(shè)計(jì)上保證了高性能的集群,客戶端-服務(wù)器,點(diǎn)對點(diǎn)。
[0036] 6)內(nèi)置的failover機(jī)制,確保client的高可用,當(dāng)某個(gè)broker故障時(shí),自動(dòng)使用其 他備用broker。
[0037] 本發(fā)明發(fā)送數(shù)據(jù)到ActiveMQ中程序如下:
[00;3 引
[0039]
[0040] 4、分布式采集程序從ActiveMQ中消費(fèi)數(shù)據(jù),讀取到消息的文件名稱、服務(wù)器IP、月良 務(wù)器賬號、密碼,根據(jù)IP、賬號、密碼進(jìn)行FTP連接,并進(jìn)入到該文件所在的目錄下,進(jìn)行數(shù)據(jù) 義集。
[0041 ]通過TCP連接ActiveMQ讀取數(shù)據(jù),數(shù)據(jù)直接緩存在內(nèi)存中,確保每個(gè)采集程序不會(huì) 消費(fèi)同一條記錄。在內(nèi)存中進(jìn)行同步控制,并發(fā)速度可到百萬/秒。確保采集程序的時(shí)延低。 讀取ActiveMQ數(shù)據(jù)的巧序化下:
[0042]
[0043] 綜上所述,本發(fā)明提供的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,使用activeMQ 作為采集信息控制點(diǎn),通過控制消息隊(duì)列確保采集的并發(fā)及一致性方法,并可滿足所有通 過FTP方式進(jìn)行采集的解決方案。具體優(yōu)點(diǎn)如下:1)解決FTP采集重復(fù)消費(fèi)問題。2)解決大數(shù) 據(jù)分布式采集下高并發(fā)、低延時(shí)。3)提升數(shù)據(jù)采集的一致性的同時(shí),也不影響采集的整體性 能。4)適用跨度廣泛,實(shí)用性強(qiáng),沒有版本限制,可W集成到目前任何FTP采集程序。5)維護(hù) 容易,擴(kuò)展性強(qiáng)。
[0044]雖然本發(fā)明已W較佳實(shí)施例掲示如上,然其并非用W限定本發(fā)明,任何本領(lǐng)域技 術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的修改和完善,因此本發(fā)明的保護(hù)范 圍當(dāng)W權(quán)利要求書所界定的為準(zhǔn)。
【主權(quán)項(xiàng)】
1. 一種基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,其特征在于,包括如下步驟: a) 讀取FTP配置文件,掃描FTP服務(wù)器,并讀取需要采集的FTP文件信息; b) 記錄每一次掃描的時(shí)間點(diǎn),并根據(jù)上一次掃描的時(shí)間點(diǎn)進(jìn)行數(shù)據(jù)過濾; c) 將過濾后的需要采集的FTP文件信息發(fā)送到分布式消息隊(duì)列ActiveMQ; d) 從ActiveMQ中獲取FTP文件信息中的文件名稱、服務(wù)器IP、服務(wù)器賬號和密碼,根據(jù) 服務(wù)器IP、服務(wù)器賬號、密碼進(jìn)行FTP連接,并進(jìn)入到該文件所在的目錄下進(jìn)行數(shù)據(jù)采集。2. 如權(quán)利要求1所述的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,其特征在于,所述FTP 配置文件中記錄有FTP服務(wù)器IP、賬號、密碼和目錄,所述步驟a)根據(jù)FTP配置文件連接FTP 服務(wù)器,打開對應(yīng)的目錄,掃描該目錄下的文件,并讀取FTP文件信息。3. 如權(quán)利要求1所述的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,其特征在于,所述步 驟b)記錄上一次掃描的時(shí)間點(diǎn),如果本次掃描時(shí)間點(diǎn)小于或等于上次記錄的時(shí)間則丟棄本 次掃描。4. 如權(quán)利要求1所述的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,其特征在于,所述步 驟d)通過TCP連接Act iveMQ讀取數(shù)據(jù),并將采集到的數(shù)據(jù)直接緩存在內(nèi)存中,在內(nèi)存中進(jìn)行 同步控制并處理并發(fā)的采集程序。5. 如權(quán)利要求1所述的基于分布式消息隊(duì)列的數(shù)據(jù)FTP采集方法,其特征在于,如果所 述步驟d)中數(shù)據(jù)采集出現(xiàn)故障,則將本次處理的信息重新寫入到ActiveMQ隊(duì)列里面,等待 下一次進(jìn)行補(bǔ)釆。
【文檔編號】H04L29/08GK105827702SQ201610149074
【公開日】2016年8月3日
【申請日】2016年3月16日
【發(fā)明人】程永新, 宋輝, 吳澤鋒
【申請人】上海輕維軟件有限公司