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

基于二進制編碼的dns數(shù)據(jù)壓縮、解壓縮方法及系統(tǒng)的制作方法

文檔序號:7982978閱讀:579來源:國知局
基于二進制編碼的dns數(shù)據(jù)壓縮、解壓縮方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于二進制編碼的DNS數(shù)據(jù)壓縮、解壓縮方法及系統(tǒng),屬于計算機網(wǎng)絡【技術(shù)領(lǐng)域】。其中,DNS數(shù)據(jù)壓縮方法為:1)從數(shù)據(jù)源文件中讀取日志信息后,將數(shù)據(jù)打包放到一緩存隊列中;2)數(shù)據(jù)壓縮模塊從該數(shù)據(jù)緩存隊列中取出數(shù)據(jù)并壓縮后,將其存儲到一壓縮信息緩存中;3)從該壓縮信息緩存中取出數(shù)據(jù)并進行二進制編碼后保存到一結(jié)果文件中。解壓縮方法為:1)將結(jié)果文件中二進制編碼壓縮日志信息進行二進制編碼解壓后,保存到壓縮信息緩存中;2)從緩存中取出數(shù)據(jù),將其存儲到一解壓信息緩存中;3)從解壓信息緩存中取出數(shù)據(jù)并進行解壓得到日志記錄信息。本方法實現(xiàn)了日志的高比例壓縮,而且壓縮的文件還能用gzip進一步壓縮。
【專利說明】基于二進制編碼的DNS數(shù)據(jù)壓縮、解壓縮方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于二進制編碼的DNS數(shù)據(jù)壓縮、解壓縮方法及系統(tǒng),屬于計算機網(wǎng)絡【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]域名系統(tǒng)(Domain Name System,DNS)是互聯(lián)網(wǎng)基礎設施提供的一項核心服務,系統(tǒng)包括可以將域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,以及實現(xiàn)域名和網(wǎng)絡可以識別的IP地址轉(zhuǎn)換功能的系統(tǒng)。
[0003]DNS經(jīng)過幾十年的發(fā)展,已經(jīng)成為目前全球最大、最復雜的分布式數(shù)據(jù)庫系統(tǒng),具有良好的擴展性和高效的解析性能。同時,巨大的工作量使得DNS系統(tǒng)產(chǎn)生了海量的數(shù)據(jù)?,F(xiàn)有的系統(tǒng)一般都是使用字符編碼的方式保留原始日志。
[0004]現(xiàn)有技術(shù)的缺陷是:
[0005]DNS海量的查詢和應答服務產(chǎn)生了巨大日志量,一方面這些日志需要在本地進行保存,另一方面很多任務都需要跨地區(qū)、跨網(wǎng)段進行日志傳輸。目前缺乏一種穩(wěn)定有效的日志壓縮技術(shù)來提高日志保存和傳輸?shù)男?。因此,如果開發(fā)出能穩(wěn)定高效運行的日志壓縮系統(tǒng)能大大的推動目前的各項工作。

【發(fā)明內(nèi)容】

[0006]針對現(xiàn)有技術(shù)中存在的技術(shù)問題,本發(fā)明的目的在于提供一種基于二進制編碼的DNS數(shù)據(jù)壓縮、解壓縮方法及系統(tǒng);本發(fā)明改進的方向為:
[0007]I)設計高效的DNS信息壓縮算法;
[0008]2)使用二進制編碼方式進行日志存儲,提高壓縮比例;
[0009]3)設計優(yōu)良的系統(tǒng)架構(gòu),保證系統(tǒng)能進行企業(yè)級應用。
[0010]本發(fā)明的技術(shù)方案為:
[0011]一種基于二進制編碼的DNS數(shù)據(jù)壓縮、解壓縮系統(tǒng),其特征在于包括一數(shù)據(jù)讀取模塊,一二進制編碼模塊,一數(shù)據(jù)壓縮模塊,一二進制解碼模塊,一數(shù)據(jù)解壓模塊;其中
[0012]所述數(shù)據(jù)讀取模塊,用于從DNS數(shù)據(jù)源文件中讀取日志信息后,將數(shù)據(jù)打包放到一緩存隊列中;
[0013]所述數(shù)據(jù)壓縮模塊,用于從所述數(shù)據(jù)緩存隊列中取出數(shù)據(jù)并壓縮后,將其存儲到一壓縮信息緩存中;
[0014]所述二進制編碼模塊,用于從所述壓縮信息緩存中取出數(shù)據(jù)并進行二進制編碼后保存到一結(jié)果文件中;
[0015]所述二進制解碼模塊,用于將所述結(jié)果文件中二進制編碼壓縮日志信息進行二進制編碼解壓后,保存到壓縮信息緩存中;
[0016]所述數(shù)據(jù)解壓模塊,用于從壓縮信息緩存中取出數(shù)據(jù),將其存儲到一解壓信息緩存中;然后從該解壓信息緩存中取出數(shù)據(jù)并進行解壓得到日志記錄信息。[0017]一種基于二進制編碼的DNS數(shù)據(jù)壓縮方法,其步驟為:
[0018]I)數(shù)據(jù)讀取模塊從DNS數(shù)據(jù)源文件中讀取日志信息后,將數(shù)據(jù)打包放到一緩存隊列中;
[0019]2)數(shù)據(jù)壓縮模塊從該數(shù)據(jù)緩存隊列中取出數(shù)據(jù)并壓縮后,將其存儲到一壓縮信息緩存中;
[0020]3) 二進制編碼模塊從該壓縮信息緩存中取出數(shù)據(jù)并進行二進制編碼后保存到一結(jié)果文件中。
[0021]進一步的,采用可變長度整型編碼規(guī)則進行所述二進制編碼;所述可變長度整型編碼的最大長度為128字節(jié)。
[0022]進一步的,二進制編碼后的每個數(shù)據(jù)域包括標志字段和數(shù)據(jù)字段兩部分;其中,標志字段用于指明數(shù)據(jù)的類型和數(shù)據(jù)在消息結(jié)構(gòu)體中的序號,數(shù)據(jù)字段用于存儲數(shù)據(jù)的值;一個DNS數(shù)據(jù)包二進制編碼后對應一個消息結(jié)構(gòu)體。
[0023]進一步的,所述數(shù)據(jù)壓縮模塊對日志信息中的時間數(shù)據(jù)信息進行壓縮,其方法為:首先從所述緩存隊列中讀取一條記錄,如果是首條記錄則保留該記錄完整的時間格式;否則判斷當前記錄的在設定級時間域及其上級時間域的時間與上一條記錄的對應級時間域是否相等,如果相等,則只保留設定級時間域下一級時間的時間;如果不相等,則判斷當前記錄時間與上一記錄時間間隔是否大于設定閾值,如果大于該閾值,則保留當前記錄完整的時間格式,否則比較設定級時間域下一級時間的時間,如果當前記錄設定級時間域下一級時間小于上一條記錄對應時間,則只保留當前記錄設定級時間域的下一級時間域的時間,否則保留當前記錄完整的時間格式。
[0024]進一步的,所述設定級時間域為秒時間域,所述閾值為I秒。
[0025]進一步的,從緩存隊列取出數(shù)據(jù)的時候,用哈希表做為域名和IP地址信息壓縮的輔助結(jié)構(gòu)。
[0026]進一步的,所述數(shù)據(jù)壓縮模塊對日志信息中的域名數(shù)據(jù)和IP數(shù)據(jù)信息進行壓縮;a)對于域名數(shù)據(jù)進行壓縮的方法為:從所述緩存隊列中讀取一條記錄,在所述哈希鏈表中搜索該記錄中的域名;如果存在該域名,則將該域名在哈希鏈表中的哈希位置保存到所述結(jié)果文件中,如果不存在該域名,則在所述哈希鏈表中為該域名構(gòu)建結(jié)點并將該域名保存到所述結(jié)果文件中山)對于IP地址數(shù)據(jù)信息進行壓縮的方法為:從所述緩存隊列中讀取一條記錄,在所述哈希鏈表中搜索該記錄中的IP地址;如果存在該IP,則將該IP在哈希鏈表中的哈希位置保存到所述結(jié)果文件中,如果不存在該IP,則在所述哈希鏈表中為該IP構(gòu)建結(jié)點并將該IP保存到所述結(jié)果文件中。
[0027]—種基于二進制編碼的DNS數(shù)據(jù)壓縮文件的解壓縮方法,其步驟為:
[0028]I) 二進制解碼模塊將結(jié)果文件中二進制編碼壓縮日志信息進行二進制編碼解壓后,保存到壓縮信息緩存中;
[0029]2)數(shù)據(jù)解壓模塊從壓縮信息緩存中取出數(shù)據(jù),將其存儲到一解壓信息緩存中;
[0030]3)數(shù)據(jù)解壓模塊從該解壓信息緩存中取出數(shù)據(jù)并進行解壓得到日志記錄信息。
[0031]進一步的,所述數(shù)據(jù)解壓模塊從該解壓信息緩存中取出數(shù)據(jù),對時間數(shù)據(jù)進行解壓,其方法為:首先從所述解壓信息緩存中讀取一條記錄,如果是完整的時間格式,則將其設為基準時間;否則判斷當前記錄的時間域的時間是否大于或等于上一條記錄的對應時間域的時間,如果是,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;如果小于,則利用上一條記錄的完整格式時間將當前記錄的時間域的上一級時間域加I并判斷上一級時間域是否需要進制,如需要進制則利用上一條記錄的完整格式時間進行調(diào)整并繼續(xù)逐級判斷是否需要進制,合成當前記錄的完整時間格式;如果不需要進制,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;其中,所述時間域為微秒時間域。
[0032]進一步的,所述數(shù)據(jù)解壓模塊從該解壓信息緩存中取出數(shù)據(jù),對域名數(shù)據(jù)和IP數(shù)據(jù)進行解壓;a)對于域名數(shù)據(jù),其解壓方法為:從所述解壓信息緩存中讀取一條記錄,如果域名為完整格式,則將其加入到哈希鏈表中并返回;如果域名信息為所述哈希鏈表中的位置信息,則根據(jù)該位置信息從所述哈希鏈表相應位置處讀出域名的完整格式,并返回;b)對于IP數(shù)據(jù),其解壓方法為:從所述解壓信息緩存中讀取一條記錄,如果IP為完整格式,則將其加入到哈希鏈表中并返回;如果IP信息為所述哈希鏈表中的位置信息,則根據(jù)該位置信息從所述哈希鏈表相應位置處讀出IP的完整格式,并返回。
[0033]本發(fā)明整個系統(tǒng)由數(shù)據(jù)讀取模塊(即文件I/O)、數(shù)據(jù)壓縮和數(shù)據(jù)解壓三個部分組成。系統(tǒng)的進程模型如圖1所示。
[0034]緩存使用了 “生產(chǎn)者-消費者”模式,文件I/O模塊做為“生產(chǎn)者”從源文件(DNS數(shù)據(jù)源文件為DNS服務產(chǎn)生的原始日志文件,一般采用字符編碼方式保存)中讀取信息后,將數(shù)據(jù)打包放到緩存隊列中;而數(shù)據(jù)處理模塊(壓縮/解壓模塊)則作為“消費者”,將數(shù)據(jù)從緩存中取出并進行處理。其中,壓縮模塊會根據(jù)算法,得到壓縮后的數(shù)據(jù)信息,這時,壓縮模塊成為了“生產(chǎn)者”將信息存入到壓縮信息緩存(即用來存儲壓縮信息的緩存)中,文件I/O模塊這時候成為了“消費者”,從壓縮信息緩存中取出數(shù)據(jù),并保存到結(jié)果文件中;解壓模塊的處理流程類似,首先二進制解碼模塊將結(jié)果文件中二進制編碼壓縮日志信息進行二進制編碼解壓后,保存到壓縮信息緩存中(即用來存儲二進制編碼解壓后信息的緩存);然后數(shù)據(jù)解壓模塊從壓縮信息緩存中取出數(shù)據(jù),將其存儲到一解壓信息緩存中(即用來存儲壓縮信息的緩存);數(shù)據(jù)解壓模塊從該解壓信息緩存中取出數(shù)據(jù)并進行解壓得到日志記錄信息。數(shù)據(jù)解壓模塊還原壓縮前的信息,并寫入到解壓結(jié)果文件中。
[0035]數(shù)據(jù)壓縮總的思想原則是:“去除不需要的信息,壓縮冗余的數(shù)據(jù)”。在DNS信息中,時間,查詢類型、IP和域名這四類信息對于分析系統(tǒng)進行各種數(shù)據(jù)分析統(tǒng)計最重要,其中時間、IP和域名這三類信息在日志文件中存在大量的冗余信息,所以可以針對這三類數(shù)據(jù),使用特定算法,去除冗余,用較小的空間來表示相同的內(nèi)容,這樣就得到了特定的壓縮信息。
[0036]解壓模塊從“壓縮結(jié)果文件”中讀取信息,并通過算法還原壓縮前的信息,并把信息寫入到解壓結(jié)果文件。壓縮模塊主要是針對時間、IP和域名進行了壓縮,所以解壓模塊也是針對這三個部分的信息進行解壓還原。
[0037]同時,所有的信息在磁盤上保存時使用了二進制編碼,這樣就再一次對存儲空間進行了壓縮,大大節(jié)省了存儲空間。原理如下所述。
[0038]系統(tǒng)的數(shù)字使用了 “基于128的可變長度整型”編碼規(guī)則(最大長度為128字節(jié))。這種方法是用一系列的字節(jié)來表示一個任意大小的數(shù)字,其中字節(jié)的長度是可變長的,類似于字符串。[0039]這個可變長度整型中的每個字節(jié)的第一個比特用做“標志位”,如果標志位是1,則表示這個字節(jié)非該可變長度整型的最后一個字節(jié);如果標志位是0,則表示該字節(jié)是這個可變長度整型的最后一個字節(jié)。而標志位后面的7個比特用于組成該可變長度整型的值。同時,組成該可變長度整型的字節(jié)采用“低位在前”的表示方式。如下就是幾個表示的例子。
[0040]1)“00000001”。其中第一個比特為0,表示該字節(jié)是最后一個字節(jié),隨后的7個比特位組成了這個可變長度整型的值,所以這個變長整形的值是1.[0041]2) “1010110000000010”。其中第一個字節(jié)的第一個位是1,表示該字節(jié)非最后一個字節(jié);第二個字節(jié)的第一個位是0,表示該字節(jié)是最后一個字節(jié)。于是,組成該可變長度整型的數(shù)字段為:“0101100”和“0000010”。又因為采用了 “低位在前”的表示方式,所以,該數(shù)字的值為“00000100101100”,十進制表示為:300
[0042]在系統(tǒng)中每個數(shù)據(jù)域都由“標志字段”和“數(shù)據(jù)字段”組成。其中,標志字段指明了該數(shù)據(jù)的“類型”和“在消息結(jié)構(gòu)體中的序號”,一個DNS數(shù)據(jù)包二進制編碼后對應一個消息結(jié)構(gòu)體;數(shù)據(jù)字段用于存儲數(shù)據(jù)的值。
[0043]數(shù)據(jù)編碼中,用編號0-5分別對應各個類型,每個數(shù)據(jù)域用三個比特來表示其類型。所用的數(shù)據(jù)類型如表1所示:
[0044]表1、數(shù)據(jù)編碼類型表
[0045]
【權(quán)利要求】
1.一種基于二進制編碼的DNS數(shù)據(jù)壓縮方法,其步驟為: 1)數(shù)據(jù)讀取模塊從DNS數(shù)據(jù)源文件中讀取日志信息后,將數(shù)據(jù)打包放到一緩存隊列中; 2)數(shù)據(jù)壓縮模塊從該數(shù)據(jù)緩存隊列中取出數(shù)據(jù)并壓縮后,將其存儲到一壓縮信息緩存中; 3)二進制編碼模塊從該壓縮信息緩存中取出數(shù)據(jù)并進行二進制編碼后保存到一結(jié)果文件中。
2.如權(quán)利要求1所述的方法,其特征在于采用可變長度整型編碼規(guī)則進行所述二進制編碼;所述可變長度整型編碼的最大長度為128字節(jié)。
3.如權(quán)利要求2所述的方法,其特征在于二進制編碼后的每個數(shù)據(jù)域包括標志字段和數(shù)據(jù)字段兩部分;其中,標志字段用于指明數(shù)據(jù)的類型和數(shù)據(jù)在消息結(jié)構(gòu)體中的序號,數(shù)據(jù)字段用于存儲數(shù)據(jù)的值;一個DNS數(shù)據(jù)包二進制編碼后對應一個消息結(jié)構(gòu)體。
4.如權(quán)利要求1所述的方法,其特征在于所述數(shù)據(jù)壓縮模塊對日志信息中的時間數(shù)據(jù)信息進行壓縮,其方法為:首先從所述緩存隊列中讀取一條記錄,如果是首條記錄則保留該記錄完整的時間格式;否則判斷當前記錄的在設定級時間域及其上級時間域的時間與上一條記錄的對應級時間域是否相等,如果相等,則只保留設定級時間域下一級時間的時間;如果不相等,則判斷當前記錄時間與上一記錄時間間隔是否大于設定閾值,如果大于該閾值,則保留當前記錄完整的時間格式,否則比較設定級時間域下一級時間的時間,如果當前記錄設定級時間域下一級時間小于上一條記錄對應時間,則只保留當前記錄設定級時間域的下一級時間域的時間,否則保留當前記錄完整的時間格式。`
5.如權(quán)利要求1所述的方法,其特征在于所述數(shù)據(jù)壓縮模塊對日志信息中的域名數(shù)據(jù)和IP數(shù)據(jù)信息進行壓縮;a)對于域名數(shù)據(jù)進行壓縮的方法為:從所述緩存隊列中讀取一條記錄,在所述哈希鏈表中搜索該記錄中的域名;如果存在該域名,則將該域名在哈希鏈表中的哈希位置保存到所述結(jié)果文件中,如果不存在該域名,則在所述哈希鏈表中為該域名構(gòu)建結(jié)點并將該域名保存到所述結(jié)果文件中山)對于IP地址數(shù)據(jù)信息進行壓縮的方法為:從所述緩存隊列中讀取一條記錄,在所述哈希鏈表中搜索該記錄中的IP地址;如果存在該IP,則將該IP在哈希鏈表中的哈希位置保存到所述結(jié)果文件中,如果不存在該IP,則在所述哈希鏈表中為該IP構(gòu)建結(jié)點并將該IP保存到所述結(jié)果文件中。
6.一種基于二進制編碼的DNS數(shù)據(jù)壓縮文件的解壓縮方法,其步驟為: 1)二進制解碼模塊將結(jié)果文件中二進制編碼壓縮日志信息進行二進制編碼解壓后,保存到壓縮信息緩存中; 2)數(shù)據(jù)解壓模塊從壓縮信息緩存中取出數(shù)據(jù),將其存儲到一解壓信息緩存中; 3)數(shù)據(jù)解壓模塊從該解壓信息緩存中取出數(shù)據(jù)并進行解壓得到日志記錄信息。
7.如權(quán)利要求6所述的方法,其特征在于所述數(shù)據(jù)解壓模塊從該解壓信息緩存中取出數(shù)據(jù),對時間數(shù)據(jù)進行解壓,其方法為:首先從所述解壓信息緩存中讀取一條記錄,如果是完整的時間格式,則將其設為基準時間;否則判斷當前記錄的時間域的時間是否大于或等于上一條記錄的對應時間域的時間,如果是,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;如果小于,則利用上一條記錄的完整格式時間將當前記錄的時間域的上一級時間域加I并判斷上一級時間域是否需要進制,如需要進制則利用上一條記錄的完整格式時間進行調(diào)整并繼續(xù)逐級判斷是否需要進制,合成當前記錄的完整時間格式;如果不需要進制,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;其中,所述時間域為微秒時間域。
8.如權(quán)利要求6所述的方法,其特征在于所述數(shù)據(jù)解壓模塊從該解壓信息緩存中取出數(shù)據(jù),對域名數(shù)據(jù)和IP數(shù)據(jù)進行解壓;a)對于域名數(shù)據(jù),其解壓方法為:從所述解壓信息緩存中讀取一條記錄,如果域名為完整格式,則將其加入到哈希鏈表中并返回;如果域名信息為所述哈希鏈表中的位置信息,則根據(jù)該位置信息從所述哈希鏈表相應位置處讀出域名的完整格式,并返回山) 對于IP數(shù)據(jù),其解壓方法為:從所述解壓信息緩存中讀取一條記錄,如果IP為完整格式,則將其加入到哈希鏈表中并返回;如果IP信息為所述哈希鏈表中的位置信息,則根據(jù)該位置信息從所述哈希鏈表相應位置處讀出IP的完整格式,并返回。
9.一種基于二進制編碼的DNS數(shù)據(jù)壓縮、解壓縮系統(tǒng),其特征在于包括一數(shù)據(jù)讀取模塊,一二進制編碼模塊,一數(shù)據(jù)壓縮模塊,一二進制解碼模塊,一數(shù)據(jù)解壓模塊;其中 所述數(shù)據(jù)讀取模塊,用于從DNS數(shù)據(jù)源文件中讀取日志信息后,將數(shù)據(jù)打包放到一緩存隊列中; 所述數(shù)據(jù)壓縮模塊,用于從所述數(shù)據(jù)緩存隊列中取出數(shù)據(jù)并壓縮后,將其存儲到一壓縮息緩存中; 所述二進制編碼模塊,用于從所述壓縮信息緩存中取出數(shù)據(jù)并進行二進制編碼后保存到一結(jié)果文件中; 所述二進制解碼模塊,用于將所述結(jié)果文件中二進制編碼壓縮日志信息進行二進制編碼解壓后,保存到壓縮信息緩存中; 所述數(shù)據(jù)解壓模塊,用于從壓縮信息緩存中取出數(shù)據(jù),將其存儲到一解壓信息緩存中;然后從該解壓信息緩存中取出數(shù)據(jù)并進行解壓得到日志記錄信息。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于所述數(shù)據(jù)壓縮模塊對日志信息中的時間數(shù)據(jù)信息進行壓縮,其方法為:首先從所述緩存隊列中讀取一條記錄,如果是首條記錄則保留該記錄完整的時間格式;否則判斷當前記錄的在設定級時間域及其上級時間域的時間與上一條記錄的對應級時間域是否相等,如果相等,則只保留設定級時間域下一級時間的時間;如果不相等,則判斷當前記錄時間與上一記錄時間間隔是否大于設定閾值,如果大于該閾值,則保留當前記錄完整的時間格式,否則比較設定級時間域下一級時間的時間,如果當前記錄設定級時間域下一級時間小于上一條記錄對應時間,則只保留當前記錄設定級時間域的下一級時間域的時間,否則保留當前記錄完整的時間格式;所述數(shù)據(jù)解壓模塊從解壓信息緩存中取出數(shù)據(jù),對時間數(shù)據(jù)進行解壓,其方法為:首先從所述解壓信息緩存中讀取一條記錄,如果是完整的時間格式,則將其設為基準時間;否則判斷當前記錄的時間域的時間是否大于或等于上一條記錄的對應時間域的時間,如果是,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;如果小于,則利用上一條記錄的完整格式時間將當前記錄的時間域的上一級時間域加I并判斷上一級時間域是否需要進制,如需要進制則利用上一條記錄的完整格式時間進行調(diào)整并繼續(xù)逐級判斷是否需要進制,合成當前記錄的完整時間格式;如果不需要進制,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式。
【文檔編號】H04L29/12GK103685589SQ201210333176
【公開日】2014年3月26日 申請日期:2012年9月7日 優(yōu)先權(quán)日:2012年9月7日
【發(fā)明者】陽任科 申請人:中國科學院計算機網(wǎng)絡信息中心
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1