亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數據傳輸方法和系統(tǒng)與流程

文檔序號:11628724閱讀:229來源:國知局
數據傳輸方法和系統(tǒng)與流程

本公開涉及一種數據傳輸方法、一種數據接收方法、一種數據傳輸系統(tǒng)和一種數據接收系統(tǒng)。



背景技術:

隨著社會信息化水平的不斷提高和互聯(lián)網技術的快速發(fā)展,越來越多的信息以非結構化的數據形式存儲,以及以數據的形式通過網絡進行傳輸。隨著數據量不斷累積,經常會出現大數據量、長連接的數據傳輸情況。在這種情況下,若將數據無篩選地全部傳輸,會導致網絡帶寬占用比較高,利用率不高的問題。



技術實現要素:

本公開的一個方面提供了一種數據傳輸方法,包括:獲取待發(fā)送數據。對所述待發(fā)送數據進行處理,得到表征所述待發(fā)送數據的第一參數。將所述第一參數發(fā)送給至少一個數據節(jié)點。從所述數據節(jié)點接收針對所述第一參數的返回數據,所述返回數據指示所述數據節(jié)點中已經存在的待發(fā)送數據的至少一部分?;谒龇祷財祿?,生成數據包,所述數據包不攜帶所述數據節(jié)點中已經存在的待發(fā)送數據的所述至少一部分。然后向所述數據節(jié)點發(fā)送所述生成的數據包。

可選地,上述對所述待發(fā)送數據進行處理,得到表征所述待發(fā)送數據的第一參數,包括:將所述待發(fā)送數據切分成至少一個數據塊。針對所述至少一個數據塊中的每個數據塊,生成唯一性參數。然后綜合所述至少一個數據塊中的每個數據塊的唯一性參數得到所述第一參數。

可選地,上述針對所述至少一個數據塊中的每個數據塊生成唯一性參數,包括針對每個數據塊計算所述數據塊的哈希值,作為所述數據塊的唯一性參數。

可選地,上述基于所述返回數據生成數據包,包括:基于所述返回數據,確定所述數據節(jié)點中不存在的待發(fā)送數據的數據塊,以及將確定的所述數據節(jié)點中不存在的待發(fā)送數據的數據塊作為凈荷生成所述數據包。

可選地,上述基于所述返回數據生成數據包,包括:基于所述返回數據,確定所述數據節(jié)點中已經存在的待發(fā)送數據的數據塊的唯一性參數,然后基于所述返回數據,確定所述數據節(jié)點中不存在的待發(fā)送數據的數據塊,以及將所述數據節(jié)點中已經存在的待發(fā)送數據的數據塊的唯一性參數和所確定的所述數據節(jié)點中不存在的待發(fā)送數據的數據塊作為凈荷生成所述數據包。

本公開的另一個方面提供了一種數據接收方法,包括:接收來自至少一個數據節(jié)點的第一參數,所述第一參數表征所述數據節(jié)點的待發(fā)送數據。針對所述第一參數,生成返回數據,所述返回數據指示本地已經存在的所述待發(fā)送數據的至少一部分。將所述返回數據發(fā)送給所述數據節(jié)點。然后接收來自所述數據節(jié)點的數據包,所述數據包不攜帶所述本地已經存在的所述待發(fā)送數據的所述至少一部分。

可選地,上述數據接收方法還包括,根據所接收的數據包以及本地已經存在的數據,恢復所述待發(fā)送數據。

可選地,上述待發(fā)送數據被切分成至少一個數據塊,以及所述第一參數包括所述至少一個數據塊中的每個數據塊的唯一性參數。

可選地,上述每個數據塊的唯一性參數包括每個數據塊的哈希值。

可選地,上述針對所述第一參數生成返回數據,包括:根據所述第一參數,通過查找索引表確定本地已經存在的所述待發(fā)送數據的數據塊,其中所述索引表記錄本地已經存在的數據塊的唯一性參數,以及根據確定結果生成所述返回數據。

可選地,上述返回數據包括確認數據和/或否認數據,所述確認數據用于指示本地已經存在的所述待發(fā)送數據的數據塊,所述否認數據用于指示本地不存在的所述待發(fā)送數據的數據塊。

可選地,上述數據接收方法還包括,在內存中緩存所接收的數據包中攜帶的數據塊,并且將所緩存的數據塊的唯一性參數加入索引表。

可選地,上述數據接收方法還包括:從索引表中移除超出窗口的數據塊的唯一性參數,以及從內存中釋放所述移除的唯一性參數對應的數據塊。

本公開的另一個方面提供了一種數據傳輸系統(tǒng),包括:數據獲取模塊,用于獲取待發(fā)送數據。數據處理模塊,用于對所述待發(fā)送數據進行處理,得到表征所述待發(fā)送數據的第一參數。參數發(fā)送模塊,用于將所述第一參數發(fā)送給至少一個數據節(jié)點。數據接收模塊,用于從所述數據節(jié)點接收針對所述第一參數的返回數據,所述返回數據指示所述數據節(jié)點中已經存在的待發(fā)送數據的至少一部分。數據包生成模塊,用于基于所述返回數據,生成數據包,所述數據包不攜帶所述數據節(jié)點中已經存在的待發(fā)送數據的所述至少一部分。以及數據包發(fā)送模塊,用于向所述數據節(jié)點發(fā)送所述生成的數據包。

可選地,上述數據處理模塊包括:數據切分單元,用于將所述待發(fā)送數據切分成至少一個數據塊。唯一性參數生成單元,用于針對所述至少一個數據塊中的每個數據塊,生成唯一性參數。以及第一參數生成單元,用于綜合所述至少一個數據塊中的每個數據塊的唯一性參數得到所述第一參數。

可選地,上述唯一性參數生成單元,還用于針對每個數據塊計算所述數據塊的哈希值,作為所述數據塊的唯一性參數。

可選地,上述數據包生成模塊包括:第一確定單元,用于基于所述返回數據,確定所述數據節(jié)點中不存在的待發(fā)送數據的數據塊。以及生成單元,用于將確定的所述數據節(jié)點中不存在的待發(fā)送數據的數據塊作為凈荷生成所述數據包。

可選地,上述數據包生成模塊,還包括第二確定模塊,其中:所述第二確定模塊,用于基于所述返回數據,確定所述數據節(jié)點中已經存在的待發(fā)送數據的數據塊的唯一性參數。所述第一確定模塊,用于基于所述返回數據,確定所述數據節(jié)點中不存在的待發(fā)送數據的數據塊。以及所述生成模塊,還用于將所述數據節(jié)點中已經存在的待發(fā)送數據的數據塊的唯一性參數和所確定的所述數據節(jié)點中不存在的待發(fā)送數據的數據塊作為凈荷生成所述數據包。

本公開的另一個方面提供了一種數據接收系統(tǒng),包括:參數接收模塊,用于接收來自至少一個數據節(jié)點的第一參數,所述第一參數表征所述數據節(jié)點的待發(fā)送數據。返回數據生成模塊,用于針對所述第一參數,生成返回數據,所述返回數據指示本地已經存在的所述待發(fā)送數據的至少一部分。發(fā)送模塊,用于將所述返回數據發(fā)送給所述數據節(jié)點。數據包接收模塊,用于接收來自所述數據節(jié)點的數據包,所述數據包不攜帶所述本地已經存在的所述待發(fā)送數據的所述至少一部分。

可選地,上述數據接收系統(tǒng)還包括數據恢復模塊,用于根據所接收的數據包以及本地已經存在的數據,恢復所述待發(fā)送數據。

可選地,上述待發(fā)送數據被切分成至少一個數據塊,以及所述第一參數包括所述至少一個數據塊中的每個數據塊的唯一性參數。

可選地,上述每個數據塊的唯一性參數包括每個數據塊的哈希值。

可選地,上述返回數據生成模塊,包括:確定單元,用于根據所述第一參數,通過查找索引表確定本地已經存在的所述待發(fā)送數據的數據塊,其中所述索引表記錄本地已經存在的數據塊的唯一性參數。以及生成單元,用于根據確定結果,生成所述返回數據。

可選地,上述返回數據包括確認數據和/或否認數據,所述確認數據用于指示本地已經存在的所述待發(fā)送數據的數據塊,所述否認數據用于指示本地不存在的所述待發(fā)送數據的數據塊。

可選地,上述數據接收系統(tǒng)還包括添加模塊,用于在內存中緩存所接收的數據包中攜帶的數據塊,并且將所緩存的數據塊的唯一性參數加入索引表。

可選地,上述數據接收系統(tǒng)還包括參數移除模塊,用于從索引表中移除超出窗口的數據塊的唯一性參數。以及數據塊釋放模塊,用于從內存中釋放所述移除的唯一性參數對應的數據塊。

本公開的另一方面提供了一種數據傳輸系統(tǒng),包括一個或多個存儲器,存儲有可執(zhí)行指令,以及一個或多個處理器,執(zhí)行所述可執(zhí)行指令用于實現如上所述的方法。

本公開的另一方面提供了一種數據接收系統(tǒng),包括一個或多個存儲器,存儲有可執(zhí)行指令,以及一個或多個處理器,執(zhí)行所述可執(zhí)行指令用于實現如上所述的方法。

本公開的另一方面提供了一種非易失性存儲介質,存儲有計算機可執(zhí)行指令,所述指令在被執(zhí)行時用于實現如上所述的方法。

本公開的另一方面提供了一種計算機程序,所述計算機程序包括計算機可執(zhí)行指令,所述指令在被執(zhí)行時用于實現如上所述的方法。

附圖說明

為了更完整地理解本公開及其優(yōu)勢,現在將參考結合附圖的以下描述,其中:

圖1示意性示出了根據本公開實施例的數據傳輸方法和數據接收方法的應用場景;

圖2示意性示出了根據本公開實施例的用于多個節(jié)點中每個節(jié)點的數據傳輸和數據接收方法的流程圖;

圖3a示意性示出了根據本公開實施例的第一參數示意圖;

圖3b示意性示出了根據本公開實施例的返回數據示意圖;

圖3c示意性示出了根據本公開實施例的數據包示意圖;

圖3d示意性示出了根據本公開另一實施例的數據包示意圖;

圖4示意性示出了根據本公開實施例的數據傳輸系統(tǒng)和數據接收系統(tǒng)的框圖;

圖5a示意性示出了根據本公開實施例的數據處理模塊的框圖;

圖5b示意性示出了根據本公開實施例的數據包生成模塊的框圖;

圖5c示意性示出了根據本公開實施例的返回數據生成模塊的框圖;以及

圖6示意性示出了根據本公開另一實施例的數據傳輸系統(tǒng)和/或數據接收系統(tǒng)的框圖。

具體實施方式

以下,將參照附圖來描述本公開的實施例。但是應該理解,這些描述只是示例性的,而并非要限制本公開的范圍。此外,在以下說明中,省略了對公知結構和技術的描述,以避免不必要地混淆本公開的概念。

在此使用的術語僅僅是為了描述具體實施例,而并非意在限制本公開。這里使用的詞語“一”、“一個(種)”和“該”等也應包括“多個”、“多種”的意思,除非上下文另外明確指出。此外,在此使用的術語“包括”、“包含”等表明了所述特征、步驟、操作和/或部件的存在,但是并不排除存在或添加一個或多個其他特征、步驟、操作或部件。

在此使用的所有術語(包括技術和科學術語)具有本領域技術人員通常所理解的含義,除非另外定義。應注意,這里使用的術語應解釋為具有與本說明書的上下文相一致的含義,而不應以理想化或過于刻板的方式來解釋。

附圖中示出了一些方框圖和/或流程圖。應理解,方框圖和/或流程圖中的一些方框或其組合可以由計算機程序指令來實現。這些計算機程序指令可以提供給通用計算機、專用計算機或其他可編程數據處理裝置的處理器,從而這些指令在由該處理器執(zhí)行時可以創(chuàng)建用于實現這些方框圖和/或流程圖中所說明的功能/操作的裝置。

因此,本公開的技術可以硬件和/或軟件(包括固件、微代碼等)的形式來實現。另外,本公開的技術可以采取存儲有指令的計算機可讀介質上的計算機程序產品的形式,該計算機程序產品可供指令執(zhí)行系統(tǒng)使用或者結合指令執(zhí)行系統(tǒng)使用。在本公開的上下文中,計算機可讀介質可以是能夠包含、存儲、傳送、傳播或傳輸指令的任意介質。例如,計算機可讀介質可以包括但不限于電、磁、光、電磁、紅外或半導體系統(tǒng)、裝置、器件或傳播介質。計算機可讀介質的具體示例包括:磁存儲裝置,如磁帶或硬盤(hdd);光存儲裝置,如光盤(cd-rom);存儲器,如隨機存取存儲器(ram)或閃存;和/或有線/無線通信鏈路。

隨著電子技術的高速發(fā)展,各類非結構化數據,如圖片、音視頻、以及文本資料等呈現出爆炸性增長的趨勢,這些數據在網絡傳輸的過程中網絡寬帶占用比很高。研究表明,在網絡上傳輸的數據高達50%的部分是重復的,網絡帶寬利用率不高的一個重要原因就是數據傳輸中存在大量的重復和冗余。

本公開的實施例提供了一種數據傳輸方法,包括:獲取待發(fā)送數據。對所述待發(fā)送數據進行處理,得到表征所述待發(fā)送數據的第一參數。將所述第一參數發(fā)送給至少一個數據節(jié)點。從所述數據節(jié)點接收針對所述第一參數的返回數據,所述返回數據指示所述數據節(jié)點中已經存在的待發(fā)送數據的至少一部分?;谒龇祷財祿?,生成數據包,所述數據包不攜帶所述數據節(jié)點中已經存在的待發(fā)送數據的所述至少一部分。然后向所述數據節(jié)點發(fā)送所述生成的數據包。

本公開的另一個實施例提供了一種數據接收方法,包括:接收來自至少一個數據節(jié)點的第一參數,所述第一參數表征所述數據節(jié)點的待發(fā)送數據。針對所述第一參數,生成返回數據,所述返回數據指示本地已經存在的所述待發(fā)送數據的至少一部分。將所述返回數據發(fā)送給所述數據節(jié)點。然后接收來自所述數據節(jié)點的數據包,所述數據包不攜帶所述本地已經存在的所述待發(fā)送數據的所述至少一部分。

圖1示意性示出了根據本公開的實施例的數據傳輸方法和數據接收方法的應用場景。

如圖1所示,數據節(jié)點a、數據節(jié)點b、數據節(jié)點c、數據節(jié)點d和數據節(jié)點e可以通過根據本公開的數據傳輸方法和數據接收方法來彼此傳輸數據??梢岳斫?,雖然這里示出了五個數據節(jié)點,但本公開的實施例可以應用于更多或更少的數據節(jié)點。另外,雖然這里示出了任一數據節(jié)點與其他的四個數據節(jié)點彼此傳輸數據,但任一數據節(jié)點也可以和其他一個、兩個、或三個數據節(jié)點彼此傳輸數據。通過本公開的實施例,可以實現多個數據節(jié)點之間的數據發(fā)送、數據傳輸、以及數據接收等。

根據本公開實施例,數據節(jié)點擁有自己的獨立地址,并且可以與具有傳輸或接收數據功能的網絡相連。數據節(jié)點可以是工作站、智能電話、計算機、服務器、打印機或者其他可以與網絡相連的設備

下面參考圖2,以兩個數據節(jié)點(例如圖1所示數據節(jié)點a和數據節(jié)點b)彼此傳輸數據為例說明根據本公開的實施例的數據傳輸方法和數據接收方法。但是可以理解,本公開的實施例的方法也適用于包含更多或更少數據節(jié)點的場景。

圖2示意性示出了根據本公開的實施例的用于多個節(jié)點中每個節(jié)點的數據傳輸和數據接收方法的流程圖。

如圖2所示,應用于數據節(jié)點a的數據傳輸方法包括操作s110-s160,應用于數據節(jié)點b的數據接收方法包括操作s210-s250。

在操作s110,數據節(jié)點a獲取待發(fā)送數據。根據本公開實施例,在獲取待發(fā)送數據之前,數據節(jié)點a與至少一個數據節(jié)點(例如,數據節(jié)點b)根據ip地址或者端口號建立連接。

其中,獲取待發(fā)送數據可以是依據請求獲取,例如,數據節(jié)點b請求數據節(jié)點a發(fā)送指定的數據,則數據節(jié)點a依據數據節(jié)點b的請求獲取該指定數據。

獲取待發(fā)送數據還可以是在特定條件下觸發(fā)獲取。例如,在與數據節(jié)點b建立連接后,觸發(fā)獲取針對數據節(jié)點b的數據,或者在與數據節(jié)點c建立連接后,觸發(fā)獲取針對數據節(jié)點c的數據。即,與不同的節(jié)點建立連接,則獲取不同的待發(fā)送數據。

在操作s120,對待發(fā)送數據進行處理,得到表征該待發(fā)送數據的第一參數。根據本公開實施例,對待發(fā)送數據進行處理得到第一參數,包括,將待發(fā)送數據切分成至少一個數據塊,針對至少一個數據塊中的每個數據塊生成唯一性參數,以及綜合至少一個數據塊中的每個數據塊的唯一性參數得到第一參數。

根據本公開實施例,將待發(fā)送數據切分成至少一個數據塊包括將待發(fā)送數據切分成長度相等的數據塊(例如,將長度為1mb的待發(fā)送數據切分成16個長度為64kb的數據塊)。數據節(jié)點a中數據塊的切分長度與建立連接的數據節(jié)點b的數據塊的切分長度保持一致。例如,在數據節(jié)點b與數據節(jié)點a建立連接后,請求數據節(jié)點a發(fā)送指定數據,數據節(jié)點b中按照每個數據塊64kb長度切分,則數據節(jié)點a按照與數據節(jié)點b相同的長度(64kb)切分指定待發(fā)送數據。本領域技術人員應當理解,數據塊的切分長度不限于上述的64kb,根據待發(fā)送數據的長度,以及傳輸需求,切分長度可以大于或者小于64kb。

根據本公開實施例,將待發(fā)送數據切分成數據塊,可以在對比重復數據時,提高重復數據的確認比例。例如待發(fā)送數據為1mb長,對端節(jié)點包含待發(fā)送數據中的一部分,如果將待發(fā)送數據切分,然后將每一個數據塊與對端節(jié)點進行對比,則可以至少部分確認重復的內容,如果將全部待發(fā)送數據與對端節(jié)點進行對比,則在對端節(jié)點找不到重復的數據。

根據本公開實施例,針對至少一個數據塊中的每個數據塊生成唯一性參數,包括針對每個數據塊計算該數據塊的哈希值作為該數據塊的唯一性參數。計算每個數據塊的哈希值例如可以使用md2、md4、md5、sha-1、以及hmac等算法中的一種或幾種。根據本公開實施例,針對每個數據塊生成唯一性參數還可以包括對每個數據塊計算秘鑰、公鑰等能夠唯一表征該數據塊的方法。每個數據塊的唯一性參數可以唯一表征該數據塊,且占用的帶寬小于數據塊自身的數據內容。

根據本公開實施例,綜合至少一個數據塊中的每個數據塊的唯一性參數得到所述第一參數,包括將每個數據塊的唯一性參數按照相應數據塊在待發(fā)送數據中的順序排列。

例如,可以參見圖3a所示的第一參數的示意圖,如圖3a所示,第一參數可以是包的形式,包括包標題(例如查詢包)、包體長度值(包體長度可以等于待發(fā)送數據切分后得到的數據塊的個數)、以及每一個數據塊的唯一性參數(即,哈希值,hash)。

在操作s130,將所述第一參數發(fā)送給至少一個數據節(jié)點。根據本公開實施例,數據節(jié)點a可以將第一參數發(fā)送給與數據節(jié)點a建立連接的任一個或多個數據節(jié)點。例如,數據節(jié)點a將第一參數發(fā)送給數據節(jié)點b。

在操作s210,數據節(jié)點b接收來自數據節(jié)點a的第一參數,所述第一參數用于表征數據節(jié)點a的待發(fā)送數據。其中,待發(fā)送數據被切分成至少一個數據塊。第一參數包括至少一個數據塊中的每個數據塊的唯一性參數。每個數據塊的唯一性參數包括每個數據塊的哈希值。關于待發(fā)送數據以及第一參數具體可參見上文參考附圖2對步驟s120的描述。根據本公開實施例,數據節(jié)點b在接收到來自數據節(jié)點a發(fā)送的數據時,判斷該數據是否為第一參數,若該數據為第一參數則進行操作s220。

在操作s220,針對第一參數,生成返回數據。其中,返回數據指示數據節(jié)點b已經存在的待發(fā)送數據的至少一部分。

根據本公開實施例,針對第一參數生成返回數據可以包括:根據第一參數,通過查找索引表確定數據節(jié)點b已經存在的待發(fā)送數據的數據塊,以及根據確定結果生成返回數據。其中,索引表記錄數據節(jié)點b已經存在的數據塊的唯一性參數。

返回數據包括確認數據和/或否認數據,確認數據用于指示數據節(jié)點b已經存在的待發(fā)送數據的數據塊,否認數據用于指示數據節(jié)點b不存在的待發(fā)送數據的數據塊。

例如,數據節(jié)點b的緩存中已經存儲的數據塊對應的唯一性參數被記錄在在索引表中。解析第一參數中待發(fā)送數據的每個數據塊對應的唯一性參數,然后將待發(fā)送數據的每個唯一性參數與數據節(jié)點b中索引表記錄的唯一性參數進行對比,查找是否存在相同的唯一性參數得到確認數據以及否認數據。若待發(fā)送數據的數據塊對應的唯一性參數可以在數據節(jié)點b的索引表中找到相同的參數,則該數據塊得到確認數據,否則得到否認數據,結合每個數據塊的確認數據和/或否認數據構建返回數據。

圖3b示意性示出了根據本公開實施例的返回數據示意圖。

如圖3b所示,返回數據可以是包的形式,包括包標題(例如返回包)、包體長度值(包體長度可以等于待發(fā)送數據切分后得到的數據塊的個數)、以及每一個數據塊對應的確認數據和/或否認數據(例如,確認數據用1表示,否認數據用0表示)。

在操作s230,將返回數據發(fā)送給數據節(jié)點a。根據本公開實施例,將返回數據發(fā)送給接收到的第一參數對應的數據節(jié)點。例如,數據節(jié)點b接收來自數據節(jié)點a的第一參數,則將返回數據發(fā)送給數據節(jié)點a。

下面回到圖2結合實施例對數據節(jié)點a接收到來自數據節(jié)點b的返回數據后數據節(jié)點a的操作進行描述。

在操作s140,數據節(jié)點a從數據節(jié)點b接收針對第一參數的返回數據。其中返回數據指示數據節(jié)點b中已經存在的待發(fā)送數據的至少一部分。關于返回數據具體可參見上文參考附圖2對步驟s220的描述。

在操作s150,基于返回數據,生成數據包。其中,數據包不攜帶數據節(jié)點b中已經存在的待發(fā)送數據的至少一部分。

根據本公開實施例,基于返回數據生成數據包可以包括:基于返回數據確定數據節(jié)點b中不存在的待發(fā)送數據的數據塊,以及將確定的數據節(jié)點b中不存在的待發(fā)送數據的數據塊作為凈荷生成數據包。即,將返回數據中否認數據所對應的數據塊的數據內容生成數據包。

例如,圖3c示意性示出了根據本公開實施例的數據包示意圖。

如圖3c所示,數據包可以是包的形式,包括包標提(例如數據包)、包體長度值(包括數據節(jié)點b中不存在的待發(fā)送數據的數據塊個數,以及數據節(jié)點b中不存在的待發(fā)送數據的數據塊的長度)、以及每一個數據節(jié)點b中不存在的待發(fā)送數據的數據塊的數據內容。

根據本公開的實施例,僅將數據節(jié)點b中不存在的數據塊生成數據包發(fā)送給數據節(jié)點b,可以減少發(fā)送內容,降低帶寬占用比。

根據本公開實施例,基于返回數據生成數據包還可以包括:基于返回數據,確定數據節(jié)點b中已經存在的待發(fā)送數據的數據塊的唯一性參數,并且基于返回數據,確定數據節(jié)點b中不存在的待發(fā)送數據的數據塊,以及將數據節(jié)點b中已經存在的待發(fā)送數據的數據塊的唯一性參數和所確定的數據節(jié)點b中不存在的待發(fā)送數據的數據塊作為凈荷生成所述數據包。即,將返回數據中確認數據所對應的數據塊的唯一性參數與返回數據中否認數據所對應的數據塊的數據內容按照相應數據塊在待發(fā)送數據中的順序排列生成數據包。通過本實施例生成的數據包便于數據節(jié)點b的解析和讀取。

例如,圖3d示意性示出了根據本公開另一實施例的數據包示意圖。

如圖3d所示,數據包可以是包的形式,包括包標提(例如數據包)、包體長度值(包括待發(fā)送數據切分后的數據塊個數、數據節(jié)點b中存在的待發(fā)送數據中數據塊的長度、以及數據節(jié)點b中不存在的待發(fā)送數據的數據塊的長度)、以及數據節(jié)點b中存在的待發(fā)送數據的數據塊的唯一性參數和數據節(jié)點b中不存在的待發(fā)送數據的數據塊的數據內容。

在操作s160,數據節(jié)點a向數據節(jié)點b發(fā)送生成的數據包。

在操作s240,數據節(jié)點b接收來自數據節(jié)點a的數據包,該數據包不攜帶數據節(jié)點b已經存在的待發(fā)送數據的至少一部分。關于數據包具體可參見上文參考附圖2對步驟s150的描述。

根據本公開實施例,數據節(jié)點b在接收到來自數據節(jié)點a發(fā)送的數據時,判斷該數據是否為數據包,若該數據為數據包則進行操作s250,若該數據為第一參數則進行操作s220。

在操作s250,根據所接收的數據包以及本地已經存在的數據,恢復待發(fā)送數據。根據本公開實施例,在數據節(jié)點b的索引表中查找數據包中的唯一性參數或者返回數據中確認數據對應的數據塊的唯一性參數對應的數據塊的地址,從地址中提取該數據塊的數據內容,結合數據包中的數據內容恢復待發(fā)送數據。其中,從數據節(jié)點b的存儲地址中提取到的數據塊的數據內容和數據包中由數據節(jié)點a發(fā)送來的數據塊的數據內容按照相應數據塊在待發(fā)送數據中的順序排列以恢復待發(fā)送數據。

根據本公開實施例,數據節(jié)點b在內存中緩存所接收的數據包中攜帶的數據塊,并且將所緩存的數據塊的唯一性參數加入索引表。數據節(jié)點b在接收到來自數據節(jié)點a的數據包后,將數據包中表示真實數據的數據塊存儲在內存中,并且將該些數據塊對應的唯一性參數記錄在數據節(jié)點b的索引表中。以便增加并更新數據節(jié)點b已有的數據塊內容和該些數據塊對應的唯一性參數。

根據本公開實施例,當索引表中記錄的唯一性參數超出窗口容量時,從索引表中移除超出窗口的數據塊的唯一性參數,以及從內存中釋放所移除的唯一性參數對應的數據塊。當數據節(jié)點b中的索引表中存儲的唯一性參數已經超出索引表的存儲范圍時,根據預設條件移除其中一些唯一性參數,被移除的唯一性參數對應的數據塊的數據內容也從內存中釋放。預設條件例如可以是匹配次數低于某一閾值,也可以是調用次數低于某一閾值,還可以是記錄時間大于某一閾值等。通過本實施例的方法,可以剔除一些不常被引用的數據塊,減輕存儲壓力。

本公開實施例提供的數據傳輸方法和數據接收方法,在數據傳輸的過程中,充分考慮數據的重復性,通過僅傳輸不重復的數據既不影響數據的完整性,又可以降低網絡帶寬占用比。

圖4示意性示出了根據本公開的實施例的數據傳輸系統(tǒng)400和數據接收系統(tǒng)500的框圖。

如圖4所示,數據傳輸系統(tǒng)400包括數據獲取模塊410、數據處理模塊420、參數發(fā)送模塊430、數據接收模塊440、數據包生成模塊450以及數據包發(fā)送模塊460。數據接收系統(tǒng)500包括參數接收模塊510、返回數據生成模塊520、發(fā)送模塊530、數據包接收模塊540、數據恢復模塊550、添加模塊560、參數移除模塊570以及數據釋放模塊580。數據傳輸系統(tǒng)400和數據接收系統(tǒng)500可以執(zhí)行上面參考圖2描述的方法,以實現多個數據節(jié)點之間的數據傳輸。

具體地,數據獲取模塊410,用于獲取待發(fā)送數據。根據本公開實施例,數據讀取模塊410例如可以執(zhí)行上文參考圖2描述的操作s110。

數據處理模塊420,用于對待發(fā)送數據進行處理,得到表征待發(fā)送數據的第一參數。根據本公開實施例,數據處理模塊420例如可以執(zhí)行上文參考圖2描述的操作s120。

參數發(fā)送模塊430,用于將所述第一參數發(fā)送給至少一個數據節(jié)點。根據本公開實施例,參數發(fā)送模塊430例如可以執(zhí)行上文參考圖2描述的操作s130。例如數據傳輸系統(tǒng)400的參數發(fā)送模塊430將第一參數發(fā)送給數據接收系統(tǒng)500的參數接收模塊510。

數據接收模塊510,用于接收來自至少一個數據節(jié)點(例如,數據傳輸系統(tǒng)400)的第一參數,該第一參數表征該數據節(jié)點的待發(fā)送數據。其中,待發(fā)送數據被切分成至少一個數據塊,以及第一參數包括至少一個數據塊中的每個數據塊的唯一性參數,每個數據塊的唯一性參數包括每個數據塊的哈希值。根據本公開實施例,數據接收模塊510例如可以執(zhí)行上文參考圖2描述的操作s210。

返回數據生成模塊520,用于針對第一參數,生成返回數據。其中,返回數據指示本地已經存在的待發(fā)送數據的至少一部分。根據本公開實施例,返回數據生成模塊520例如可以執(zhí)行上文參考圖2描述的操作s220。

發(fā)送模塊530,用于將返回數據發(fā)送給數據節(jié)點(例如,數據傳輸系統(tǒng)400)。根據本公開實施例,發(fā)送模塊530例如可以執(zhí)行上文參考圖2描述的操作s230。例如,數據接收系統(tǒng)500的發(fā)送模塊530將返回數據發(fā)送給數據傳輸系統(tǒng)400的數據接收模塊440。

數據接收模塊440,用于從數據節(jié)點(例如,數據接收系統(tǒng)500)接收針對第一參數的返回數據。其中,返回數據指示數據節(jié)點中已經存在的待發(fā)送數據的至少一部分。根據本公開實施例,數據接收模塊440例如可以執(zhí)行上文參考圖2描述的操作s140。

數據包生成模塊450,用于基于返回數據,生成數據包。其中,數據包不攜帶對端數據節(jié)點中已經存在的待發(fā)送數據的至少一部分。根據本公開實施例,數據包生成模塊450例如可以執(zhí)行上文參考圖2描述的操作s150。

數據包發(fā)送模塊460,用于向對端數據節(jié)點發(fā)送生成的數據包。根據本公開實施例,數據包發(fā)送模塊460例如可以執(zhí)行上文參考圖2描述的操作s160。例如,數據傳輸系統(tǒng)400的數據包發(fā)送模塊460將數據包發(fā)送給數據接收系統(tǒng)500的數據包接收模塊540。

數據包接收模塊540,用于接收來自對端數據節(jié)點的數據包,該數據包不攜帶本地已經存在的待發(fā)送數據的至少一部分。根據本公開實施例,數據包接收模塊540例如可以執(zhí)行上文參考圖2描述的操作s240。

數據恢復模塊550,用于根據所接收的數據包以及本地已經存在的數據,恢復待發(fā)送數據。根據本公開實施例,數據恢復模塊550例如可以執(zhí)行上文參考圖2描述的操作s250。

添加模塊560,用于在內存中緩存所接收的數據包中攜帶的數據塊,并且將所緩存的數據塊的唯一性參數加入索引表。

參數移除模塊570,用于從索引表中移除超出窗口的數據塊的唯一性參數。

數據釋放模塊580,用于從內存中釋放所移除的唯一性參數對應的數據塊。

其中,如圖5a所示,數據處理模塊420包括數據切分單元421、唯一性參數生成單元422以及第一參數生成單元423。

數據切分單元421,用于將待發(fā)送數據切分成至少一個數據塊。

唯一性參數生成單元422,用于針對至少一個數據塊中的每個數據塊,生成唯一性參數。具體地,針對每個數據塊計算該數據塊的哈希值,作為該數據塊的唯一性參數。

第一參數生成單元423,用于綜合至少一個數據塊中的每個數據塊的唯一性參數得到第一參數。

其中,如圖5b所示,數據包生成模塊450包括第一確定單元451、第二確定單元452以及生成單元453。

第一確定單元451,用于基于返回數據,確定對端數據節(jié)點中不存在的待發(fā)送數據的數據塊。

第二確定模塊452,用于基于返回數據,確定對端數據節(jié)點中已經存在的待發(fā)送數據的數據塊的唯一性參數。

生成單元453,用于將確定的對端數據節(jié)點中不存在的待發(fā)送數據的數據塊作為凈荷生成數據包,或者用于將對端數據節(jié)點中已經存在的待發(fā)送數據的數據塊的唯一性參數和所確定的對端數據節(jié)點中不存在的待發(fā)送數據的數據塊作為凈荷生成數據包。

其中,如圖5c所示,返回數據生成模塊520包括確定單元521、生成單元522。

確定單元521,用于根據第一參數,通過查找索引表確定本地已經存在的待發(fā)送數據的數據塊,其中索引表記錄本地已經存在的數據塊的唯一性參數。返回數據包括確認數據和/或否認數據,確認數據用于指示本地已經存在的待發(fā)送數據的數據塊,否認數據用于指示本地不存在的待發(fā)送數據的數據塊。

生成單元522,用于根據確定結果,生成返回數據。

本公開實施例提供的數據傳輸系統(tǒng)和數據接收系統(tǒng),在數據傳輸的過程中,充分考慮數據的重復性,通過僅傳輸不重復的數據既不影響數據的完整性,又可以降低網絡帶寬占用比。

可以理解的是,數據獲取模塊410、數據處理模塊420、參數發(fā)送模塊430、數據接收模塊440、數據包生成模塊450以及數據包發(fā)送模塊460可以合并在一個模塊中實現,或者其中的任意一個模塊可以被拆分成多個模塊?;蛘撸@些模塊中的一個或多個模塊的至少部分功能可以與其他模塊的至少部分功能相結合,并在一個模塊中實現。根據本發(fā)明的實施例,數據獲取模塊410、數據處理模塊420、參數發(fā)送模塊430、數據接收模塊440、數據包生成模塊450以及數據包發(fā)送模塊460中的至少一個可以至少被部分地實現為硬件電路,例如現場可編程門陣列(fpga)、可編程邏輯陣列(pla)、片上系統(tǒng)、基板上的系統(tǒng)、封裝上的系統(tǒng)、專用集成電路(asic),或可以以對電路進行集成或封裝的任何其他的合理方式等硬件或固件來實現,或以軟件、硬件以及固件三種實現方式的適當組合來實現。或者,數據獲取模塊410、數據處理模塊420、參數發(fā)送模塊430、數據接收模塊440、數據包生成模塊450以及數據包發(fā)送模塊460中的至少一個可以至少被部分地實現為計算機程序模塊,當該程序被計算機運行時,可以執(zhí)行相應模塊的功能。

可以理解的是,數據接收系統(tǒng)500的參數接收模塊510、返回數據生成模塊520、發(fā)送模塊530、數據包接收模塊540、數據恢復模塊550、添加模塊560、參數移除模塊570以及數據釋放模塊580也符合上述描述,在此不再贅述。

圖6示意性示出了根據本公開的另一實施例的數據傳輸系統(tǒng)和/或數據接收系統(tǒng)的框圖。

如圖6所示,數據傳輸系統(tǒng)和/或數據接收系統(tǒng)600包括處理器610、計算機可讀存儲介質620、信號發(fā)送器630、以及信號接收器640。該數據傳輸系統(tǒng)可以執(zhí)行上面參考圖2描述的數據節(jié)點a執(zhí)行的操作s110-s160,數據接收系統(tǒng)可以執(zhí)行上面參考圖2描述的數據節(jié)點b執(zhí)行的操作s210-s250,以實現多個數據節(jié)點之間的數據傳輸。

具體地,處理器610例如可以包括通用微處理器、指令集處理器和/或相關芯片組和/或專用微處理器(例如,專用集成電路(asic)),等等。處理器610還可以包括用于緩存用途的板載存儲器。處理器610可以是用于執(zhí)行參考圖2~圖3d描述的根據本公開實施例的方法流程的不同動作的單一處理單元或者是多個處理單元。

計算機可讀存儲介質620,例如可以是能夠包含、存儲、傳送、傳播或傳輸指令的任意介質。例如,可讀存儲介質可以包括但不限于電、磁、光、電磁、紅外或半導體系統(tǒng)、裝置、器件或傳播介質。可讀存儲介質的具體示例包括:磁存儲裝置,如磁帶或硬盤(hdd);光存儲裝置,如光盤(cd-rom);存儲器,如隨機存取存儲器(ram)或閃存;和/或有線/無線通信鏈路。

計算機可讀存儲介質620可以包括計算機程序621,該計算機程序621可以包括代碼/計算機可執(zhí)行指令,其在由處理器610執(zhí)行時使得處理器610執(zhí)行例如上面結合圖2~圖3d所描述的方法流程及其任何變形。

計算機程序621可被配置為具有例如包括計算機程序模塊的計算機程序代碼。例如,在示例實施例中,計算機程序621中的代碼可以包括一個或多個程序模塊,例如包括621a、模塊621b、……。應當注意,模塊的劃分方式和個數并不是固定的,本領域技術人員可以根據實際情況使用合適的程序模塊或程序模塊組合,當這些程序模塊組合被處理器610執(zhí)行時,使得處理器610可以執(zhí)行例如上面結合圖2~圖3d所描述的方法流程及其任何變形。

根據本發(fā)明的實施例,數據傳輸系統(tǒng)400的數據獲取模塊410、數據處理模塊420、參數發(fā)送模塊430、數據接收模塊440、數據包生成模塊450以及數據包發(fā)送模塊460,和/或數據接收系統(tǒng)500的參數接收模塊510、返回數據生成模塊520、發(fā)送模塊530、數據包接收模塊540、數據恢復模塊550、添加模塊560、參數移除模塊570以及數據釋放模塊580中的至少一個可以實現為參考圖6描述的計算機程序模塊,其在被處理器610執(zhí)行時,可以實現上面描述的相應操作。

盡管已經參照本公開的特定示例性實施例示出并描述了本公開,但是本領域技術人員應該理解,在不背離所附權利要求及其等同物限定的本公開的精神和范圍的情況下,可以對本公開進行形式和細節(jié)上的多種改變。因此,本公開的范圍不應該限于上述實施例,而是應該不僅由所附權利要求來進行確定,還由所附權利要求的等同物來進行限定。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1