亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

海量數(shù)據(jù)同步系統(tǒng)及方法

文檔序號:6358319閱讀:168來源:國知局
專利名稱:海量數(shù)據(jù)同步系統(tǒng)及方法
技術(shù)領(lǐng)域
本申請涉及一種數(shù)據(jù)同步技術(shù),尤其是涉及一種可進行自我修復(fù)的海量數(shù)據(jù)實時同步系統(tǒng)及方法。
背景技術(shù)
在有著某種業(yè)務(wù)關(guān)聯(lián)的分布式數(shù)據(jù)庫和分布式信息系統(tǒng)的各類應(yīng)用中,常常需要對不同的分布式數(shù)據(jù)庫和/或信息應(yīng)用系統(tǒng)中的一些關(guān)鍵數(shù)據(jù)進行同步,以維護它們之間的數(shù)據(jù)的一致性。在需要同步的數(shù)據(jù)量、信息應(yīng)用系統(tǒng)的獨立性、實時性及容錯性要求不高的情況下,通常使用數(shù)據(jù)庫同步、ftp、http下載或者簡單的接口調(diào)用等方法就可以滿足需求?!?br> 可是,數(shù)據(jù)庫同步方法無疑會導(dǎo)致兩個關(guān)聯(lián)的信息應(yīng)用系統(tǒng)有相當(dāng)部分的數(shù)據(jù)庫表結(jié)構(gòu)完全一樣,這樣做的后果是兩個關(guān)聯(lián)的信息應(yīng)用系統(tǒng)之間會出現(xiàn)底層表設(shè)計的直接依賴,令這兩個關(guān)聯(lián)的信息應(yīng)用系統(tǒng)都必須有同樣的數(shù)據(jù)庫表設(shè)計,產(chǎn)生不必要的數(shù)據(jù)傳輸,并浪費網(wǎng)絡(luò)帶寬。其次,一旦所涉及的數(shù)據(jù)量達到海量(數(shù)以億計)級別而需要同步的數(shù)據(jù)僅僅為總數(shù)據(jù)量的一個很小的子集時,如何快速定位到需要同步的數(shù)據(jù)也會是一個異常突出的問題。再次,如果需要進行數(shù)據(jù)同步的信息應(yīng)用系統(tǒng)是對外提供某種服務(wù)的應(yīng)用系統(tǒng)(例如大型在線購物網(wǎng)站、大型社交網(wǎng)站或大型游戲網(wǎng)站),通常會在某些時段出現(xiàn)訪問高峰,高峰時段額外非核心的數(shù)據(jù)同步需求會很巨大,從而導(dǎo)致服務(wù)器負(fù)載升高,還會消耗大量的網(wǎng)絡(luò)帶寬。在這種情況下,要么是造成服務(wù)堵塞,要么就是導(dǎo)致系統(tǒng)崩潰。因此同步系統(tǒng)的服務(wù)能力的高低的可拓展性和對錯誤的修復(fù)能力就至關(guān)緊要。具體而言,例如,假設(shè)在涉及數(shù)據(jù)同步的兩個相互關(guān)聯(lián)的信息應(yīng)用系統(tǒng)中,將出現(xiàn)資源數(shù)據(jù)變化的系統(tǒng)稱為資源系統(tǒng)A,將關(guān)注資源數(shù)據(jù)變化并隨之進行數(shù)據(jù)變化的系統(tǒng)稱為目標(biāo)系統(tǒng)B。同時,還將控制和執(zhí)行數(shù)據(jù)同步步驟以將資源系統(tǒng)A的數(shù)據(jù)同步到目標(biāo)系統(tǒng)B的系統(tǒng)稱為同步系統(tǒng)C,即數(shù)據(jù)需要從系統(tǒng)A經(jīng)由同步系統(tǒng)C而同步到系統(tǒng)B。數(shù)據(jù)同步的過程一般包括以下步驟I)資源數(shù)據(jù)在系統(tǒng)A中發(fā)生變化;2)系統(tǒng)A通過發(fā)布通知消息或者調(diào)用依附于同步系統(tǒng)C的監(jiān)聽接口來告知同步系統(tǒng)C ;3)同步系統(tǒng)C篩選出需要同步到系統(tǒng)B中的數(shù)據(jù);4)同步系統(tǒng)C將篩選出的數(shù)據(jù)同步到系統(tǒng)B中?,F(xiàn)有的數(shù)據(jù)篩選技術(shù)通常包括數(shù)據(jù)庫查詢、文件索弓丨、內(nèi)存索引以及重做日志(redo log)監(jiān)控方式等。其中 數(shù)據(jù)庫查詢方式是在同步時每次都通過查詢數(shù)據(jù)是否存在于系統(tǒng)B的數(shù)據(jù)庫中,從而實現(xiàn)數(shù)據(jù)篩選。 內(nèi)存索引方式是建立全量數(shù)據(jù)的內(nèi)存映射關(guān)系索引,在同步時每次查詢該內(nèi)存索引,從而實現(xiàn)數(shù)據(jù)篩選。
文件索引方式是建立全量數(shù)據(jù)的文件映射關(guān)系的索引(即建立索引文件),在同步時每次查詢該索引文件,從而實現(xiàn)數(shù)據(jù)篩選。此索引文件被存儲于持久化存儲系統(tǒng)(非易失性存儲器)中,當(dāng)系統(tǒng)訪問該索引文件里的數(shù)據(jù)時,需要先將該索引文件中的數(shù)據(jù)加載到內(nèi)存中。文件索引方式比內(nèi)存索引方式多了一個加載的步驟,但是數(shù)據(jù)是持久化地保存在存儲系統(tǒng)中,不會因為斷電或者系統(tǒng)重新啟動而導(dǎo)致數(shù)據(jù)丟失。 重做日志監(jiān)控方式是實時或者準(zhǔn)實時地監(jiān)控系統(tǒng)A的數(shù)據(jù)庫的重做日志來感知數(shù)據(jù)的變化,從而實現(xiàn)數(shù)據(jù)同步。其中重做日志(redo log)是一種數(shù)據(jù)庫文件,每當(dāng)執(zhí)行一次操作以真正改變數(shù)據(jù)之前,將原數(shù)據(jù)或之前的操作寫入該數(shù)據(jù)庫文件中,這樣當(dāng)發(fā)生斷電等故障而導(dǎo)致后續(xù)任務(wù)無法完成時,可以從中恢復(fù)原來的狀態(tài)并繼續(xù)進行后續(xù)任務(wù)。這些現(xiàn)有的數(shù)據(jù)篩選技術(shù)的缺點是 數(shù)據(jù)庫查詢方式往往需要執(zhí)行sql語句查詢請求、編譯sql語句、sql語句優(yōu)化、索引查找、數(shù)據(jù)收集、結(jié)果返回等一系列操作,進行數(shù)據(jù)庫查詢的代價是非常昂貴的。實時性比較差,也不適合海量數(shù)據(jù)的同步。文件索引方式與數(shù)據(jù)庫查詢的方式類似,只是少了網(wǎng)絡(luò)傳輸,不過卻需要一直維護新數(shù)據(jù)的索引文件的創(chuàng)建、與原有索引合并等操作,同樣是代價巨大的。而內(nèi)存索引方式會隨著數(shù)據(jù)量的增大而消耗大量的內(nèi)存。重做日志監(jiān)控方式雖然能夠通過實時或者準(zhǔn)實時地監(jiān)控系統(tǒng)A的數(shù)據(jù)庫(redoIog)來感知數(shù)據(jù)的變化,但當(dāng)發(fā)生變化的數(shù)據(jù)量中僅有小部分?jǐn)?shù)據(jù)需要被同步時,現(xiàn)有技術(shù)仍不能有效篩選出此小部分?jǐn)?shù)據(jù),因此仍然存在大量的重復(fù)操作和內(nèi)存占用過多等問題。此外,數(shù)據(jù)庫查詢、文件索引、內(nèi)存索引和重做日志監(jiān)控方式都不能解決異常容錯(即發(fā)生錯誤或者超出服務(wù)能力而不崩潰的能力)和自我修復(fù)的問題。因此上述方案都不能提供實際應(yīng)用中所要求的海量數(shù)據(jù)高效同步、高度解耦、流量控制和自我修復(fù)等多項要求。

發(fā)明內(nèi)容
為克服現(xiàn)有技術(shù)的缺陷,本申請?zhí)峁┮环N海量數(shù)據(jù)同步方法及系統(tǒng),通過采用合理的增量數(shù)據(jù)輸入和數(shù)據(jù)篩選方式來實現(xiàn)可靠、穩(wěn)定和高效的海量數(shù)據(jù)實時同步。進而,本申請的海量數(shù)據(jù)同步方法及系統(tǒng)還可以在實施數(shù)據(jù)同步的過程中實現(xiàn)異常數(shù)據(jù)的自我修復(fù)。更進一步,本申請的海量數(shù)據(jù)同步方法及系統(tǒng)還可以在實施數(shù)據(jù)同步的過程中實現(xiàn)高峰時段數(shù)據(jù)同步的過載保護。為實現(xiàn)上述發(fā)明目的,根據(jù)本申請的一個方案,其提供一種海量數(shù)據(jù)同步系統(tǒng),用于從出現(xiàn)資源數(shù)據(jù)變化的資源系統(tǒng)將數(shù)據(jù)同步到根據(jù)該資源系統(tǒng)的資源數(shù)據(jù)變化而隨之改變數(shù)據(jù)的目標(biāo)系統(tǒng),該同步系統(tǒng)包括增量數(shù)據(jù)輸入接口,從該資源系統(tǒng)的增量數(shù)據(jù)接口接收來自該資源系統(tǒng)的變化后數(shù)據(jù)的增量數(shù)據(jù);全量數(shù)據(jù)輸入接口,調(diào)用該目標(biāo)系統(tǒng)的全量數(shù)據(jù)接口并接收來自該目標(biāo)系統(tǒng)中的全量數(shù)據(jù)標(biāo)識碼;存儲模塊,將所接收的增量數(shù)據(jù)和全量數(shù)據(jù)標(biāo)識碼存儲在該存儲模塊中;過濾器模塊,基于所述全量數(shù)據(jù)標(biāo)識碼而對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾,將與所述全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù)作為過濾后數(shù)據(jù);以及數(shù)據(jù)輸出接口,將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口,并由該目標(biāo)系統(tǒng)存儲其中。根據(jù)本申請的實施例,該過濾器模塊包括編碼單元,對所述增量數(shù)據(jù)中的每個數(shù)據(jù)的標(biāo)識碼和每個所述全量數(shù)據(jù)標(biāo)識碼進行哈希運算,將其分別映射為二進制編碼;以及比較單元,將所述增量數(shù)據(jù)中的每個數(shù)據(jù)的二進制編碼與每個全量數(shù)據(jù)的二進制編碼進行比較,當(dāng)所述增量數(shù)據(jù)的二進制編碼與一個全量數(shù)據(jù)的二進制編碼相同時,此增量數(shù)據(jù)即為與全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù),則將此增量數(shù)據(jù)作為過濾后數(shù)據(jù)。根據(jù)本申請的實施例,該目標(biāo)系統(tǒng)還包括全量提交日志記錄模塊,在將所述同步數(shù)據(jù)存儲在該目標(biāo)系統(tǒng)中之后,將所述同步數(shù)據(jù)的標(biāo)識碼作為全量數(shù)據(jù)標(biāo)識碼記錄到全量提交日志中。根據(jù)本申請的實施例,該同步系統(tǒng)還包括定期更新模塊,該定期更新模塊包括定期查詢單元,通過定期查詢該目標(biāo)系統(tǒng)的全量提交日志來獲得最新的全量數(shù)據(jù)標(biāo)識碼;以及定期調(diào)用單元,定期調(diào)用該目標(biāo)系統(tǒng)的全量數(shù)據(jù)接口,并通過該全量數(shù)據(jù)接口將所述最 新的全量數(shù)據(jù)標(biāo)識碼傳送至該同步系統(tǒng)的全量數(shù)據(jù)輸入接口,其中該同步系統(tǒng)接收并存儲所述最新的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行定期更新。根據(jù)本申請的實施例,該目標(biāo)系統(tǒng)還包括主動更新模塊,該主動更新模塊包括全量提交日志變更模塊,根據(jù)操作人員在目標(biāo)系統(tǒng)中對需要同步的數(shù)據(jù)的重新設(shè)定,在全量提交日志中增加全量數(shù)據(jù)標(biāo)識碼;變更獲取單元,當(dāng)該目標(biāo)系統(tǒng)的全量提交日志中的全量數(shù)據(jù)標(biāo)識碼發(fā)生變更時,獲得新增部分的全量數(shù)據(jù)標(biāo)識碼;以及主動調(diào)用單元,主動調(diào)用該同步系統(tǒng)的全量數(shù)據(jù)輸入接口,并通過該目標(biāo)系統(tǒng)的全量數(shù)據(jù)接口將新增部分的全量數(shù)據(jù)標(biāo)識碼傳送至該同步系統(tǒng)的全量數(shù)據(jù)輸入接口,其中該同步系統(tǒng)接收并存儲所述新增部分的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行主動更新。根據(jù)本申請的實施例,該同步系統(tǒng)還包括同步日志記錄模塊,當(dāng)該數(shù)據(jù)輸出接口將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)之后,該同步日志記錄模塊將所提交的同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄至同步日志中。其中,該同步日志包括以下兩個字段同步數(shù)據(jù)的標(biāo)識碼,用于唯一地表示每個同步數(shù)據(jù);以及同步提交時間,用于表示同步成功時最后一次修改所述同步數(shù)據(jù)的時間。根據(jù)本申請的實施例,該同步系統(tǒng)還包括糾錯模塊,該糾錯模塊包括掃描單元,根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼獲得其同步提交時間,以及根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼掃描該資源系統(tǒng)中的資源數(shù)據(jù)存儲模塊,提取與該同步日志中的同步數(shù)據(jù)的標(biāo)識碼相同的最新數(shù)據(jù)及其最后變更時間;對比單元,將所述最后變更時間與該同步提交時間進行對比,如果所述最后變更時間是在該同步提交時間之后,將此最新數(shù)據(jù)作為需要糾錯的同步數(shù)據(jù);以及提取單元,將所述需要糾錯的同步數(shù)據(jù)從該資源系統(tǒng)的增量數(shù)據(jù)接口直接提取并傳送至該數(shù)據(jù)輸出接口,其中由該同步系統(tǒng)的數(shù)據(jù)輸出接口調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口以向該目標(biāo)系統(tǒng)傳送同步請求,通過該數(shù)據(jù)輸出接口將所述需要糾錯的同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng),并由該目標(biāo)系統(tǒng)存儲其中。根據(jù)本申請的實施例,該同步系統(tǒng)還包括過載保護模塊,該過載保護模塊包括判斷單元,在該增量數(shù)據(jù)輸入接口接收到來自該資源系統(tǒng)的增量數(shù)據(jù)并對其進行過濾之后,該判斷單元確定此時進入該同步系統(tǒng)的過濾后數(shù)據(jù)的數(shù)量是否超出預(yù)定閾值,如果所述過濾后數(shù)據(jù)的數(shù)量超出預(yù)定閾值,則對超出的過濾后數(shù)據(jù)進行緩沖處理。根據(jù)本申請的實施例,該過載保護模塊還包括非易失性存儲器,將來自所述過濾器模塊的超出的過濾后數(shù)據(jù)暫存到該非易失性存儲器中以作為緩沖數(shù)據(jù);同步處理隊列,定期從該非易失性存儲器中讀取所述緩沖數(shù)據(jù)并將其進行排隊;以及流量控制單元,以預(yù)定流量將該同步處理隊列中的所述緩沖數(shù)據(jù)依序輸送至該數(shù)據(jù)輸出接口,其中由該數(shù)據(jù)輸出接口調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口,當(dāng)調(diào)用成功時,將所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)傳送至該目標(biāo)系統(tǒng),當(dāng)調(diào)用不成功時,將所述緩沖數(shù)據(jù)再次暫存到該非易失性存儲器中。根據(jù)本申請的實施例,該同步系統(tǒng)還包括同步日志記錄模塊,當(dāng)該數(shù)據(jù)輸出接口將所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)之后,該同步日志記錄模塊將所提交的同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄至同步日志中。為實現(xiàn)上述發(fā)明目的,根據(jù)本申請的另一個方案,其提供一種海量數(shù)據(jù)同步方法,由同步系統(tǒng)從出現(xiàn)資源數(shù)據(jù)變化的資源系統(tǒng)將數(shù)據(jù)同步到根據(jù)該資源系統(tǒng)的資源數(shù)據(jù)變化而隨之改變數(shù)據(jù)的目標(biāo)系統(tǒng),該同步系統(tǒng)實施的同步方法包括以下步驟接收并存儲來 自該資源系統(tǒng)的變化后數(shù)據(jù)的增量數(shù)據(jù);接收并存儲來自該目標(biāo)系統(tǒng)中的全量數(shù)據(jù)標(biāo)識碼;基于所述全量數(shù)據(jù)標(biāo)識碼而對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾,將與所述全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù)作為過濾后數(shù)據(jù);將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng),并由該目標(biāo)系統(tǒng)存儲其中。根據(jù)本申請的實施例,其中,對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾的步驟包括對所述增量數(shù)據(jù)中的每個數(shù)據(jù)的標(biāo)識碼和每個全量數(shù)據(jù)標(biāo)識碼進行哈希運算,將其分別映射為二進制編碼;以及將所述增量數(shù)據(jù)中的每個數(shù)據(jù)的二進制編碼與每個全量數(shù)據(jù)的二進制編碼進行比較,當(dāng)所述增量數(shù)據(jù)的二進制編碼與一個全量數(shù)據(jù)的二進制編碼相同時,此增量數(shù)據(jù)即為與全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù),則將此增量數(shù)據(jù)作為過濾后數(shù)據(jù)。根據(jù)本申請的實施例,該同步方法還包括以下的全量提交日志記錄步驟在將所述同步數(shù)據(jù)存儲在目標(biāo)系統(tǒng)中之后,將所述全量數(shù)據(jù)標(biāo)識碼記錄到該目標(biāo)系統(tǒng)的全量提交日志中。根據(jù)本申請的實施例,該同步方法還包括以下的定期更新步驟通過定期查詢該全量提交日志來獲得最新的全量數(shù)據(jù)標(biāo)識碼;以及定期調(diào)用該目標(biāo)的全量數(shù)據(jù)接口,并通過該全量數(shù)據(jù)接口將所述最新的全量數(shù)據(jù)標(biāo)識碼傳送至該同步系統(tǒng)的全量數(shù)據(jù)輸入接口;其中該同步系統(tǒng)接收并存儲所述最新的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行定期更新。根據(jù)本申請的實施例,該同步方法還包括以下的主動更新步驟根據(jù)操作人員在目標(biāo)系統(tǒng)中對需要同步的數(shù)據(jù)的重新設(shè)定,在全量提交日志中增加全量數(shù)據(jù)標(biāo)識碼;當(dāng)該目標(biāo)系統(tǒng)的全量提交日志中的全量數(shù)據(jù)標(biāo)識碼發(fā)生變更時,獲得新增部分的全量數(shù)據(jù)標(biāo)識碼;以及主動調(diào)用同步系統(tǒng)的全量數(shù)據(jù)輸入接口,并通過目標(biāo)數(shù)據(jù)的全量數(shù)據(jù)接口將新增部分的全量數(shù)據(jù)傳送至該同步系統(tǒng)的全量數(shù)據(jù)輸入接口,其中該同步系統(tǒng)接收并存儲所述新增部分的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行主動更新。根據(jù)本申請的實施例,該同步方法還包括以下的步驟在將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)之后,將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志中。
其中,該同步日志包括以下兩個字段同步數(shù)據(jù)的標(biāo)識碼,用于唯一地表示每個同步數(shù)據(jù);以及同步提交時間,用于表示同步成功時最后一次修改所述同步數(shù)據(jù)的時間。根據(jù)本申請的實施例,該同步方法還包括以下的糾錯步驟在將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志中之后,該同步系統(tǒng)根據(jù)該同步日志中所記錄的同步數(shù)據(jù)的標(biāo)識碼獲得其同步提交時間,以及根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼掃描該資源系統(tǒng)中的資源數(shù)據(jù)存儲模塊,提取與該同步日志中的同步數(shù)據(jù)的標(biāo)識碼相同的最新數(shù)據(jù)及其最后變更時間;將所述最后變更時間與該同步提交時間進行對比,如果所述最后變更時間是在該同步提交時間之后,將此最新數(shù)據(jù)作為需要糾錯的同步數(shù)據(jù);將所述需要糾錯的同步數(shù)據(jù)從資源系統(tǒng)的增量數(shù)據(jù)接口直接提取并傳送至同步系統(tǒng)C的數(shù)據(jù)輸出接口 ;以及調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口以向該目標(biāo)系統(tǒng)發(fā)出同步請求,將所述需要糾錯的同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng),并由該目標(biāo)系統(tǒng)存儲其中。根據(jù)本申請的實施例,該同步方法還包括以下的過載保護步驟在接收來自該資源系統(tǒng)的增量數(shù)據(jù)并對其進行過濾之后,確定此時進入該同步系統(tǒng)的過濾后數(shù)據(jù)的數(shù)量是否超出預(yù)定閾值;如果所述過濾后數(shù)據(jù)的數(shù)量超出預(yù)定閾值,則對超出的過濾后數(shù)據(jù)進行 緩沖處理。其中,對所述超出閾值的部分過濾后數(shù)據(jù)進行緩沖處理的步驟包括S1.將所述超出的過濾后數(shù)據(jù)暫存到該同步系統(tǒng)的非易失性存儲器中以作為緩沖數(shù)據(jù);S2.定期從該非易失性存儲器中讀取所述緩沖數(shù)據(jù)并將其在同步處理隊列中進行排隊;S3.以預(yù)定流量將該同步處理隊列中的所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)依序傳送至同步系統(tǒng)的數(shù)據(jù)輸出接口;以及S4.該數(shù)據(jù)輸出接口調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口,當(dāng)調(diào)用成功時,將所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)傳送至該目標(biāo)系統(tǒng),當(dāng)調(diào)用不成功時,將所述緩沖數(shù)據(jù)再次暫存到該非易失性存儲器中,返回至步驟S2。其中,在執(zhí)行步驟S4之后,將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志中。根據(jù)本申請的實施例,所述的海量數(shù)據(jù)同步方法在執(zhí)行了上述過載保護步驟之后,還可繼續(xù)執(zhí)行上述的糾錯步驟。針對增量數(shù)據(jù)中僅有小部分?jǐn)?shù)據(jù)與全量數(shù)據(jù)的標(biāo)識碼相同而需要被同步的情形,本申請的過濾器模塊能夠有效篩選出此小部分?jǐn)?shù)據(jù)并僅對此部分?jǐn)?shù)據(jù)進行同步,因此避免了大量的重復(fù)操作和內(nèi)存空間及時間占用過多等問題。更進一步,本申請的過濾器模塊應(yīng)用布隆過濾器(Bloom Filter)進行數(shù)據(jù)過濾,并據(jù)此設(shè)計本申請的過濾模塊的高效過濾算法,最大限度地減小了數(shù)據(jù)本身和數(shù)據(jù)運算所占用的系統(tǒng)資源,如內(nèi)存空間和運算處理時間,從而達到了同步系統(tǒng)對海量數(shù)據(jù)進行同步處理時對時間和空間的苛刻要求。本申請為了確保系統(tǒng)的異常容錯能力,還設(shè)計了自我修復(fù)機制,通過對同步數(shù)據(jù)進行記錄和定時掃描,找出產(chǎn)生問題的數(shù)據(jù)而進行修復(fù),從而保證了數(shù)據(jù)同步前后的一致性和同步操作的可靠性。此外,互聯(lián)網(wǎng)的應(yīng)用往往存在服務(wù)高峰,與之關(guān)聯(lián)的信息應(yīng)用系統(tǒng)和同步系統(tǒng)也相應(yīng)地存在服務(wù)高峰。在服務(wù)高峰時段,數(shù)據(jù)同步的需求無可避免地超過同步數(shù)據(jù)接口的服務(wù)能力,前述的幾種方案也無法滿足需求,更不能應(yīng)對海量數(shù)據(jù)的同步需求。針對這種情形,本申請設(shè)計了一種智能的過載保護模塊(其包括流量控制單元),使之可以在服務(wù)高峰的時候?qū)⑦^載的數(shù)據(jù)給予緩沖處理(臨時保存)和限量提交,從而使得同步系統(tǒng)得以保持平穩(wěn)的同步速率,直至安全達到服務(wù)空閑期。綜上所述,本申請的海量數(shù)據(jù)同步系統(tǒng)和方法可以對海量數(shù)據(jù)進行高效、可靠、快速的同步。


圖I是根據(jù)本申請實施例的海量數(shù)據(jù)同步系統(tǒng)的主要模塊的示意圖,其還示出該同步系統(tǒng)與資源系統(tǒng)和目標(biāo)系統(tǒng)的主要模塊的連接關(guān)系圖2示出根據(jù)本申請實施例的海量數(shù)據(jù)同步系統(tǒng)的過濾器模塊的示意3示例性示出過濾器模塊進行哈希運算后獲得的二進制編碼與原數(shù)據(jù)標(biāo)識碼之間的映射關(guān)系·圖4A示出根據(jù)本申請實施例的海量數(shù)據(jù)同步系統(tǒng)的定期更新模塊的示意4B示出根據(jù)本申請實施例的海量數(shù)據(jù)同步系統(tǒng)的主動更新模塊的示意5示出根據(jù)本申請實施例的海量數(shù)據(jù)同步系統(tǒng)的糾錯模塊的示意6示出根據(jù)本申請實施例的海量數(shù)據(jù)同步系統(tǒng)的過載保護模塊的示意7A示出根據(jù)本申請實施例的海量數(shù)據(jù)同步方法的流程7B示出如圖7A所示的海量數(shù)據(jù)同步方法中的糾錯步驟的流程7C示出如圖7A所示的海量數(shù)據(jù)同步方法中的過載保護步驟的流程8A示出本申請在進行數(shù)據(jù)同步時的具體情形示意SB示出本申請在進行全量數(shù)據(jù)的定期更新時的具體情形示意SC示出本申請在進行全量數(shù)據(jù)的主動更新時的具體情形示意8D示出本申請在進行糾錯步驟時的具體情形示意9示出根據(jù)本申請實施例的海量數(shù)據(jù)同步方法的工作時序圖
具體實施例方式為了使本申請的實施例的目的、技術(shù)方案和優(yōu)點更加清楚明白,下面結(jié)合實施例和附圖,對本申請的實施例做進一步詳細地說明。在此,本申請的示意性實施例及其說明僅用于解釋本申請,并不作為對本申請的限定。圖I是根據(jù)本申請一個實施例的海量數(shù)據(jù)同步系統(tǒng)C的主要模塊的示意圖,其還示出該同步系統(tǒng)C與資源系統(tǒng)A和目標(biāo)系統(tǒng)B的主要模塊的連接關(guān)系。圖I共示出有三個相互關(guān)聯(lián)的系統(tǒng),其中資源系統(tǒng)A是出現(xiàn)資源數(shù)據(jù)變化的系統(tǒng)1,此處將資源數(shù)據(jù)的發(fā)生變化的部分稱為增量數(shù)據(jù),此增量數(shù)據(jù)可以達到海量(數(shù)以億計)級別的數(shù)據(jù)量,且這些數(shù)據(jù)的每一個均帶有唯一的標(biāo)識碼。所謂唯一的標(biāo)識碼用以唯一地區(qū)分不同的數(shù)據(jù)。本申請中一個需要同步的數(shù)據(jù)實體包含多個部分,分別是I、唯一標(biāo)識碼;2、數(shù)據(jù)實體表示的業(yè)務(wù)含義,例如一個商品的名稱,商品的價格,數(shù)量等;3、對數(shù)據(jù)實體的操作狀態(tài),例如狀態(tài)審核中、狀態(tài)退回、狀態(tài)審核通過等;4對數(shù)據(jù)實體操作的時間,例如創(chuàng)建時間、審核通過時間、最后修改時間等。在這幾部分的數(shù)據(jù)中,唯一標(biāo)識碼一般不對外發(fā)布,用戶一般無法感知,但它卻是計算機系統(tǒng)用來進行數(shù)據(jù)庫存儲,同步系統(tǒng)進行過濾的重要依據(jù)。因為具有唯一的特性,所以可以認(rèn)為一個唯一標(biāo)識碼代表了一個數(shù)據(jù)實體。本申請也因此用唯一標(biāo)識碼來區(qū)分不同的需要同步的數(shù)據(jù)實體。在本申請中,一個數(shù)據(jù)實體的唯一標(biāo)識碼至少體現(xiàn)了此數(shù)據(jù)是否需要被同步,而由該唯一標(biāo)識碼所標(biāo)識的數(shù)據(jù)實體本身是可變的,當(dāng)目標(biāo)系統(tǒng)針對同一標(biāo)識碼接收并存儲根據(jù)資源系統(tǒng)的變化而變化的同步數(shù)據(jù)時,是指數(shù)據(jù)實體本身發(fā)生了變化,而其標(biāo)識碼還是原來的。在此增量數(shù)據(jù)中可能包含與目標(biāo)系統(tǒng)B中期望同步的數(shù)據(jù)的標(biāo)識碼相同的部分,這部分?jǐn)?shù)據(jù)就是需要同步的數(shù)據(jù),而此增量數(shù)據(jù)中與目標(biāo)系統(tǒng)B中期望同步的數(shù)據(jù)的標(biāo)識碼不同的部分對于同步操作而言就是不必要的數(shù)據(jù)。目標(biāo)系統(tǒng)B是根據(jù)該資源系統(tǒng)A的資源數(shù)據(jù)變化而隨之更新數(shù)據(jù)的系統(tǒng)2,此處將目標(biāo)系統(tǒng)B中的期望同步數(shù)據(jù)的總和稱為全量數(shù)據(jù);而同步系統(tǒng)C則是從資源系統(tǒng)A將需要同步的數(shù)據(jù)同步到目標(biāo)系統(tǒng)B的 系統(tǒng)3。根據(jù)本申請的一個實施例,同步系統(tǒng)C包括增量數(shù)據(jù)輸入接口 31,從該資源系統(tǒng)A的增量數(shù)據(jù)接口 11接收來自該資源系統(tǒng)A的變化后數(shù)據(jù)的增量數(shù)據(jù);全量數(shù)據(jù)輸入接口32,異步調(diào)用該目標(biāo)系統(tǒng)B的全量數(shù)據(jù)接口 21并接收來自該目標(biāo)系統(tǒng)B中的全量數(shù)據(jù)標(biāo)識碼;存儲模塊33,將所接收的增量數(shù)據(jù)和全量數(shù)據(jù)標(biāo)識碼存儲在該存儲模塊33中,該存儲模塊33例如可以是非易失性存儲器;過濾器模塊34,基于所述全量數(shù)據(jù)標(biāo)識碼而對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾,將與所述全量數(shù)據(jù)對應(yīng)的增量數(shù)據(jù)作為過濾后數(shù)據(jù);以及數(shù)據(jù)輸出接口 35,將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)B的同步數(shù)據(jù)接口 22,并由該目標(biāo)系統(tǒng)B存儲在其目標(biāo)數(shù)據(jù)存儲模塊24中,目標(biāo)數(shù)據(jù)存儲模塊24例如可以是非易失性存儲器。數(shù)據(jù)從同步系統(tǒng)C同步到目標(biāo)系統(tǒng)B的具體情形可參閱圖8A。在目標(biāo)數(shù)據(jù)存儲模塊24中,根據(jù)在不同時間提交的同步請求而接收到的同一個同步數(shù)據(jù)永遠只有一個數(shù)據(jù)記錄(映像)。其中,當(dāng)資源系統(tǒng)A中的資源數(shù)據(jù)發(fā)生變化時,資源系統(tǒng)A通過發(fā)布通知消息或者調(diào)用依附于同步系統(tǒng)C的監(jiān)聽接口來告知同步系統(tǒng)C,從資源系統(tǒng)A的增量數(shù)據(jù)接口 11接收的增量數(shù)據(jù)被實時(或幾乎實時)地加載到同步系統(tǒng)C的存儲模塊33中,而來自目標(biāo)系統(tǒng)B的全量數(shù)據(jù)接口 21的全量數(shù)據(jù)標(biāo)識碼則被異步接收并加載到同步系統(tǒng)C的存儲模塊33中。所述全量數(shù)據(jù)標(biāo)識碼還可以通過同步系統(tǒng)C中的定期更新模塊和/或目標(biāo)系統(tǒng)B中主動更新模塊(稍后述及)而得以更新。當(dāng)目標(biāo)系統(tǒng)B已經(jīng)將所述同步數(shù)據(jù)存儲在該目標(biāo)系統(tǒng)B的目標(biāo)數(shù)據(jù)存儲模塊24中后,其還通過全量提交日志記錄單元將所述同步數(shù)據(jù)的標(biāo)識碼作為全量數(shù)據(jù)標(biāo)識碼記錄在目標(biāo)系統(tǒng)B的全量提交日志20中。該全量提交日志20可以同樣設(shè)置在目標(biāo)數(shù)據(jù)存儲模塊24中,甚至被嵌入在存儲其中的同步數(shù)據(jù)中(不另行設(shè)置和編輯全量提交日志文件)。目標(biāo)系統(tǒng)B的全量提交日志20記錄所有的全量數(shù)據(jù)標(biāo)識碼,該全量提交日志20主要用于對同步系統(tǒng)C的全量數(shù)據(jù)標(biāo)識碼進行定期和/或主動更新(這兩種更新將稍后描述)。圖2示出根據(jù)本申請一個實施例的海量數(shù)據(jù)同步系統(tǒng)C的過濾器模塊34的示意圖。該過濾器模塊34包括編碼單元341,對所述增量數(shù)據(jù)中的每個數(shù)據(jù)的標(biāo)識碼和每個全量數(shù)據(jù)標(biāo)識碼進行哈希(hash)運算,將其分別映射為二進制編碼;以及比較單元342,將每個增量數(shù)據(jù)的二進制編碼與每個全量數(shù)據(jù)的二進制編碼進行比較,當(dāng)兩者編碼相同時,就認(rèn)為此增量數(shù)據(jù)即為與全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù),則將此增量數(shù)據(jù)作為過濾后數(shù)據(jù)。在本申請中,所有的數(shù)據(jù)均帶有唯一的標(biāo)識碼,這就意味著,當(dāng)在不同系統(tǒng)和不同模塊之間對數(shù)據(jù)進行傳送時,除非特別申明,否則就是既傳送了數(shù)據(jù)本身,同時也傳送了其唯一的標(biāo)識碼。這里,本申請的過濾器模塊34實際上是一種布隆過濾器,所謂的布隆過濾器主要進行以下內(nèi)容的操作首先,將一組數(shù)據(jù)中的每個數(shù)據(jù)(例如為字母和數(shù)字等)所對應(yīng)的標(biāo)識碼通過哈希運算而轉(zhuǎn)換為二進制編碼,所述二進制編碼是m位的比特數(shù)組數(shù)據(jù)。例如,假設(shè)一個數(shù)據(jù)的標(biāo)識碼是英文字母,而一個英文字母占據(jù)8個比特位,則此英文字母就被轉(zhuǎn)換為一個8位的比特數(shù)組,而每個比特位的值只能設(shè)置為0或I。在初始時每個比特位都設(shè)置為0,同時需要有k(k ( m)個哈希算法來將每個數(shù)據(jù)的標(biāo)識碼映射到其m位比特數(shù)組的k個位置,每個哈希算法映射一個位置,映射后的每個位 置都設(shè)置為I。圖3示例性示出過濾器模塊進行哈希運算后獲得的二進制編碼與原數(shù)據(jù)標(biāo)識碼之間的映射關(guān)系。其中,作為標(biāo)識碼的字母X經(jīng)哈希算法轉(zhuǎn)換后的二進制編碼表示為第一和第四個位置為1,作為標(biāo)識碼的字母y的二進制編碼表示為第二和第三個位置為1,作為標(biāo)識碼的字母z的二進制編碼表示為第一和第三個位置為I (這三個字母都被轉(zhuǎn)換為2位比特數(shù)組,即 m = 2)。其次,當(dāng)布隆過濾器想要查詢另一組數(shù)據(jù)之一的標(biāo)識碼是否已經(jīng)存在時,只需要對該數(shù)據(jù)的標(biāo)識碼進行同樣的k次運算,獲得該數(shù)據(jù)標(biāo)識碼所映射的二進制編碼,并查看前一組數(shù)據(jù)的標(biāo)識碼中是否已經(jīng)包含了具有同樣標(biāo)識碼的數(shù)據(jù),即,其標(biāo)識碼所映射的二進制編碼的對應(yīng)的比特位已經(jīng)全部被設(shè)置為1,如果是,則判定該元素已經(jīng)存在。基于布隆過濾器的工作原理,本申請的過濾器模塊34直接比較編碼后的二進制數(shù)據(jù)。例如,如果全量數(shù)據(jù)中的一個數(shù)據(jù)的唯一標(biāo)識碼是12345,其被編碼為110000011并且已經(jīng)被記錄,那么第二次只要比較當(dāng)前的增量數(shù)據(jù)中的每個數(shù)據(jù)的唯一標(biāo)識碼的編碼是否也是110000011,如果一致,那么表示對應(yīng)于此標(biāo)識碼的數(shù)據(jù)需要進行同步,否則不需要同步。綜上所述,資源系統(tǒng)A將增量數(shù)據(jù)提交給同步系統(tǒng)C,目標(biāo)系統(tǒng)B根據(jù)其期望同步的數(shù)據(jù)或已經(jīng)同步的數(shù)據(jù)記錄其全部標(biāo)識碼(即全量數(shù)據(jù)標(biāo)識碼)并將其提交給同步系統(tǒng)C,過濾器模塊34對每個全量數(shù)據(jù)標(biāo)識碼和每個增量數(shù)據(jù)的標(biāo)識碼進行哈希運算,將其分別映射到一個連續(xù)的二進制的比特數(shù)組上,大量的數(shù)據(jù)信息在經(jīng)過如此映射之后所占用的字節(jié)被大大壓縮。同時,過濾器模塊34對來自資源系統(tǒng)A的每個增量數(shù)據(jù)進行比較和過濾的過程也只需要進行多次哈希運算,以確定此增量數(shù)據(jù)是否需要同步,因此能夠節(jié)省非??捎^的時間和空間效率。當(dāng)有大量變化后數(shù)據(jù)以增量數(shù)據(jù)的形式自資源系統(tǒng)A提交到同步系統(tǒng)C時,同步系統(tǒng)C就可以通過該過濾器模塊34高效過濾出需要同步的數(shù)據(jù)。根據(jù)本申請的一個實施例,在同步系統(tǒng)C中還可設(shè)置定期更新模塊38,用以對同步系統(tǒng)C接收的全量數(shù)據(jù)進行定期更新。
如圖4A所示(參閱圖SB),該定期更新模塊38包括定期查詢單元381,通過定期查詢該目標(biāo)系統(tǒng)B的全量提交日志20來獲得該目標(biāo)系統(tǒng)B中最新的全量數(shù)據(jù)標(biāo)識碼;以及定期調(diào)用單元382,定期調(diào)用該目標(biāo)系統(tǒng)B的全量數(shù)據(jù)接口 21,并通過該全量數(shù)據(jù)接口 21將所述最新的全量數(shù)據(jù)標(biāo)識碼傳送至同步系統(tǒng)C的全量數(shù)據(jù)輸入接口 32,該同步系統(tǒng)C接收并存儲所述最新的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行定期更新。根據(jù)本申請的一個實施例,還可在目標(biāo)系統(tǒng)B中設(shè)置主動更新模塊23,用以對同步系統(tǒng)C接收的全量數(shù)據(jù)進行主動更新。如圖4B所示(參閱圖SC),目標(biāo)系統(tǒng)B中包括全量提交日志變更模塊,根據(jù)操作人員在目標(biāo)系統(tǒng)B中對期望同步的數(shù)據(jù)的重新設(shè)定,在全量提交日志20中增加全量數(shù)據(jù)標(biāo)識碼;以及主動更新模塊23,該主動更新模塊23包括變更獲取單元231,當(dāng)目標(biāo)系統(tǒng)B的全量提交日志20中的全量數(shù)據(jù)標(biāo)識碼發(fā)生變更(這里僅指增加)時,獲得新增部分的全量數(shù)據(jù)標(biāo)識碼;以及主動調(diào)用單元232,主動調(diào)用同步系統(tǒng)C的全量數(shù)據(jù)輸入接口 32,并通過目標(biāo)系統(tǒng)B的全量數(shù)據(jù)接口 21將新增部分的全量數(shù)據(jù)標(biāo)識碼傳送至同步系統(tǒng)C的全量數(shù) 據(jù)輸入接口 32。同步系統(tǒng)C接收并存儲所述新增部分的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行主動更新。須注意,對全量數(shù)據(jù)的主動更新并不等同于定期更新,在過濾器模塊34中,全量數(shù)據(jù)標(biāo)識碼的來源包括兩部分,第一部分是根據(jù)定期更新操作使得同步系統(tǒng)C定期從目標(biāo)系統(tǒng)B獲取的全部全量數(shù)據(jù)標(biāo)識碼;第二部分是當(dāng)操作人員在目標(biāo)系統(tǒng)B中對期望同步的數(shù)據(jù)進行重新設(shè)定后,目標(biāo)系統(tǒng)B主動調(diào)用同步系統(tǒng)C的全量數(shù)據(jù)輸入接口并實時加載到過濾器的新增部分的全量數(shù)據(jù)標(biāo)識碼。第一部分是所有的數(shù)據(jù),第二部分則僅僅是某個增量。第二部分是為了彌補第一部分的全量數(shù)據(jù)加載間隔過長而無法實時補充新增數(shù)據(jù)的缺陷。第一部分是為了避免第二部分中的增量有可能發(fā)生丟失的風(fēng)險。此外,同步系統(tǒng)C的全量數(shù)據(jù)接口 32可以包括用來接收全部的全量數(shù)據(jù)的接口和用來接收新增部分的全量數(shù)據(jù)的接口,其可以在物理上實現(xiàn)為一個整體模塊或兩個各自獨立的子模塊,只要其能夠完成上述兩種功能即可。目標(biāo)系統(tǒng)B的全量數(shù)據(jù)接口 21同樣也可包括用來傳送全部的全量數(shù)據(jù)的接口和用來傳送新增部分的全量數(shù)據(jù)的接口,其可以在物理上實現(xiàn)為一個整體模塊或兩個各自獨立的子模塊,只要其能夠完成上述兩種功能即可。本申請的同步系統(tǒng)還包括同步日志記錄模塊,當(dāng)同步系統(tǒng)C的數(shù)據(jù)輸出接口 35將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)B之后,該同步日志記錄模塊將所提交的同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄至同步日志30中。該同步日志30可以同樣設(shè)置在同步系統(tǒng)C的存儲模塊33中。其中,如下表所示,同步日志30包括以下兩個字段
數(shù)據(jù)字段I說明
同步數(shù)據(jù)的標(biāo)識碼__唯一地表示每個同步的數(shù)據(jù)_
同步提交時間同步成功時在存儲器中記錄的最后一次修_改該同步數(shù)據(jù)的時間_.須注意,這里所說的同步數(shù)據(jù)是指已經(jīng)提交給目標(biāo)系統(tǒng)B、且該目標(biāo)系統(tǒng)B業(yè)已明確接收到的數(shù)據(jù)。每個同步數(shù)據(jù)在同步日志30中只有一條同步記錄,每次同步后只會更新其最后提交的時間。
根據(jù)本申請的一個實施例,當(dāng)發(fā)生諸如設(shè)備故障、網(wǎng)絡(luò)癱瘓等不可抗力導(dǎo)致資源系統(tǒng)A的數(shù)據(jù)沒有同步到目標(biāo)系統(tǒng)B中時,本申請還專門設(shè)計了糾錯模塊37作為系統(tǒng)的自我修復(fù)機制,用以提高系統(tǒng)的異常容錯能力,通過對同步數(shù)據(jù)進行記錄和定時掃描,找出產(chǎn)生問題的數(shù)據(jù)而進行修復(fù),從而保證了數(shù)據(jù)同步前后的一致性和同步操作的可靠性。每次同步成功后,同步系統(tǒng)會對同步成功的數(shù)據(jù)進行記錄(即,將同步成功的數(shù)據(jù)標(biāo)識碼和同步時間記錄在同步日志30中)的目的就是當(dāng)發(fā)生不可抗力導(dǎo)致數(shù)據(jù)沒有同步到目標(biāo)系統(tǒng)B中時,可以通過糾錯模塊37將這部分同步數(shù)據(jù)及時更新到目標(biāo)系統(tǒng)B中。如圖5所示,糾錯模塊37包括掃描單元371,根據(jù)該同步日志30中的同步數(shù)據(jù)的標(biāo)識碼獲得其同步提交時間,以及根據(jù)該同步日志30中的同步數(shù)據(jù)的標(biāo)識碼掃描該資源系統(tǒng)A中的資源數(shù)據(jù)存儲模塊10 (該資源數(shù)據(jù)存儲模塊10例如可以是非易失性存儲器),提取與該同步日志30中的同步數(shù)據(jù)的標(biāo)識碼相同的最新數(shù)據(jù)及其最后變更時間;對比單元372,將所述最后變更時間與前述同步日志30中的同步提交時間進行對比,如果所述最后變更時間是在該同步日志30中的同步提交時間之后,則說明在某個同步環(huán)節(jié)中出現(xiàn)了故障,則將此最新數(shù)據(jù)作為需要糾錯的同步數(shù)據(jù);以及提取單元373,將所述需要糾錯的同 步數(shù)據(jù)從該資源系統(tǒng)A的增量數(shù)據(jù)接口 11直接提取并傳送至該同步系統(tǒng)C的數(shù)據(jù)輸出接口 35,由該同步系統(tǒng)C的數(shù)據(jù)輸出接口 35調(diào)用目標(biāo)系統(tǒng)B的同步數(shù)據(jù)接口 22以向該目標(biāo)系統(tǒng)B發(fā)出同步請求,如果調(diào)用成功,通過同步系統(tǒng)C的數(shù)據(jù)輸出接口 35將所述需要糾錯的同步數(shù)據(jù)再次提交至該目標(biāo)系統(tǒng)B,并由該目標(biāo)系統(tǒng)B存儲在其目標(biāo)數(shù)據(jù)存儲模塊24中。糾錯步驟的具體情形可參閱圖8D。同步系統(tǒng)C的糾錯模塊37能夠根據(jù)同步日志30中所記錄數(shù)據(jù)的標(biāo)識碼將與該標(biāo)識碼對應(yīng)的最新的數(shù)據(jù)內(nèi)容及其最后變更時間從資源系統(tǒng)A的資源數(shù)據(jù)存儲模塊中提取出來,通過將最新數(shù)據(jù)的最后變更時間與同步日志30中對應(yīng)的同步數(shù)據(jù)的同步提交時間進行比較,如果資源系統(tǒng)A中的該最新數(shù)據(jù)的最后變更時間更新,則說明此數(shù)據(jù)曾經(jīng)發(fā)生變化,但由于某種原因(可能是在從系統(tǒng)A傳送給系統(tǒng)C的環(huán)節(jié)和/或從系統(tǒng)C傳送給系統(tǒng)B的環(huán)節(jié)出了故障)沒有同步到目標(biāo)系統(tǒng)B,因此需要再次進行同步?;ヂ?lián)網(wǎng)的應(yīng)用往往存在服務(wù)高峰,與之關(guān)聯(lián)的信息應(yīng)用系統(tǒng)和同步系統(tǒng)也相應(yīng)地存在服務(wù)高峰。在服務(wù)高峰時段,數(shù)據(jù)同步的需求無可避免地超過同步數(shù)據(jù)接口的服務(wù)能力,此時前述的幾個實施例中的技術(shù)方案均無法滿足需求,更不能應(yīng)對海量數(shù)據(jù)的同步需求。針對這種情形,本申請設(shè)計了一種智能的過載保護模塊36,使之可以在服務(wù)高峰的時候?qū)⑦^載的數(shù)據(jù)給予緩沖處理(臨時保存)和限量提交,從而使得同步系統(tǒng)C得以保持平穩(wěn)的同步速率,直至安全達到服務(wù)空閑期。根據(jù)本申請的一個實施例,該過載保護模塊36包括判斷單元361。在該資源系統(tǒng)A的數(shù)據(jù)輸入接口 11將增量數(shù)據(jù)傳送給同步系統(tǒng)C并對其進行過濾后,該判斷單元361確定此時進入同步系統(tǒng)C的所述數(shù)量是否超出預(yù)定閾值(此預(yù)定閾值一般根據(jù)需要實際數(shù)據(jù)流量進行調(diào)節(jié)),如果所述過濾后數(shù)據(jù)的數(shù)量超出預(yù)定閾值,則對所超出的過濾后數(shù)據(jù)進行緩沖處理。如圖6所示,該過載保護模塊36還包括非易失性存儲器362,將來自所述過濾器模塊34的所述超出的過濾后數(shù)據(jù)暫存到該非易失性存儲器中362以作為緩沖數(shù)據(jù);同步處理隊列360,定期從該非易失性存儲器362中讀取所述緩沖數(shù)據(jù)并將其排列到該同步處理隊列360中;以及流量控制單元363以預(yù)定流量將該同步處理隊列360中的所述緩沖數(shù)據(jù)依序輸送至同步系統(tǒng)C的數(shù)據(jù)輸出接口 35,其中由該數(shù)據(jù)輸出接口 35調(diào)用該目標(biāo)系統(tǒng)B的同步數(shù)據(jù)接口 22,當(dāng)調(diào)用成功時,將所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)傳送至該目標(biāo)系統(tǒng)B,當(dāng)調(diào)用不成功時,將所述緩沖數(shù)據(jù)再次暫存到該非易失性存儲器362中,然后再次循環(huán)從同步處理隊列360、流量控制單元363到數(shù)據(jù)輸出接口 35的操作。下面將結(jié)合圖7A至圖9來具體描述本申請的海量數(shù)據(jù)同步系統(tǒng)的工作方法。圖7A至圖7C示出根據(jù)本申請一個實施例的海量數(shù)據(jù)同步方法的流程圖。圖8A至圖8D分別示出本申請在進行數(shù)據(jù)同步、定期更新、主動更新和糾錯時的具體情形示意圖。圖9示出所述海量數(shù)據(jù)同步方法的工作時序圖。根據(jù)本申請的一個實施例,一種海量數(shù)據(jù)同步方法,由上面所述的同步系統(tǒng)C從 出現(xiàn)資源數(shù)據(jù)變化的資源系統(tǒng)A將數(shù)據(jù)同步到根據(jù)該資源系統(tǒng)A的資源數(shù)據(jù)變化而隨之改變數(shù)據(jù)的目標(biāo)系統(tǒng)B,該同步系統(tǒng)C實施的同步方法包括以下步驟接收并存儲來自該資源系統(tǒng)A的變化后數(shù)據(jù)的增量數(shù)據(jù);異步接收并存儲來自該目標(biāo)系統(tǒng)B中的全量數(shù)據(jù)標(biāo)識碼;基于所述全量數(shù)據(jù)標(biāo)識碼而對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾,將與所述全量數(shù)據(jù)對應(yīng)的增量數(shù)據(jù)作為需要同步的過濾后數(shù)據(jù);以及將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)B,并由該目標(biāo)系統(tǒng)B存儲在其目標(biāo)數(shù)據(jù)存儲模塊24中。其中,對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾的步驟包括對所述增量數(shù)據(jù)中的每個數(shù)據(jù)的標(biāo)識碼和每個全量數(shù)據(jù)標(biāo)識碼進行哈希運算,將其分別映射為二進制編碼;以及將所述增量數(shù)據(jù)中的每個數(shù)據(jù)的二進制編碼與每個所述全量數(shù)據(jù)的二進制編碼進行比較,當(dāng)兩者編碼相同時,認(rèn)為此增量數(shù)據(jù)即為與全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù),則將此增量數(shù)據(jù)作為需要同步的過濾后數(shù)據(jù)。根據(jù)本申請的一個實施例,所述的海量數(shù)據(jù)同步方法還可包括以下的全量提交日志記錄步驟在將所述同步數(shù)據(jù)存儲在目標(biāo)系統(tǒng)B中之后,該目標(biāo)系統(tǒng)B將所述同步數(shù)據(jù)的標(biāo)識碼作為全量數(shù)據(jù)標(biāo)識碼記錄到其全量提交日志20中。根據(jù)本申請的一個實施例,所述的海量數(shù)據(jù)同步方法還可包括以下的定期更新步驟通過定期查詢該目標(biāo)系統(tǒng)B的全量提交日志20來獲得該目標(biāo)系統(tǒng)B中最新的全量數(shù)據(jù)標(biāo)識碼,以及定期調(diào)用該目標(biāo)系統(tǒng)B的全量數(shù)據(jù)接口 21,并通過該全量數(shù)據(jù)接口 21將所述最新的全量數(shù)據(jù)標(biāo)識碼傳送至該目標(biāo)系統(tǒng)B的全量數(shù)據(jù)輸入接口 32,該同步系統(tǒng)C接收并存儲所述最新的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行定期更新。根據(jù)本申請的一個實施例,所述的海量數(shù)據(jù)同步方法還可包括以下的主動更新步驟根據(jù)操作人員在目標(biāo)系統(tǒng)B中對需要同步的數(shù)據(jù)的重新設(shè)定,在全量提交日志20中變更全量數(shù)據(jù)標(biāo)識碼;當(dāng)該全量提交日志20中的全量數(shù)據(jù)標(biāo)識碼發(fā)生變更時,獲得新增部分的全量數(shù)據(jù)標(biāo)識碼;以及主動調(diào)用同步系統(tǒng)C的全量數(shù)據(jù)輸入接口 32,并通過目標(biāo)系統(tǒng)B的全量數(shù)據(jù)接口21將新增部分的全量數(shù)據(jù)標(biāo)識碼傳送至該同步系統(tǒng)C的全量數(shù)據(jù)輸入接口 32,該同步系統(tǒng)C接收并存儲所述新增部分的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行主動更新。在將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)B之后,將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志30中。根據(jù)本申請的一個實施例,所述的海量數(shù)據(jù)同步方法還包括以下的糾錯步驟在將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志30中之后,該同步系統(tǒng)C根據(jù)該同步日志30中記錄的同步數(shù)據(jù)的標(biāo)識碼獲得其同步提交時間,以及根據(jù)該同步日志中30的同步數(shù)據(jù)的標(biāo)識碼掃描該資源系統(tǒng)A中的資源數(shù)據(jù)存儲模塊10,提取與該同步日志30中的同步數(shù)據(jù)的標(biāo)識碼相同的最新數(shù)據(jù)及其最后變更時間;將所述最后變更時間與該同步日志30中的同步提交時間進行對比,如果所述最后變更時間是在該同步日志30中的同步提交時間之后,將此最新數(shù)據(jù)作為需要糾錯的同步數(shù)據(jù);將所述需要糾錯的同步數(shù)據(jù)從資源系統(tǒng)A直接提取并傳送至同步系統(tǒng)C的數(shù)據(jù)輸出接口 35 ;以及調(diào)用該目標(biāo)系統(tǒng)B的同步數(shù)據(jù)接口 22以向該目標(biāo)系統(tǒng)B發(fā)出同步請求,如果調(diào)用成功,將所述需要糾錯的同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)B,并由該目標(biāo)系統(tǒng)B存儲在其目標(biāo)數(shù)據(jù)存儲模塊24中。
根據(jù)本申請的一個實施例,所述的海量數(shù)據(jù)同步方法還包括以下的過載保護步驟在接收來自該資源系統(tǒng)A的增量數(shù)據(jù)并對其進行過濾之后,同步系統(tǒng)C確此時進入同步系統(tǒng)C的所述過濾后數(shù)據(jù)的數(shù)量是否超出預(yù)定閾值;如果所述過濾后數(shù)據(jù)的數(shù)量超出預(yù)定閾值,則對超出的過濾后數(shù)據(jù)進行緩沖處理。其中,對所述超出的過濾后數(shù)據(jù)進行緩沖處理的步驟包括SI.將所述超出的過濾后數(shù)據(jù)暫存到該同步系統(tǒng)C的非易失性存儲器362中以作為緩沖數(shù)據(jù);S2.定期從該非易失性存儲器362中讀取所述緩沖數(shù)據(jù)并將其在同步處理隊列360中進行排隊;S3.以預(yù)定流量將該同步處理隊列360中的所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)依序傳送至該同步系統(tǒng)C的數(shù)據(jù)輸出接口 35 ;以及S4.該數(shù)據(jù)輸出接口 35調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口 22,當(dāng)調(diào)用成功時,將所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)傳送至該目標(biāo)系統(tǒng)B,當(dāng)調(diào)用不成功時,則將所述緩沖數(shù)據(jù)再次暫存到該非易失性存儲器362中,返回至步驟S2。其中,在執(zhí)行步驟S4之后,將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志30中。根據(jù)本申請的一個實施例,所述的海量數(shù)據(jù)同步方法在執(zhí)行了上述過載保護步驟之后,還可繼續(xù)執(zhí)行上述的糾錯步驟。
根據(jù)上述,可知本申請的海量數(shù)據(jù)同步系統(tǒng)及方法與現(xiàn)有技術(shù)相比具有如下的優(yōu)越性。首先,針對來自資源系統(tǒng)A的增量數(shù)據(jù)中僅有小部分?jǐn)?shù)據(jù)是需要同步的數(shù)據(jù)的情形,本申請的過濾器模塊能夠有效篩選出此小部分?jǐn)?shù)據(jù)并僅對此部分?jǐn)?shù)據(jù)進行同步,因此避免了大量的重復(fù)操作和內(nèi)存空間及時間占用過多等問題。更進一步,本申請的過濾器模塊應(yīng)用布隆過濾器(Bloom Filter)進行數(shù)據(jù)過濾,并據(jù)此設(shè)計出本申請的過濾模塊的高效過濾算法,最大限度地減小了數(shù)據(jù)運算所占用的內(nèi)存空間和運算處理時間,從而達到了同步系統(tǒng)對海量數(shù)據(jù)進行同步處理時對時間和空間的苛刻要求。本申請為了確保系統(tǒng)的異常容錯能力,還設(shè)計了自我修復(fù)機制,通過對同步數(shù)據(jù)進行記錄和定時掃描,找出產(chǎn)生問題的數(shù)據(jù)而進行修復(fù),從而保證了數(shù)據(jù)同步前后的一致性和同步操作的可靠性。 此外,互聯(lián)網(wǎng)的應(yīng)用往往存在服務(wù)高峰,與之關(guān)聯(lián)的信息應(yīng)用系統(tǒng)和同步系統(tǒng)也相應(yīng)地存在服務(wù)高峰。在服務(wù)高峰時段,數(shù)據(jù)同步的需求無可避免地超過同步數(shù)據(jù)接口的服務(wù)能力,前述的幾種方案也無法滿足需求,更不能應(yīng)對海量數(shù)據(jù)的同步需求。針對這種情形,本申請設(shè)計了一種智能的過載保護模塊(其包括流量控制單元),使之可以在服務(wù)高峰的時候?qū)⑦^載的數(shù)據(jù)給予緩沖處理(臨時保存)和限量提交,從而使得同步系統(tǒng)得以保持平穩(wěn)的同步速率,直至安全達到服務(wù)空閑期。綜上所述,本申請的海量數(shù)據(jù)同步系統(tǒng)和方法可以對海量數(shù)據(jù)進行高效、可靠、快速的同步。盡管前面結(jié)合附圖而對本申請的多個示例性實施例進行了具體描述,但可以理解的是,在本公開內(nèi)容的原理的精神和范圍之內(nèi),本領(lǐng)域技術(shù)人員完全可以推導(dǎo)出許多其它變化和實施例。尤其是,可以在該公開、附圖和所附權(quán)利要求的范圍內(nèi)對組件和/或附件的設(shè)置組合進行多種變化和改進。除組件和/或附件的變化和改進之外,其他可選擇的應(yīng)用對于本領(lǐng)域技術(shù)人員而言也是顯而易見的。
權(quán)利要求
1.一種海量數(shù)據(jù)同步系統(tǒng),用于從出現(xiàn)資源數(shù)據(jù)變化的資源系統(tǒng)將數(shù)據(jù)同步到根據(jù)該資源系統(tǒng)的資源數(shù)據(jù)變化而隨之改變數(shù)據(jù)的目標(biāo)系統(tǒng),該同步系統(tǒng)包括 增量數(shù)據(jù)輸入接口,從該資源系統(tǒng)的增量數(shù)據(jù)接口接收來自該資源系統(tǒng)的變化后數(shù)據(jù)的增量數(shù)據(jù); 全量數(shù)據(jù)輸入接口,調(diào)用該目標(biāo)系統(tǒng)的全量數(shù)據(jù)接口并接收來自該目標(biāo)系統(tǒng)中的全量數(shù)據(jù)標(biāo)識碼; 存儲模塊,將所接收的增量數(shù)據(jù)和所述全量數(shù)據(jù)標(biāo)識碼存儲在該存儲模塊中; 過濾器模塊,基于所述全量數(shù)據(jù)標(biāo)識碼而對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾,將與全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù)作為過濾后數(shù)據(jù);以及 數(shù)據(jù)輸出接口,將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口,并由該目標(biāo)系統(tǒng)存儲其中。
2.根據(jù)權(quán)利要求I所述的海量數(shù)據(jù)同步系統(tǒng),其中,該過濾器模塊包括 編碼單元,對所述增量數(shù)據(jù)中的每個數(shù)據(jù)的標(biāo)識碼和每個所述全量數(shù)據(jù)標(biāo)識碼進行哈希運算,將其分別映射為二進制編碼;以及 比較單元,將增量數(shù)據(jù)中的每個數(shù)據(jù)的二進制編碼與每個全量數(shù)據(jù)的二進制編碼進行比較,當(dāng)增量數(shù)據(jù)的二進制編碼與一個全量數(shù)據(jù)的二進制編碼相同時,此增量數(shù)據(jù)即為與全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù),則將此增量數(shù)據(jù)作為過濾后數(shù)據(jù)。
3.根據(jù)權(quán)利要求I所述的海量數(shù)據(jù)同步系統(tǒng),其中,該目標(biāo)系統(tǒng)包括 全量提交日志記錄模塊,在將所述同步數(shù)據(jù)存儲在目標(biāo)系統(tǒng)中之后,將所述同步數(shù)據(jù)的標(biāo)識碼作為全量數(shù)據(jù)標(biāo)識碼記錄到全量提交日志中。
4.根據(jù)權(quán)利要求3所述的海量數(shù)據(jù)同步系統(tǒng),其中,該同步系統(tǒng)還包括定期更新模塊,該定期更新模塊包括 定期查詢單元,通過定期查詢該目標(biāo)系統(tǒng)的全量提交日志來獲得該目標(biāo)系統(tǒng)中的最新的全量數(shù)據(jù)標(biāo)識碼;以及 定期調(diào)用單元,定期調(diào)用該目標(biāo)系統(tǒng)的全量數(shù)據(jù)接口,并通過該全量數(shù)據(jù)接口將所述最新的全量數(shù)據(jù)標(biāo)識碼傳送至該同步系統(tǒng)的全量數(shù)據(jù)輸入接口,其中 該同步系統(tǒng)接收并存儲所述最新的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行定期更新。
5.根據(jù)權(quán)利要求3所述的海量數(shù)據(jù)同步系統(tǒng),其中,該目標(biāo)系統(tǒng)還包括 全量提交日志變更模塊,根據(jù)操作人員在目標(biāo)系統(tǒng)中對需要同步的數(shù)據(jù)的重新設(shè)定,在全量提交日志中增加相應(yīng)的全量數(shù)據(jù)標(biāo)識碼;以及主動更新模塊,該主動更新模塊包括 變更獲取單元,當(dāng)該全量提交日志中的全量數(shù)據(jù)標(biāo)識碼發(fā)生變更時,獲得新增部分的全量數(shù)據(jù)標(biāo)識碼;以及 主動調(diào)用單元,主動調(diào)用該同步系統(tǒng)的全量數(shù)據(jù)輸入接口,并通過該目標(biāo)系統(tǒng)的全量數(shù)據(jù)接口將新增部分的全量數(shù)據(jù)標(biāo)識碼傳送至該同步系統(tǒng)的全量數(shù)據(jù)輸入接口,其中 該同步系統(tǒng)接收并存儲所述新增部分的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行主動更新。
6.根據(jù)權(quán)利要求I所述的海量數(shù)據(jù)同步系統(tǒng),還包括同步日志記錄模塊,當(dāng)該數(shù)據(jù)輸出接口將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)之后,該同步日志記錄模塊將所提交的同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄至同步日志中。
7.根據(jù)權(quán)利要求6所述的海量數(shù)據(jù)同步系統(tǒng),其中,該同步日志包括以下兩個字段 同步數(shù)據(jù)的標(biāo)識碼,用于唯一地表示每個同步數(shù)據(jù);以及 同步提交時間,用于表示同步成功時最后一次修改所述同步數(shù)據(jù)的時間。
8.根據(jù)權(quán)利要求6所述的海量數(shù)據(jù)同步系統(tǒng),其還包括糾錯模塊,該糾錯模塊包括 掃描單元,根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼獲得其同步提交時間,以及根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼掃描該資源系統(tǒng)中的資源數(shù)據(jù)存儲模塊,提取與該同步日志中的同步數(shù)據(jù)的標(biāo)識碼相同的最新數(shù)據(jù)及其最后變更時間; 對比單元,將所述最后變更時間與該同步提交時間進行對比,如果所述最后變更時間是在該同步提交時間之后,將此最新數(shù)據(jù)作為需要糾錯的同步數(shù)據(jù);以及 提取單元,將所述需要糾錯的同步數(shù)據(jù)從該資源系統(tǒng)的增量數(shù)據(jù)接口直接提取并傳送至該同步系統(tǒng)的數(shù)據(jù)輸出接口,其中 由該同步系統(tǒng)的數(shù)據(jù)輸出接口調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口,將所述需要糾錯的同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng),并由該目標(biāo)系統(tǒng)存儲其中。
9.根據(jù)權(quán)利要求I所述的海量數(shù)據(jù)同步系統(tǒng),其還包括過載保護模塊,該過載保護模塊包括 判斷單元,在該增量數(shù)據(jù)輸入接口接收到來自該資源系統(tǒng)的增量數(shù)據(jù)并對其進行過濾之后,該判斷單元確定此時進入該同步系統(tǒng)的過濾后數(shù)據(jù)的數(shù)量是否超出預(yù)定閾值,如果所述過濾后數(shù)據(jù)的數(shù)量超出預(yù)定閾值,則對超出的過濾后數(shù)據(jù)進行緩沖處理。
10.根據(jù)權(quán)利要求9所述的海量數(shù)據(jù)同步系統(tǒng),其中,該過載保護模塊還包括 非易失性存儲器,將來自所述過濾器模塊的超出的過濾后數(shù)據(jù)暫存到該非易失性存儲器中以作為緩沖數(shù)據(jù); 同步處理隊列,定期從該非易失性存儲器中讀取所述緩沖數(shù)據(jù)并將其進行排隊;以及流量控制單元,以預(yù)定流量將該同步處理隊列中的所述緩沖數(shù)據(jù)依序輸送至該數(shù)據(jù)輸出接口,其中 由該數(shù)據(jù)輸出接口調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口,當(dāng)調(diào)用成功時,將所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)傳送至該目標(biāo)系統(tǒng),當(dāng)調(diào)用不成功時,將所述緩沖數(shù)據(jù)再次暫存到該非易失性存儲器中。
11.根據(jù)權(quán)利要求10所述的海量數(shù)據(jù)同步系統(tǒng),其還包括同步日志記錄模塊,當(dāng)該數(shù)據(jù)輸出接口將所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)之后,該同步日志記錄模塊將所提交的同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄至同步日志中。
12.根據(jù)權(quán)利要求11所述的海量數(shù)據(jù)同步系統(tǒng),其中,該同步日志包括以下兩個字段 同步數(shù)據(jù)的標(biāo)識碼,用于唯一地表示每個同步數(shù)據(jù);以及 同步提交時間,用于表示同步成功時最后一次修改所述同步數(shù)據(jù)的時間。
13.根據(jù)權(quán)利要求11所述的海量數(shù)據(jù)同步系統(tǒng),其還包括糾錯模塊,該糾錯模塊包括 掃描單元,根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼獲得其同步提交時間,以及根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼掃描該資源系統(tǒng)中的資源數(shù)據(jù)存儲模塊,提取與該同步日志中的同步數(shù)據(jù)的標(biāo)識碼相同的最新數(shù)據(jù)及其最后變更時間;對比單元,將所述最后變更時間與該同步提交時間進行對比,如果所述最后變更時間是在該同步提交時間之后,將此最新數(shù)據(jù)作為需要糾錯的同步數(shù)據(jù);以及 提取單元,將所述需要糾錯的同步數(shù)據(jù)從該資源系統(tǒng)的增量數(shù)據(jù)接口傳送至該同步系統(tǒng)的數(shù)據(jù)輸出接口,其中 由該同步系統(tǒng)的數(shù)據(jù)輸出接口調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口將所述需要糾錯的同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng),并由該目標(biāo)系統(tǒng)存儲其中。
14.一種海量數(shù)據(jù)同步方法,由同步系統(tǒng)從出現(xiàn)資源數(shù)據(jù)變化的資源系統(tǒng)將數(shù)據(jù)同步到根據(jù)該資源系統(tǒng)的資源數(shù)據(jù)變化而隨之改變數(shù)據(jù)的目標(biāo)系統(tǒng),該同步系統(tǒng)實施的同步方法包括以下步驟 接收并存儲來自該資源系統(tǒng)的變化后數(shù)據(jù)的增量數(shù)據(jù); 接收并存儲來自該目標(biāo)系統(tǒng)中的全量數(shù)據(jù)標(biāo)識碼; 基于所述全量數(shù)據(jù)標(biāo)識碼而對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾,將與所述全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù)作為過濾后數(shù)據(jù); 將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng),并由該目標(biāo)系統(tǒng)存儲其中。
15.根據(jù)權(quán)利要求14所述的海量數(shù)據(jù)同步方法,其中,對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾的步驟包括 對所述增量數(shù)據(jù)中的每個數(shù)據(jù)和每個所述全量數(shù)據(jù)標(biāo)識碼進行哈希運算,將其分別映射為二進制編碼;以及 將所述增量數(shù)據(jù)中的每個數(shù)據(jù)的二進制編碼與每個全量數(shù)據(jù)的二進制編碼進行比較,當(dāng)所述增量數(shù)據(jù)的二進制編碼與一個全量數(shù)據(jù)的二進制編碼相同時,此增量數(shù)據(jù)即為與全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù),則將此數(shù)據(jù)作為過濾后數(shù)據(jù)。
16.根據(jù)權(quán)利要求13所述的海量數(shù)據(jù)同步方法,其還包括以下的全量提交日志記錄步驟 在將所述同步數(shù)據(jù)存儲在該目標(biāo)系統(tǒng)中之后,將所述同步數(shù)據(jù)的標(biāo)識碼作為所述全量數(shù)據(jù)標(biāo)識碼記錄到該目標(biāo)系統(tǒng)的全量提交日志中。
17.根據(jù)權(quán)利要求16所述的海量數(shù)據(jù)同步方法,其還包括以下的定期更新步驟 通過定期查詢該目標(biāo)系統(tǒng)的全量提交日志來獲得最新的全量數(shù)據(jù)標(biāo)識碼;以及 定期調(diào)用該目標(biāo)系統(tǒng)的全量數(shù)據(jù)接口,并通過該全量數(shù)據(jù)接口將所述最新的全量數(shù)據(jù)標(biāo)識碼傳送至該同步系統(tǒng)的全量數(shù)據(jù)輸入接口 ;其中 該同步系統(tǒng)接收并存儲所述最新的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行定期更新。
18.根據(jù)權(quán)利要求14所述的海量數(shù)據(jù)同步方法,其還包括以下的主動更新步驟 根據(jù)操作人員在目標(biāo)系統(tǒng)中對需要同步的數(shù)據(jù)的重新設(shè)定,在全量提交日志中增加全量數(shù)據(jù)標(biāo)識碼; 當(dāng)該全量提交日志中的全量數(shù)據(jù)標(biāo)識碼發(fā)生變更時,獲得新增部分的全量數(shù)據(jù)標(biāo)識碼;以及 主動調(diào)用同步系統(tǒng)的全量數(shù)據(jù)輸入接口,并通過目標(biāo)系統(tǒng)的全量數(shù)據(jù)接口將新增部分的全量數(shù)據(jù)標(biāo)識碼傳送至該同步系統(tǒng)的全量數(shù)據(jù)輸入接口,其中 該同步系統(tǒng)接收并存儲所述新增部分的全量數(shù)據(jù)標(biāo)識碼,以對之前的全量數(shù)據(jù)標(biāo)識碼進行主動更新。
19.根據(jù)權(quán)利要求14所述的海量數(shù)據(jù)同步方法,其還包括以下的步驟 在將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)之后,將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志中。
20.根據(jù)權(quán)利要求19所述的海量數(shù)據(jù)同步方法,其中,該同步日志包括以下兩個字段 同步數(shù)據(jù)的標(biāo)識碼,用于唯一地表示每個同步數(shù)據(jù);以及 同步提交時間,用于表示同步成功時最后一次修改所述同步數(shù)據(jù)的時間。
21.根據(jù)權(quán)利要求19所述的海量數(shù)據(jù)同步方法,其還包括以下的糾錯步驟 在將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志中之后,該同步系統(tǒng)根據(jù)該同步日志中所記錄的同步數(shù)據(jù)的標(biāo)識碼獲得其同步提交時間,以及根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼掃描該資源系統(tǒng)中的資源數(shù)據(jù)存儲模塊,提取與該同步日志中所記錄的同步數(shù)據(jù)的標(biāo)識碼相同的最新數(shù)據(jù)及其最后變更時間; 將所述最后變更時間與該同步提交時間進行對比,如果所述最后變更時間是在該同步提交時間之后,將此最新數(shù)據(jù)作為需要糾錯的同步數(shù)據(jù);以及 將所述需要糾錯的同步數(shù)據(jù)從資源系統(tǒng)A直接提取并傳送至同步系統(tǒng)的數(shù)據(jù)輸出接n ; 調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口以向該目標(biāo)系統(tǒng)發(fā)出同步請求,將所述需要糾錯的同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng),并由該目標(biāo)系統(tǒng)存儲其中。
22.根據(jù)權(quán)利要求14所述的海量數(shù)據(jù)同步方法,其還包括以下的過載保護步驟 在接收來自該資源系統(tǒng)的增量數(shù)據(jù)并對其進行過濾之后,確定此時進入該同步系統(tǒng)的過濾后數(shù)據(jù)的數(shù)量是否超出預(yù)定閾值; 如果所述過濾后數(shù)據(jù)的數(shù)量超出預(yù)定閾值,則對超出的過濾后數(shù)據(jù)進行緩沖處理。
23.根據(jù)權(quán)利要求22所述的海量數(shù)據(jù)同步方法,其中,對所述超出閾值的部分過濾后數(shù)據(jù)進行緩沖處理的步驟包括 51.將所述超出的過濾后數(shù)據(jù)暫存到該同步系統(tǒng)的非易失性存儲器中以作為緩沖數(shù)據(jù); 52.定期從該非易失性存儲器中讀取所述緩沖數(shù)據(jù)并將其在同步處理隊列中進行排隊; 53.以預(yù)定流量將該同步處理隊列中的所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)依序傳送至同步系統(tǒng)的數(shù)據(jù)輸出接口 ;以及 54.該數(shù)據(jù)輸出接口調(diào)用該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口,當(dāng)調(diào)用成功時,將所述緩沖數(shù)據(jù)作為同步數(shù)據(jù)傳送至該目標(biāo)系統(tǒng),當(dāng)調(diào)用不成功時,將所述緩沖數(shù)據(jù)再次暫存到該非易失性存儲器中,返回至步驟S2。
24.根據(jù)權(quán)利要求23所述的海量數(shù)據(jù)同步方法,其中,在執(zhí)行步驟S4之后,將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志中。
25.根據(jù)權(quán)利要求24所述的海量數(shù)據(jù)同步方法,其中,該同步日志包括以下兩個字段 同步數(shù)據(jù)的標(biāo)識碼,用于唯一地表示每個同步數(shù)據(jù);以及 同步提交時間,用于表示同步成功時最后一次修改所述同步數(shù)據(jù)的時間。
26.根據(jù)權(quán)利要求24所述的海量數(shù)據(jù)同步方法,其還包括以下的糾錯步驟在將所述同步數(shù)據(jù)的標(biāo)識碼及其同步提交時間記錄到同步日志中之后,該同步系統(tǒng)根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼獲得其同步提交時間,以及根據(jù)該同步日志中的同步數(shù)據(jù)的標(biāo)識碼掃描該資源系統(tǒng)中的資源數(shù)據(jù)存儲模塊,提取與該同步日志中所記錄的數(shù)據(jù)的標(biāo)識碼相同的最新數(shù)據(jù)及其最后變更時間; 將 所述最后變更時間與該同步提交時間進行對比,如果所述最后變更時間是在該同步提交時間之后,將此最新數(shù)據(jù)作為需要糾錯的同步數(shù)據(jù);以及 調(diào)用目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口以向該目標(biāo)系統(tǒng)發(fā)出同步請求;將所述需要糾錯的同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng),并由該目標(biāo)系統(tǒng)存儲其中。
全文摘要
一種海量數(shù)據(jù)同步系統(tǒng)及方法,該同步系統(tǒng)包括增量數(shù)據(jù)輸入接口,從該資源系統(tǒng)的增量數(shù)據(jù)接口接收來自該資源系統(tǒng)的變化后數(shù)據(jù)的增量數(shù)據(jù);全量數(shù)據(jù)輸入接口,調(diào)用該目標(biāo)系統(tǒng)的全量數(shù)據(jù)接口并接收來自該目標(biāo)系統(tǒng)中的全量數(shù)據(jù)標(biāo)識碼;存儲模塊,將所接收的增量數(shù)據(jù)和全量數(shù)據(jù)標(biāo)識碼存儲在該存儲模塊中;過濾器模塊,基于全量數(shù)據(jù)標(biāo)識碼而對所述增量數(shù)據(jù)進行數(shù)據(jù)過濾,將與全量數(shù)據(jù)標(biāo)識碼對應(yīng)的增量數(shù)據(jù)作為過濾后數(shù)據(jù);以及數(shù)據(jù)輸出接口,將所述過濾后數(shù)據(jù)作為同步數(shù)據(jù)提交至該目標(biāo)系統(tǒng)的同步數(shù)據(jù)接口,并由該目標(biāo)系統(tǒng)存儲其中。本發(fā)明可以對海量數(shù)據(jù)進行高效、可靠、快速的同步。
文檔編號G06F17/30GK102750283SQ20111009845
公開日2012年10月24日 申請日期2011年4月20日 優(yōu)先權(quán)日2011年4月20日
發(fā)明者植晶晶 申請人:阿里巴巴集團控股有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1