本發(fā)明涉及數(shù)據(jù)傳輸
技術(shù)領(lǐng)域:
,尤其涉及一種數(shù)據(jù)發(fā)送方法及數(shù)據(jù)合并設(shè)備。
背景技術(shù):
:目前,在一些數(shù)據(jù)處理系統(tǒng)中需要頻繁地進行數(shù)據(jù)傳輸,以兩地三中心的數(shù)據(jù)容災(zāi)備份系統(tǒng)為例,為了讓備份數(shù)據(jù)中心及時感知主數(shù)據(jù)中心的運行狀態(tài),主數(shù)據(jù)中心需要周期性地向備份數(shù)據(jù)中心發(fā)送心跳消息,以及,為了確保數(shù)據(jù)能夠及時地通過備份數(shù)據(jù)中心進行備份,主數(shù)據(jù)中心還會將更新的數(shù)據(jù)實時地發(fā)送給備份數(shù)據(jù)中心??梢钥闯?,主數(shù)據(jù)中心和備份數(shù)據(jù)中心之間數(shù)據(jù)傳輸比較頻繁,傳輸?shù)臄?shù)據(jù)包的數(shù)量也較多,而在用于進行數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)帶寬受限情況下,數(shù)據(jù)包的個數(shù)越多,網(wǎng)絡(luò)擁塞的可能性也越高,進而導(dǎo)致數(shù)據(jù)傳輸?shù)男室苍降?。技術(shù)實現(xiàn)要素:本發(fā)明實施例提供一種數(shù)據(jù)發(fā)送方法及數(shù)據(jù)合并設(shè)備,用以提高數(shù)據(jù)傳輸?shù)男?。第一方面,提供一種數(shù)據(jù)發(fā)送方法,該方法可以應(yīng)用于數(shù)據(jù)合并設(shè)備。在該方法中,數(shù)據(jù)合并設(shè)備在接收發(fā)送設(shè)備發(fā)送的m個數(shù)據(jù)包后,可以先按照數(shù)據(jù)包的消息類型將m個數(shù)據(jù)包劃分為至少一個類別,再按照所劃分的類別,將m個數(shù)據(jù)包合成n個數(shù)據(jù)包,進而再將n個數(shù)據(jù)包發(fā)送給數(shù)據(jù)拆分設(shè)備。其中,m為大于1的整數(shù),m個數(shù)據(jù)包為發(fā)送設(shè)備發(fā)送給接收設(shè)備的數(shù)據(jù)包,發(fā)送設(shè)備和接收設(shè)備之間通過一致性協(xié)議傳輸數(shù)據(jù),n個數(shù)據(jù)包中的每個數(shù)據(jù)包至少包括用于指示其中一個類別的全部數(shù)據(jù)包的信息,而數(shù)據(jù)拆分設(shè)備用于 將n個數(shù)據(jù)包拆分為m個數(shù)據(jù)包,并將m個數(shù)據(jù)包發(fā)送給對應(yīng)的接收設(shè)備。本發(fā)明實施例中,數(shù)據(jù)合并設(shè)備在接收多個(例如m個)數(shù)據(jù)包后,可以先對多個數(shù)據(jù)包按照消息類型進行分類,在進行分類之后,同一類別所包括的數(shù)據(jù)包都具有相同的消息格式,可以便于對同類數(shù)據(jù)包進行管理,例如可以便于對數(shù)據(jù)包進行合成處理。進一步地,可以按照所劃分的類別,將m個數(shù)據(jù)包合成n個數(shù)據(jù)包,由于n小于m,即通過合成的方式可以減少數(shù)據(jù)包的數(shù)量,并發(fā)送合成后的n個數(shù)據(jù)包,例如發(fā)送給數(shù)據(jù)拆分設(shè)備,對于相同的網(wǎng)絡(luò)帶寬來說,由于傳輸?shù)臄?shù)據(jù)包的個數(shù)減少了,那么可以在一定程度上降低網(wǎng)絡(luò)傳輸?shù)膿砣潭?,從而可以提高?shù)據(jù)傳輸?shù)男?,提高網(wǎng)絡(luò)質(zhì)量,盡量確保發(fā)送設(shè)備和接收設(shè)備之間可以高效地進行數(shù)據(jù)傳輸。結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,數(shù)據(jù)合并設(shè)備按照所劃分的類別,將m個數(shù)據(jù)包合成n個數(shù)據(jù)包,包括:分別將至少一個類別中的每個類別所對應(yīng)的數(shù)據(jù)包所攜帶的信息進行壓縮后添加到一個數(shù)據(jù)包以獲得至少一個數(shù)據(jù)包,再將至少一個數(shù)據(jù)包合成n個數(shù)據(jù)包。本發(fā)明實施例中,在合成的過程中還可以對數(shù)據(jù)包進行壓縮,經(jīng)過壓縮后可以減少傳輸?shù)臄?shù)據(jù)量,以進一步地提高傳輸效率??蛇x的,可以將每個類別所對應(yīng)的數(shù)據(jù)包所攜帶的信息進行壓縮后添加到一個數(shù)據(jù)包中,相當(dāng)于是將一個類別所包括的數(shù)據(jù)包進行聯(lián)合壓縮,由于同一類別所包括的數(shù)據(jù)包的消息格式相同,將它們進行聯(lián)合壓縮的話可以根據(jù)相同的消息格式而進行快捷的壓縮,以提高壓縮的效率。在進行聯(lián)合壓縮時,可以先創(chuàng)建一個數(shù)據(jù)包,再將每個類別所對應(yīng)的數(shù)據(jù)包所攜帶的信息進行壓縮后添加到新創(chuàng)建的數(shù)據(jù)包中,以實現(xiàn)數(shù)據(jù)包的壓縮重組,可替換的,還可以直接在一個類別所包括的一個數(shù)據(jù)包(例如第一數(shù)據(jù)包)的基礎(chǔ)上,將該類別所包括的其它數(shù)據(jù)包的信息與第一數(shù)據(jù)包所攜帶的信息進行壓縮后再添加到第一數(shù)據(jù)包中。在具體實施過程中,例如可以采用差分編碼對數(shù)據(jù)包進行壓縮,即采用差分壓縮方式對數(shù)據(jù)包進行壓縮處理,或者還可以采用其它能夠用于對數(shù)據(jù)包進行壓縮處理的方法,等等。結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能實現(xiàn)的方式中,數(shù)據(jù)合并設(shè)備在分別將至少一個類別中的每個類別所對應(yīng)的數(shù)據(jù)包所攜帶的信息進行壓縮后添加到一個數(shù)據(jù)包之前,還包括:分別對每個類別所對應(yīng)的數(shù)據(jù)包按照數(shù)據(jù)包所包括的全部字段或部分字段的取值進行排序,進一步地根據(jù)排序結(jié)果,分別將每個類別所對應(yīng)的數(shù)據(jù)包所攜帶的信息進行壓縮后添加到一個數(shù)據(jù)包。本發(fā)明實施例中,在進行壓縮之前,可以先對需要進行壓縮的多個數(shù)據(jù)包進行排序,這樣可以便于在進行差分運算時盡量較少數(shù)據(jù)包與數(shù)據(jù)包之間的差分量,以盡量減少數(shù)據(jù)量,可以提高壓縮的壓縮率。結(jié)合第一方面的第二種可能實現(xiàn)的方式,在第一方面的第三種可能實現(xiàn)的方式中,數(shù)據(jù)合并設(shè)備分別對每個類別所對應(yīng)的數(shù)據(jù)包按照數(shù)據(jù)包所包括的全部字段或部分字段的取值進行排序,包括:分別獲取每個類別中的每個數(shù)據(jù)包的全部字段或部分字段的取值,再按照數(shù)據(jù)包的全部字段或部分字段的取值大小對每個類別所對應(yīng)的數(shù)據(jù)包進行排序??蛇x的,可以將用于表征一個字段內(nèi)所包括的字段信息的二進制序列看作是該字段的取值。另外,可以將全部字段或部分字段按照從高位到低位的順序進行排序以獲得數(shù)據(jù)包的取值??蛇x的,數(shù)據(jù)合并設(shè)備可以獲取每個數(shù)據(jù)包的全部字段取值,以便獲得該數(shù)據(jù)包所包括的全部字段的二進制序列??蛇x的,還可以獲取每個數(shù)據(jù)包所包括的部分字段的取值,由于同一類別的多個數(shù)據(jù)包具有相同的消息格式,可以認(rèn)為每個數(shù)據(jù)包的包頭中的用于表明消息類型的字段(例如type字段)的二進制序列是相同的,此時能夠盡量減少差分量的計算,可以直接分別獲取各個數(shù)據(jù)包的部分字段的取值,而部分字段 例如可以是指除去type字段的其余字段。本發(fā)明實施例中,在進行排序之后,可以盡量減少相鄰兩個數(shù)據(jù)包之間的差異,這樣在進行差分運算的時候,可以盡量減少相鄰兩個數(shù)據(jù)包之間的差分量,進而可有減少傳輸?shù)臄?shù)據(jù)量,以提升數(shù)據(jù)傳輸?shù)乃俾?。結(jié)合第一方面的第二種或第三種可能實現(xiàn)的方式,在第一方面的第四種可能實現(xiàn)的方式中,所述合并設(shè)備根據(jù)排序結(jié)果,分別將每個類別所對應(yīng)的數(shù)據(jù)包所攜帶的信息進行壓縮后添加到一個數(shù)據(jù)包,包括:按照排序后的數(shù)據(jù)包的排列順序,對每個類別所對應(yīng)的數(shù)據(jù)包中每兩個相鄰的數(shù)據(jù)包進行差分運算,共獲得q個差分量,再將每個類別所對應(yīng)的數(shù)據(jù)包中按照排序后的首個數(shù)據(jù)包或最后一個數(shù)據(jù)包,以及q個差分量添加到所述一個數(shù)據(jù)包,q為正整數(shù)。本發(fā)明實施例中,按照排序后的排序順序?qū)Χ鄠€數(shù)據(jù)包進行差分運算,以獲得多個差分量,進而可以將進行差分運算的基準(zhǔn)數(shù)據(jù)包(例如排序后的首個數(shù)據(jù)包或最后一個數(shù)據(jù)包)和多個差分量添加到一個數(shù)據(jù)包中,那么存儲有基準(zhǔn)數(shù)據(jù)包和多個差分量的這個數(shù)據(jù)包即為進行壓縮后獲得的數(shù)據(jù)包。結(jié)合第一方面或第一方面的第一種至第四種可能實現(xiàn)的方式,在第一方面的第五種可能實現(xiàn)的方式中,在將m個數(shù)據(jù)包合成n個數(shù)據(jù)包之前,還包括:數(shù)據(jù)合并設(shè)備確定m個數(shù)據(jù)包的個數(shù)達到預(yù)定個數(shù),或,確定m個數(shù)據(jù)包的總數(shù)據(jù)量大于等于預(yù)定數(shù)據(jù)量,或,確定到達預(yù)定時刻。在本發(fā)明實施例中,在將m個數(shù)據(jù)包合成n個數(shù)據(jù)包之前,數(shù)據(jù)合并設(shè)備還可以先判斷是否滿足預(yù)定合成條件,其中,預(yù)定合成條件為用于觸發(fā)數(shù)據(jù)合并設(shè)備對接收到的m個數(shù)據(jù)包進行合成的條件,也就是說,可以將預(yù)定合成條件看作是觸發(fā)數(shù)據(jù)合并設(shè)備對接收到的m個數(shù)據(jù)包進行合成的觸發(fā)條件。本發(fā)明實施例中,通過先判斷是否滿足預(yù)定合成條件,可以確保合成的及時性,使得數(shù)據(jù)合并設(shè)備能夠及時地將接收的數(shù)據(jù)包進行合成后及時進行傳輸,同時,還可以確保合成的必要性,例如需要數(shù)據(jù)包達到預(yù)定個數(shù)時才進行合成,這樣可以盡量降低數(shù)據(jù)合并設(shè)備的處理負(fù)荷,提升數(shù)據(jù)合并設(shè)備的性能??蛇x的,在確定m個數(shù)據(jù)包的個數(shù)達到預(yù)定個數(shù)時進行合成,可以使得發(fā)送設(shè)備所發(fā)送的數(shù)據(jù)包能夠及時地傳輸?shù)綄?yīng)的接收設(shè)備。可選的,在確定m個數(shù)據(jù)包的數(shù)據(jù)量大于等于預(yù)定數(shù)據(jù)量時進行合成,這樣可以確保數(shù)據(jù)傳輸?shù)募皶r性,同時,通過將m個數(shù)據(jù)包的總數(shù)據(jù)量與預(yù)定數(shù)據(jù)量進行比較,還可以盡量滿足數(shù)據(jù)合并設(shè)備對數(shù)據(jù)的傳輸要求,使得數(shù)據(jù)合并設(shè)備通過一次合成即可以將m個數(shù)據(jù)包全部發(fā)送給數(shù)據(jù)拆分設(shè)備,保證數(shù)據(jù)傳輸?shù)臅r效性??蛇x的,在確定到達預(yù)定時刻時進行合成,可以在減少數(shù)據(jù)包的個數(shù)的基礎(chǔ)上,盡量保證數(shù)據(jù)傳輸?shù)募皶r性和時效性。第二方面,提供一種數(shù)據(jù)合并設(shè)備,該數(shù)據(jù)合并設(shè)備包括接收模塊、分類模塊、合成模塊和發(fā)送模塊,數(shù)據(jù)合并設(shè)備所包括的模塊用于執(zhí)行第一方面中所述的數(shù)據(jù)發(fā)送方法。第三方面,提供一種數(shù)據(jù)合并設(shè)備,在一個可能的設(shè)計中,該數(shù)據(jù)合并設(shè)備的結(jié)構(gòu)中包括處理器、接收器和發(fā)送器,所述處理器被配置為支持?jǐn)?shù)據(jù)合并設(shè)備執(zhí)行第一方面中的數(shù)據(jù)發(fā)送方法中相應(yīng)的功能。所述接收器用于接收發(fā)送設(shè)備發(fā)送的m個數(shù)據(jù)包,所述發(fā)送器用于將所述處理器將對所述m個數(shù)據(jù)包進行合成而獲得的n個數(shù)據(jù)包發(fā)送給數(shù)據(jù)拆分設(shè)備。所述數(shù)據(jù)合并設(shè)備還可以包括存儲器,所述存儲器與處理器耦合,用于保存數(shù)據(jù)合并設(shè)備必要的程序指令和數(shù)據(jù)。第四方面,提供一種數(shù)據(jù)發(fā)送方法,該方法可以應(yīng)用于數(shù)據(jù)拆分設(shè)備。在該方法中,數(shù)據(jù)拆分設(shè)備接收數(shù)據(jù)合并設(shè)備發(fā)送的n個數(shù)據(jù)包并將n個數(shù)據(jù)包拆分為m個數(shù)據(jù)包,進而再將m個數(shù)據(jù)包分別發(fā)送給對應(yīng)的接收設(shè)備;其中,m為大于1的整數(shù),n為小于m的整數(shù)。與第一方面中的數(shù)據(jù)發(fā)送方法對應(yīng)地,在第四方面提供的數(shù)據(jù)發(fā)送方法中,數(shù)據(jù)拆分設(shè)備可以采取與數(shù)據(jù)合并設(shè)備對數(shù)據(jù)包進行壓縮對應(yīng)的解壓縮方式對n個數(shù)據(jù)包進行拆分,由于數(shù)據(jù)合并設(shè)備在對m個數(shù)據(jù)包進行壓縮時, 可以采用先排序后再壓縮的方式,這樣可以盡量使得兩個相鄰數(shù)據(jù)包之間的差異盡量小以使得在進行差分運算時獲得的差分量盡量少,那么對應(yīng)的,數(shù)據(jù)拆分設(shè)備采用對應(yīng)的解壓縮方式進行解壓縮時,由于壓縮時的差分量較少,所以解壓縮時需要處理的數(shù)據(jù)量也較少,解壓縮的效率更高,這樣可以降低數(shù)據(jù)拆分設(shè)備的處理負(fù)荷,使得數(shù)據(jù)拆分設(shè)備能夠快速地對n個數(shù)據(jù)包進行拆分還原以獲得原始的m個數(shù)據(jù)包,這樣可以盡量提升數(shù)據(jù)傳輸?shù)募皶r性和時效性。附圖說明為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為兩個數(shù)據(jù)中心之間進行數(shù)據(jù)傳輸?shù)目蚣軋D;圖2為本發(fā)明實施例中在兩個數(shù)據(jù)中心之間設(shè)置數(shù)據(jù)合并設(shè)備的示意圖;圖3為本發(fā)明實施例中數(shù)據(jù)合并設(shè)備和數(shù)據(jù)拆分設(shè)備與數(shù)據(jù)中心之間進行交互的示意圖;圖4為本發(fā)明實施例中數(shù)據(jù)發(fā)送方法的流程圖;圖5為本發(fā)明實施例中包括4個字段的數(shù)據(jù)包的示意圖;圖6a為本發(fā)明實施例中將一個類別的數(shù)據(jù)包合成一個數(shù)據(jù)包的示意圖;圖6b為本發(fā)明實施例中將兩個類別的數(shù)據(jù)包合成一個數(shù)據(jù)包的示意圖;圖7為本發(fā)明實施例中數(shù)據(jù)合并設(shè)備的結(jié)構(gòu)示意圖;圖8為本發(fā)明實施例中數(shù)據(jù)合并設(shè)備的結(jié)構(gòu)框圖。具體實施方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中 的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。另外,本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,a和/或b,可以表示:單獨存在a,同時存在a和b,單獨存在b這三種情況。另外,本文中字符“/”,如無特殊說明,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。下面將結(jié)合說明書附圖以及具體的實施方式對本發(fā)明實施例中的技術(shù)方案進行詳細(xì)的說明。首先對本發(fā)明實施例的應(yīng)用場景作簡要介紹。為了實現(xiàn)數(shù)據(jù)的一致性備份,一些數(shù)據(jù)處理系統(tǒng)需要頻繁地進行數(shù)據(jù)傳輸,例如兩地三中心的數(shù)據(jù)容災(zāi)備份系統(tǒng),為了將主數(shù)據(jù)中心的數(shù)據(jù)及時地通過數(shù)據(jù)備份中心進行備份,主數(shù)據(jù)中心和數(shù)據(jù)備份中心之間一般會頻繁地傳輸數(shù)據(jù),例如主數(shù)據(jù)中心向數(shù)據(jù)備份中心發(fā)送的心跳消息、請求響應(yīng)消息等等,并且,為了實現(xiàn)數(shù)據(jù)的一致性備份,數(shù)據(jù)中心之間一般是基于一致性協(xié)議進行數(shù)據(jù)傳輸,一致性協(xié)議例如是raft協(xié)議或paxos協(xié)議,等等。當(dāng)采用一致性協(xié)議進行數(shù)據(jù)傳輸時,一般具有以下傳輸特性:1、單次傳輸?shù)臄?shù)據(jù)包的數(shù)據(jù)量較小,例如只有37字節(jié)或45字節(jié),為了便于描述,本發(fā)明實施例中將數(shù)據(jù)量較小的數(shù)據(jù)包稱作小數(shù)據(jù)包。2、單位時間內(nèi)傳輸?shù)臄?shù)據(jù)包的個數(shù)較多,單位時間例如可以是指0.5分鐘或者2分鐘,等等。3、數(shù)據(jù)包的類型較少,例如只包括心跳消息和請求響應(yīng)消息兩種類型的消息。例如在0.5分鐘內(nèi)傳輸?shù)?00個數(shù)據(jù)包均是心跳消息,或者在0.5分鐘內(nèi)傳輸?shù)?00個數(shù)據(jù)包只包括信條消息和請求響應(yīng)消息兩類。4、數(shù)據(jù)包和數(shù)據(jù)包之間相互獨立,如果打包發(fā)送的話無需進行保序。例如,有三個數(shù)據(jù)包均需要發(fā)送給接收設(shè)備,那么只要在一定時間內(nèi)將這三個數(shù)據(jù)包發(fā)送給接收設(shè)備即可,而可以無需按照三個數(shù)據(jù)包的生成時刻的先后依次 發(fā)送該三個數(shù)據(jù)包。也就是說,只要在規(guī)定的時間內(nèi)全部發(fā)送給接收設(shè)備即可,可以無需考慮發(fā)送的先后順序。請參見圖1,圖1為兩個數(shù)據(jù)中心間進行數(shù)據(jù)傳輸?shù)氖疽鈭D,假設(shè)數(shù)據(jù)中心a為數(shù)據(jù)容災(zāi)備份系統(tǒng)中的主數(shù)據(jù)中心,數(shù)據(jù)中心b為數(shù)據(jù)容災(zāi)備份系統(tǒng)中的備份數(shù)據(jù)中心,數(shù)據(jù)中心a和數(shù)據(jù)中心b中均分布有多個數(shù)據(jù)節(jié)點,用于進行數(shù)據(jù)的傳輸,而數(shù)據(jù)節(jié)點的具體可以是指如圖1中所示的發(fā)送設(shè)備和接收設(shè)備,可見,數(shù)據(jù)中心a中設(shè)置有發(fā)送設(shè)備1、2、3和4,數(shù)據(jù)中心b中設(shè)置有接收設(shè)備1、2、3和4,數(shù)據(jù)中心a中設(shè)置的任意一個發(fā)送設(shè)備均可以向數(shù)據(jù)中心b中的任意一個接收設(shè)備發(fā)送數(shù)據(jù)。另外,數(shù)據(jù)中心b中的接收設(shè)備同時也可以向數(shù)據(jù)中心a中的發(fā)送設(shè)備發(fā)送數(shù)據(jù),也就是說,數(shù)據(jù)中心a和數(shù)據(jù)中心b之間的電子設(shè)備進行的數(shù)據(jù)傳輸是相互的,其中的任意一個電子設(shè)備,即可以作為數(shù)據(jù)的發(fā)送端,也可以作為數(shù)據(jù)的接收端,而圖1中是為了便于閱讀者理解,僅以數(shù)據(jù)中心a中的電子設(shè)備向數(shù)據(jù)中心b中的電子設(shè)備發(fā)送數(shù)據(jù)為例,所以在圖1中將數(shù)據(jù)中心a中的電子設(shè)備稱作發(fā)送設(shè)備,以及將將數(shù)據(jù)中心b中的電子設(shè)備稱作接收設(shè)備??蛇x的,數(shù)據(jù)中心a和數(shù)據(jù)中心b之間基于一致性協(xié)議傳輸數(shù)據(jù),也即,發(fā)送設(shè)備1-4與接收設(shè)備1-4之間基于一致性協(xié)議傳輸數(shù)據(jù)。根據(jù)基于一致性協(xié)議進行數(shù)據(jù)傳輸?shù)膫鬏斕匦?,?shù)據(jù)中心a在單位時間內(nèi)一般會向數(shù)據(jù)中心b發(fā)送大量的小數(shù)據(jù)包,而在數(shù)據(jù)中心a和數(shù)據(jù)中心b之間進行數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)帶寬一定的情況下,傳輸?shù)臄?shù)據(jù)包的個數(shù)越多,那么網(wǎng)絡(luò)擁塞的可能性也越高,這樣將可能導(dǎo)致數(shù)據(jù)傳輸?shù)男实拖?。鑒于此,本發(fā)明實施例提供一種數(shù)據(jù)合并設(shè)備,設(shè)置于數(shù)據(jù)中心a和數(shù)據(jù)中心b之間,用于將數(shù)據(jù)中心a發(fā)送給數(shù)據(jù)中心b的大量數(shù)據(jù)包進行合成后再發(fā)送給數(shù)據(jù)中心b,例如將50個數(shù)據(jù)包合成1個數(shù)據(jù)包或2個數(shù)據(jù)包后再發(fā)送給數(shù)據(jù)中心b,這樣可以盡量減少傳輸?shù)臄?shù)據(jù)包的個數(shù),以就提高網(wǎng)絡(luò)帶寬的利用率,盡量提高數(shù)據(jù)傳輸?shù)男?。進一步地,由于通過數(shù)據(jù)合并設(shè)備對數(shù)據(jù)包進行合成,為了使得數(shù)據(jù)中心b能夠獲得發(fā)送設(shè)備發(fā)送的原始的數(shù)據(jù)包(即進行合成前的數(shù)據(jù)包),本發(fā)明實施例還提供一種與數(shù)據(jù)合并設(shè)備對應(yīng)的數(shù)據(jù)拆分設(shè)備,數(shù)據(jù)合并設(shè)備可以將合成后的數(shù)據(jù)包發(fā)送給數(shù)據(jù)拆分設(shè)備,而數(shù)據(jù)拆分設(shè)備在接收到合成的數(shù)據(jù)包后,可以對合成的數(shù)據(jù)包進行拆分還原,以獲得原始的數(shù)據(jù)包,并再將拆分后原始數(shù)據(jù)包分別發(fā)送給數(shù)據(jù)中心b中對應(yīng)的接收設(shè)備??梢?,在本發(fā)明實施例中,數(shù)據(jù)合并設(shè)備用于對大量數(shù)據(jù)包進行聚合,而數(shù)據(jù)拆分設(shè)備用于對聚合后的數(shù)據(jù)包進行拆分還原,以達到降低傳輸?shù)臄?shù)據(jù)包的個數(shù)的目的。在具體實施過程中,可以在數(shù)據(jù)中心a和數(shù)據(jù)中心b之間設(shè)置多個數(shù)據(jù)合并設(shè)備,或者也可以只設(shè)置一個數(shù)據(jù)合并設(shè)備。當(dāng)只設(shè)置一個數(shù)據(jù)合并設(shè)備時,那么該數(shù)據(jù)合并設(shè)備負(fù)責(zé)對數(shù)據(jù)中心a中所有的發(fā)送設(shè)備向數(shù)據(jù)中心b所發(fā)送的數(shù)據(jù)包進行合成,這樣可以盡量減少數(shù)據(jù)處理系統(tǒng)中節(jié)點的布置開銷。當(dāng)設(shè)置多個數(shù)據(jù)合并設(shè)備時,其中的每個數(shù)據(jù)合并設(shè)備可以只負(fù)責(zé)與其對應(yīng)的發(fā)送設(shè)備發(fā)送的數(shù)據(jù)包的合成,繼續(xù)以圖1為例,例如可以為發(fā)送設(shè)備1和發(fā)送設(shè)備2分配數(shù)據(jù)合并設(shè)備1,而為發(fā)送設(shè)備3和發(fā)送設(shè)備4分配數(shù)據(jù)合并設(shè)備2,再為其它的發(fā)送設(shè)備分配數(shù)據(jù)合并設(shè)備3,等等。在分配數(shù)據(jù)合并設(shè)備時,可以根據(jù)多個發(fā)送設(shè)備之間的物理距離來確定為哪些發(fā)送設(shè)備分配同一個數(shù)據(jù)合并設(shè)備,例如可以為物理距離相隔較近的幾個發(fā)送設(shè)備分配同一個數(shù)據(jù)合并設(shè)備,這樣可以盡量縮短數(shù)據(jù)傳輸?shù)臅r間,以確保數(shù)據(jù)傳輸?shù)募皶r性。請參見圖2,例如為數(shù)據(jù)中心a中的發(fā)送設(shè)備1、2、3分配同一個數(shù)據(jù)合并設(shè)備,即該數(shù)據(jù)合并設(shè)備負(fù)責(zé)對發(fā)送設(shè)備1、2、3向數(shù)據(jù)中心b(例如數(shù)據(jù)中心b中的接收設(shè)備1、2)發(fā)送的數(shù)據(jù)包進行合成,與該數(shù)據(jù)合并設(shè)備對應(yīng)的,可以設(shè)置一個數(shù)據(jù)拆分設(shè)備。另外,數(shù)據(jù)拆分設(shè)備與數(shù)據(jù)合并設(shè)備的數(shù)量可以相等,即數(shù)據(jù)拆分設(shè)備和 數(shù)據(jù)合并設(shè)備一一對應(yīng),這樣可以保證能夠?qū)铣珊蟮臄?shù)據(jù)包及時地進行拆分,或者,為了盡量減少數(shù)據(jù)系統(tǒng)中物理節(jié)點的布置,數(shù)據(jù)拆分設(shè)備和數(shù)據(jù)合并設(shè)備的數(shù)量也可以不等,例如,三個數(shù)據(jù)合并設(shè)備可以共同使用一個數(shù)據(jù)拆分設(shè)備,即一個數(shù)據(jù)拆分設(shè)備可以同時負(fù)責(zé)對這三個數(shù)據(jù)合并設(shè)備所合成的數(shù)據(jù)包進行拆分。在具體實施過程中,圖2中的數(shù)據(jù)中心a中的發(fā)送設(shè)備、數(shù)據(jù)中心b中的接收設(shè)備、數(shù)據(jù)合并設(shè)備和數(shù)據(jù)拆分設(shè)備可以包括網(wǎng)關(guān),轉(zhuǎn)發(fā)服務(wù)器,交換機,路由器,或普通服務(wù)器等電子設(shè)備,其中,接收設(shè)備、發(fā)送設(shè)備、數(shù)據(jù)合并設(shè)備和數(shù)據(jù)拆分設(shè)備可以是相同的設(shè)備,也可以是不同的設(shè)備。以下以圖3所示的各設(shè)備之間的交互示意圖對本發(fā)明實施例的整個方案進行簡要說明。請參見圖3,數(shù)據(jù)處理系統(tǒng)中可以配置路由數(shù)據(jù)配置模塊,用于對數(shù)據(jù)中心a中的各發(fā)送設(shè)備所發(fā)送數(shù)據(jù)包的路由進行配置,即通過向路由數(shù)據(jù)配置模塊讀取路由配置數(shù)據(jù),可以獲知需要發(fā)送的數(shù)據(jù)包,即可以獲知每個數(shù)據(jù)包的目的地址,也就是說,通過路由數(shù)據(jù)配置模塊,可以獲知數(shù)據(jù)中心a中的每個數(shù)據(jù)包的路由路徑(即傳輸路徑),例如可以獲知每個數(shù)據(jù)包的發(fā)送設(shè)備、傳輸途徑和目的設(shè)備等信息。如圖3中所示,發(fā)送設(shè)備1通過訪問路由數(shù)據(jù)配置模塊以獲得對應(yīng)的路由策略數(shù)據(jù),進而可以根據(jù)路由策略數(shù)據(jù)確定需要向接收設(shè)備1發(fā)送數(shù)據(jù)包1以及需要向接收設(shè)備2發(fā)送數(shù)據(jù)包2,與此類似,發(fā)送設(shè)備2通過訪問路由數(shù)據(jù)配置模塊可以確定需要向接收設(shè)備2發(fā)送數(shù)據(jù)包3。以發(fā)送設(shè)備1發(fā)送數(shù)據(jù)包1為例,發(fā)送設(shè)備1在向數(shù)據(jù)合并設(shè)備發(fā)送數(shù)據(jù)包1之前,可以根據(jù)獲知的路由策略數(shù)據(jù)判斷數(shù)據(jù)包1是在數(shù)據(jù)中心內(nèi)傳輸還是跨數(shù)據(jù)中心傳輸,如果是在數(shù)據(jù)中心內(nèi)傳輸,則可以直接將其發(fā)送到相應(yīng)的目的設(shè)備即可,如果是跨數(shù)據(jù)中心傳輸,則可以進一步判斷數(shù)據(jù)包1是否是小數(shù)據(jù)包。其中,數(shù)據(jù)中心內(nèi)傳輸是指數(shù)據(jù)包1的發(fā)送設(shè)備和接收設(shè)備位于同一 數(shù)據(jù)中心中,例如數(shù)據(jù)包1是由發(fā)送設(shè)備1發(fā)送給發(fā)送設(shè)備2的數(shù)據(jù)包,而跨數(shù)據(jù)中心傳輸是指數(shù)據(jù)包1的發(fā)送設(shè)備和接收設(shè)備位于不同的數(shù)據(jù)中心中,例如數(shù)據(jù)包1是由數(shù)據(jù)中心a中的發(fā)送設(shè)備1發(fā)送給數(shù)據(jù)中心b中的接收設(shè)備1的數(shù)據(jù)包。如果確定是同一數(shù)據(jù)中心內(nèi)的數(shù)據(jù)傳輸,可以直接將其發(fā)送到對應(yīng)的目的設(shè)備即可,由于同一數(shù)據(jù)中心內(nèi)的電子設(shè)備之間的物理位置相隔一般不是太遠(yuǎn),并且根據(jù)一致性協(xié)議傳輸?shù)奶匦钥芍粩?shù)據(jù)中心內(nèi)的數(shù)據(jù)傳輸?shù)臄?shù)據(jù)包的數(shù)量一般較少,所以網(wǎng)絡(luò)擁塞的可能性也較低,所以可以將其直接發(fā)送以保證數(shù)據(jù)傳輸?shù)募皶r性。如果確定是跨數(shù)據(jù)中心的數(shù)據(jù)傳輸,進一步地可以判斷數(shù)據(jù)包1是否是小數(shù)據(jù)包,例如將包括的數(shù)據(jù)量小于等于80字節(jié)的數(shù)據(jù)包看成是小數(shù)據(jù)包,將包括的數(shù)據(jù)量大于80字節(jié)的數(shù)據(jù)包看成是大數(shù)據(jù)包。如果確定數(shù)據(jù)包是大數(shù)據(jù)包,則可以不通過數(shù)據(jù)合并設(shè)備進行合成而直接發(fā)送,因為大數(shù)據(jù)包的數(shù)據(jù)量一般也比較大,為了節(jié)約傳輸時間和確保數(shù)據(jù)及時傳輸,所以節(jié)約傳輸時間和及時性,所以可以不經(jīng)過合成而直接發(fā)送。另外,由于小數(shù)據(jù)包在傳輸過程中的排隊、處理和路由和發(fā)送等消耗上和大數(shù)據(jù)包并無不同,此外組包的固定開銷如幀間間隔也和數(shù)據(jù)包的大小無關(guān),因此在網(wǎng)絡(luò)帶寬相同的情況下小數(shù)據(jù)包越多,網(wǎng)絡(luò)傳輸效率越低,所以如果確定是小數(shù)據(jù)包的話,則可以將其直接發(fā)送給數(shù)據(jù)合并設(shè)備,進而通過數(shù)據(jù)合并設(shè)備將多個小數(shù)據(jù)包進行合成后再發(fā)送,以盡量降低網(wǎng)絡(luò)擁塞的程度。也就是說,在本發(fā)明實施例中,可以通過發(fā)送設(shè)備先對發(fā)送的數(shù)據(jù)包是數(shù)據(jù)中心內(nèi)傳輸還是跨數(shù)據(jù)中心傳輸進行第一次判斷,再通過對數(shù)據(jù)包是大數(shù)據(jù)包還是小數(shù)據(jù)包進行第二次判斷,也就是說,通過對數(shù)據(jù)包進行分揀篩選后才將小數(shù)據(jù)包發(fā)送給數(shù)據(jù)合并設(shè)備,大、小數(shù)據(jù)包的分揀步驟是通過數(shù)據(jù)中心內(nèi)的數(shù)據(jù)節(jié)點進行的,而無需將所有的數(shù)據(jù)包均發(fā)送到數(shù)據(jù)合并設(shè)備后再由數(shù)據(jù)合并設(shè)備進行分揀篩選,這樣可以節(jié)約在數(shù)據(jù)合并設(shè)備處再進行分揀篩選的時 間,使得數(shù)據(jù)合并設(shè)備可以小數(shù)據(jù)包快速地進行合成處理,這樣也便于數(shù)據(jù)包能夠及時地進行傳輸,確保數(shù)據(jù)傳輸?shù)募皶r性和實時性,同時還可以降低數(shù)據(jù)合并設(shè)備的處理負(fù)荷。當(dāng)發(fā)送設(shè)備先經(jīng)過分揀篩選后再向數(shù)據(jù)合并設(shè)備發(fā)送數(shù)據(jù)包,那么在不做特別說明的情況下,可以認(rèn)為數(shù)據(jù)合并設(shè)備接收的數(shù)據(jù)都是小數(shù)據(jù)包,即,可選的,本發(fā)明實施例中的m個數(shù)據(jù)包均是小數(shù)據(jù)包。繼續(xù)參見圖3,數(shù)據(jù)合并設(shè)備在接收到數(shù)據(jù)包1、2、3之后可以將其進行合成后再發(fā)送給數(shù)據(jù)拆分設(shè)備,至于具體的合成流程后續(xù)再作詳細(xì)介紹。進一步地,數(shù)據(jù)拆分設(shè)備可以將合成后的數(shù)據(jù)包再拆分為數(shù)據(jù)包1、2、3,進而根據(jù)對數(shù)據(jù)包1、2、3的解析確定與其對應(yīng)的接收設(shè)備,并將其發(fā)送到對應(yīng)的接收設(shè)備,例如圖3中所示,數(shù)據(jù)拆分設(shè)備將數(shù)據(jù)包1發(fā)送給接收設(shè)備1,將數(shù)據(jù)包2、3發(fā)送給接收設(shè)備2。在具體實施過程中,如圖2所示,數(shù)據(jù)合并設(shè)備和數(shù)據(jù)拆分設(shè)備可以設(shè)置于數(shù)據(jù)中心a和數(shù)據(jù)中心b之間,即可以將數(shù)據(jù)合并設(shè)備和數(shù)據(jù)拆分設(shè)備看作是兩個獨立于數(shù)據(jù)中心a、b的電子設(shè)備,并且,可以將數(shù)據(jù)合并設(shè)備設(shè)置于接近數(shù)據(jù)中心a的位置,這樣便于數(shù)據(jù)合并設(shè)備快速接收到數(shù)據(jù)中心a中的發(fā)送設(shè)備所發(fā)送的小數(shù)據(jù)包以快速進行聚合,類似地,也可以將數(shù)據(jù)拆分設(shè)備設(shè)置于靠近數(shù)據(jù)中心b的位置處,這樣可以便于數(shù)據(jù)拆分設(shè)備在對合成后的數(shù)據(jù)包進行拆分后,能夠快速地分發(fā)給對應(yīng)的接收設(shè)備。可替換的,還可以將數(shù)據(jù)合并設(shè)備設(shè)置于數(shù)據(jù)中心a中,以及可以將數(shù)據(jù)拆分設(shè)備設(shè)置數(shù)據(jù)中心b中,這樣可以使得數(shù)據(jù)包在從數(shù)據(jù)中心a開始向數(shù)據(jù)中心b進行發(fā)送時,即已經(jīng)是以合成后的數(shù)據(jù)包進行傳輸,這樣可以在較大程度上避免網(wǎng)絡(luò)擁塞的可能,以盡量提高數(shù)據(jù)的傳輸效率。以下對數(shù)據(jù)合并設(shè)備對多個小數(shù)據(jù)包進行合成處理的技術(shù)方案進行詳細(xì)說明。請參見圖4,本發(fā)明實施例提供一種數(shù)據(jù)發(fā)送方法,該方法可以應(yīng)用于圖 2和圖3中的數(shù)據(jù)合并設(shè)備。該方法的流程描述如下。步驟401:數(shù)據(jù)合并設(shè)備接收發(fā)送設(shè)備發(fā)送的m個數(shù)據(jù)包。其中,m為大于1的整數(shù),例如為2,35,90,等等。m個數(shù)據(jù)包為發(fā)送設(shè)備發(fā)送給接收設(shè)備的數(shù)據(jù)包,例如是如圖1中所示的數(shù)據(jù)中心a中的發(fā)送設(shè)備發(fā)送給數(shù)據(jù)中心b中的接收設(shè)備的數(shù)據(jù)包,并且發(fā)送設(shè)備和接收設(shè)備之前通過一致性協(xié)議進行數(shù)據(jù)傳輸,即數(shù)據(jù)中心a和數(shù)據(jù)中心b之間基于一致性協(xié)議進行數(shù)據(jù)傳輸。本發(fā)明實施例中,用于發(fā)送m個數(shù)據(jù)包的發(fā)送設(shè)備可以是一個也可以是多個,以及接收m個數(shù)據(jù)包的接收設(shè)備可以是一個也可以是多個。步驟402:數(shù)據(jù)合并設(shè)備按照數(shù)據(jù)包的消息類型將m個數(shù)據(jù)包劃分為至少一個類別;其中,消息類型與類別一一對應(yīng)。以數(shù)據(jù)容災(zāi)備份系統(tǒng)為例,例如m個數(shù)據(jù)包包含raftpb.msgappresp、raftpb.msgheartbeat和raftpb.msgvote這三種類型的數(shù)據(jù)包,那么可以將m個數(shù)據(jù)包劃分為上述三種類型的數(shù)據(jù)包,即將m個數(shù)據(jù)包劃分為三個類別。根據(jù)前述介紹可知,基于一致性協(xié)議進行數(shù)據(jù)傳輸?shù)臄?shù)據(jù)包的類型一般較少,而屬于同一種消息類型的數(shù)據(jù)包具有相同的消息格式,即可以認(rèn)為屬于同一種消息類型的數(shù)據(jù)包的包頭所包括的type字段是相同的。假設(shè)m的取值為50,即數(shù)據(jù)合并設(shè)備接收到50個數(shù)據(jù)包,其中包括30個屬于第一消息類型的數(shù)據(jù)包、10個屬于第二消息類型的數(shù)據(jù)包以及10個屬于第三消息類型的數(shù)據(jù)包,那么可以將這50個數(shù)據(jù)包按照三種消息類型劃分為三個類別,即消息類型與類別一一對應(yīng),具體來說,就是指m個數(shù)據(jù)包包括多少種消息類型的數(shù)據(jù)包,就可以將m個數(shù)據(jù)包劃分為多少個類別。由于屬于同一類別的數(shù)據(jù)包具有相同的消息格式,將其分類后可以便于同一消息類型的數(shù)據(jù)包的統(tǒng)籌管理,也可以便于后續(xù)進行的合成處理。步驟403:數(shù)據(jù)合并設(shè)備按照所劃分的類別,將m個數(shù)據(jù)包合成n個數(shù)據(jù)包;其中,n個數(shù)據(jù)包中的每個數(shù)據(jù)包至少包括用于指示其中一個類別的全 部數(shù)據(jù)包的信息,n為小于m的整數(shù)。例如,可以單獨將每個類別所包括的數(shù)據(jù)包分別合成一個數(shù)據(jù)包,例如m個數(shù)據(jù)包包括三個類別的數(shù)據(jù)包,那在進行合成后就可以得到3個數(shù)據(jù)包,也就是說,合成后的數(shù)據(jù)包的數(shù)量與所劃分的類別數(shù)量相等,即此時n的取值與類別的數(shù)量相等??商鎿Q的,也可以將多個類別所包括的數(shù)據(jù)包合成一個數(shù)據(jù)包,這樣可以較大程度上減少數(shù)據(jù)包的個數(shù),例如可以將三個類別的數(shù)據(jù)包中的第一個類別和第二個類別的數(shù)據(jù)包合成為一個數(shù)據(jù)包,而將其中的第三個類別的數(shù)據(jù)包合成另一個數(shù)據(jù)包,等等??商鎿Q的,還可以將全部類別的數(shù)據(jù)包合成一個數(shù)據(jù)包,那么此時n的取值為1,這樣可以最大程度上減少數(shù)據(jù)包的個數(shù)。具體將幾個類別的數(shù)據(jù)包合成一個數(shù)據(jù)包,以及具體將哪幾個類別的數(shù)據(jù)包合成到同一個數(shù)據(jù)包中,可以根據(jù)每個類別所包括的數(shù)據(jù)包的個數(shù)、每個類別所包括的數(shù)據(jù)包的總數(shù)據(jù)量、網(wǎng)絡(luò)帶寬和數(shù)據(jù)合并設(shè)備單次所能傳輸?shù)淖畲髷?shù)據(jù)量等因素確定,本發(fā)明不做具體限制。但無論是將一個類別的數(shù)據(jù)包合成一個數(shù)據(jù)包,還是將多個類別的數(shù)據(jù)包合成一個數(shù)據(jù)包,進行合成之后的數(shù)據(jù)包的個數(shù)必然小于合成前的數(shù)據(jù)包的個數(shù),即n的取值始終小于m,這樣可以確保通過合成的方式達到減少需要傳輸?shù)臄?shù)據(jù)包的數(shù)量的目的,以盡量降低網(wǎng)絡(luò)擁塞的可能,提升數(shù)據(jù)的傳輸效率。數(shù)據(jù)包的合成,例如可以按照以下兩種方式進行理解。例如,數(shù)據(jù)包的合成,可以是指將數(shù)據(jù)包和數(shù)據(jù)包之間以鏈表的方式進行簡單的串接,而單個數(shù)據(jù)包的格式和所包括的信息可以不用發(fā)生改變,該種合成方式由于不涉及到對數(shù)據(jù)包所包括的信息進行重組和改變,合成方式比較簡單快捷,對應(yīng)的,數(shù)據(jù)拆分設(shè)備在接收到通過該種合成方式進行合成的數(shù)據(jù)包之后,也可以采用較為簡單快捷的方式進行拆分,以快速獲得合成前的m個數(shù)據(jù)包?;蛘?,數(shù)據(jù)包的合成還可以是指將數(shù)據(jù)包進行壓縮后再進行合成,通過對數(shù)據(jù)包進行壓縮處理,可以盡量減小單次傳輸?shù)臄?shù)據(jù)包的數(shù)據(jù)量,由于數(shù)據(jù)量減少了,所以可以在一定程度上提高傳輸?shù)乃俾剩瑫r,由于可以對數(shù)據(jù)包進行壓縮后再合成,還可以增強數(shù)據(jù)合并設(shè)備對數(shù)據(jù)的處理能力,提升數(shù)據(jù)合并設(shè)備的性能。另外,合成前的數(shù)據(jù)包和合成后的數(shù)據(jù)包的格式可以相同,也可以不同,并且,數(shù)據(jù)合并設(shè)備和數(shù)據(jù)拆分設(shè)備之間可以具有一致的通信協(xié)議,那么凡是通過數(shù)據(jù)合并設(shè)備發(fā)送給數(shù)據(jù)拆分設(shè)備的數(shù)據(jù)包,數(shù)據(jù)拆分設(shè)備都能進行識別、拆分和解析等處理。步驟404:數(shù)據(jù)合并設(shè)備將n個數(shù)據(jù)包發(fā)送給數(shù)據(jù)拆分設(shè)備;其中,數(shù)據(jù)拆分設(shè)備用于將n個數(shù)據(jù)包拆分為m個數(shù)據(jù)包,并將拆分后的m個數(shù)據(jù)包發(fā)送給接收設(shè)備。數(shù)據(jù)合并設(shè)備在將m個數(shù)據(jù)包合成n個數(shù)據(jù)包之后,為了保證數(shù)據(jù)傳輸?shù)募皶r性,可以及時將n個數(shù)據(jù)包發(fā)送給數(shù)據(jù)拆分設(shè)備。進一步地,數(shù)據(jù)拆分設(shè)備在接收到n個數(shù)據(jù)包之后,可以采用與數(shù)據(jù)合并設(shè)備進行的合成方式對應(yīng)的拆分方式對n個數(shù)據(jù)包進行拆分,即通過對n個數(shù)據(jù)包進行拆分可以對合成前的m個數(shù)據(jù)包進行還原,進而再將拆分獲得的m個數(shù)據(jù)包發(fā)送對應(yīng)的接收設(shè)備,以保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。另外,在合成的過程中,為了減少傳輸?shù)臄?shù)據(jù)量,進一步地提高傳輸效率,還可以對數(shù)據(jù)包進行壓縮,例如,數(shù)據(jù)合并設(shè)備可以分別將每個類別對應(yīng)的數(shù)據(jù)包所攜帶的信息進行壓縮后添加到一個數(shù)據(jù)包,以獲得壓縮后的至少一個數(shù)據(jù)包,進而可以將壓縮后的至少一個數(shù)據(jù)包合成n個數(shù)據(jù)包。也就是說,可以將每個類別所包括的數(shù)據(jù)包所攜帶的信息壓縮后添加到同一個數(shù)據(jù)包中,相當(dāng)于是將一個類別所包括的數(shù)據(jù)包進行聯(lián)合壓縮,由于同一類別所包括的數(shù)據(jù)包的消息格式相同,將它們進行聯(lián)合壓縮的話可以根據(jù)相同的消息格式而進行快捷的壓縮,以提高壓縮的效率。在進行聯(lián)合壓縮時,可以先創(chuàng)建一個數(shù)據(jù)包,再將每個類別所對應(yīng)的數(shù)據(jù)包所攜帶的信息進行壓縮后添加到新創(chuàng)建的數(shù)據(jù)包中,以實現(xiàn)數(shù)據(jù)包的壓縮重組,可替換的,還可以直接在一個類別所包括的一個數(shù)據(jù)包(例如第一數(shù)據(jù)包)的基礎(chǔ)上,將該類別所包括的其它數(shù)據(jù)包的信息與第一數(shù)據(jù)包所攜帶的信息進行壓縮后再添加到第一數(shù)據(jù)包中。在具體實施過程中,例如可以采用差分編碼對數(shù)據(jù)包進行壓縮,及采用差分壓縮方式對數(shù)據(jù)包進行壓縮處理,或者還可以采用其它能夠用于對數(shù)據(jù)包進行壓縮處理的方法,本發(fā)明實施例不做限制,為了便于閱讀者理解,以下以差分壓縮方式對數(shù)據(jù)包進行壓縮處理進行舉例說明。以對至少一個類別中的第一個類別所包括的數(shù)據(jù)包進行差分壓縮處理為例,假設(shè)第一個類別包括三個數(shù)據(jù)包,則是對這三個數(shù)據(jù)包進行差分壓縮,由于屬于同一類別,所以這三個數(shù)據(jù)包具有相同的消息格式,而其消息格式例如如圖5所示,通過圖5可以看出,該類數(shù)據(jù)包包括4個字段,而每個字段可以具有固定的字段長度以用于存儲對應(yīng)的字段信息,具體來說,每個字段內(nèi)的字段信息可以是以二進制序列的形式表示,即每個字段內(nèi)的字段信息可以是指一段二進制序列,那么對應(yīng)的,可以根據(jù)一個字段內(nèi)的二進制序列確定該字段的取值,通過對各字段的取值進行組合,例如按照從高位到低位,例如圖5中所示的從左邊到右邊的方式進行組合,便可以確定該數(shù)據(jù)包的取值。如圖5所示,假設(shè)字段1為數(shù)據(jù)包的包頭中的type字段,由于屬于同一類別的數(shù)據(jù)包,那么上述三個數(shù)據(jù)包的type字段相同,即字段1內(nèi)的二進制取值可以相同,例如均為10,那么可以將10看作是用于指示字段1內(nèi)所包括的字段信息的二進制序列,同時,也可以將10看作是字段1的取值。假設(shè)上述三個數(shù)據(jù)包的每個字段的二進制序列如表1所示。表1采用差分編碼的方式對上述三個數(shù)據(jù)包進行壓縮,可以是以數(shù)據(jù)包1為基準(zhǔn),計算數(shù)據(jù)包2與數(shù)據(jù)包1之間的差分量,例如稱作差分量2.1,再計算數(shù)據(jù)包3與數(shù)據(jù)包2之間的差分量,例如稱作差分量3.2,那么通過對應(yīng)的解壓縮方式進行解壓,則可以根據(jù)數(shù)據(jù)包1和差分量2.1確定數(shù)據(jù)包2,以及可以根據(jù)數(shù)據(jù)包2和差分量3.2確定數(shù)據(jù)包3,當(dāng)然,在具體的實施過程中,還可以先以數(shù)據(jù)包3為基準(zhǔn),計算數(shù)據(jù)包2與數(shù)據(jù)包3之間的差分量,例如稱作差分量2.3,再計算數(shù)據(jù)包1與數(shù)據(jù)包2之間的差分量,例如稱作差分量1.2,即以倒序的方式進行差分運算,再采用與上述類似的解壓縮原理,可以在數(shù)據(jù)包3的基礎(chǔ)上依次確定數(shù)據(jù)包2和數(shù)據(jù)包1。也就是說,除第一個數(shù)據(jù)包(即數(shù)據(jù)包1)或倒數(shù)第一個數(shù)據(jù)包(即數(shù)據(jù)包3)之外,可以通過該數(shù)據(jù)包與其相鄰的前(或后)一個數(shù)據(jù)包的差分量確定該數(shù)據(jù)包,可見,通過差分量可以指示對應(yīng)的數(shù)據(jù)包所包括的信息。在進行差分壓縮的過程中,還可以先對需要進行壓縮的多個數(shù)據(jù)包進行排序,這樣可以便于在進行差分運算時盡量較少數(shù)據(jù)包與數(shù)據(jù)包之間的差分量,以盡量減少數(shù)據(jù)量,可以提高壓縮的壓縮率。那么,在將每個類別所對應(yīng)的數(shù)據(jù)包所攜帶的消息進行壓縮后添加到一個數(shù)據(jù)包之前,可以對每個類別所對應(yīng)的數(shù)據(jù)包按照數(shù)據(jù)包所包括的全部字段或部分字段的取值進行排序,進而再根據(jù)排序結(jié)果將每個類別所對應(yīng)的數(shù)據(jù)包所攜帶的信息進行壓縮后添加到一個數(shù)據(jù)包。其中,例如可以將用于表征一個字段內(nèi)所包括的字段信息的二進制序列看作是該字段的取值。以表1中所示的第一個類別所包括的三個數(shù)據(jù)包為例,數(shù)據(jù)合并設(shè)備可以獲取每個數(shù)據(jù)包的全部字段或部分字段的取值。例如,可以獲取每個數(shù)據(jù)包的全部字段的取值,即如表1所示。可替換的,還可以獲取每個數(shù)據(jù)包的部分字段的取值。例如,由于上述三個數(shù)據(jù)包屬于同一消息類型,那么用于表示其消息類型的type字段(即字段1)所包括的二進制序列自然也是相同的,為了能夠盡量減少差分量的計算,所以在本發(fā)明實施例中可以直接分別獲取部分字段的取值,而部分字段可以是指三個數(shù)據(jù)包所包括的二進制序列可能不相同的字段,而無需獲得其取值的字段可以是指三個數(shù)據(jù)包中所包括的二進制序列均相同的字段,例如表1中所示的字段1。例如獲取上述三個數(shù)據(jù)包的部分字段的取值如表2所示。表2數(shù)據(jù)包的編號字段2字段3字段4數(shù)據(jù)包1100010000010010001數(shù)據(jù)包2111110111111101010數(shù)據(jù)包3100010000110010010進一步地,可以按照所獲得的字段的取值的大小對上述三個數(shù)據(jù)包進行排序,例如按照取值從小到大的順序進行排序。以表2所示的部分字段為例,當(dāng)按照二進制序列的取值由小到大進行排序后的結(jié)果例如表3所示。表3數(shù)據(jù)包的編號字段2字段3字段4數(shù)據(jù)包1100010000010010001數(shù)據(jù)包3100010000110010010數(shù)據(jù)包2111110111111101010在進行排序之后,相鄰兩個數(shù)據(jù)包之間的差異可以盡量減少,這樣在進行差分運算的時候,可以盡量減少相鄰兩個數(shù)據(jù)包之間的差分量,進而可有減少 傳輸?shù)臄?shù)據(jù)量,以提升數(shù)據(jù)傳輸?shù)乃俾?。另外,在進行差分計算時,假設(shè)基準(zhǔn)數(shù)據(jù)包包括100位,比較數(shù)據(jù)包也包括100位,當(dāng)比較數(shù)據(jù)包與基準(zhǔn)數(shù)據(jù)包相比,假設(shè)只有第10-15位和第88-96位不同,則可以計算獲得兩個差分量,分別是第10-15位和第88-96位的差分量,并且,為了避免由于傳輸丟包帶來的誤差以盡量保證解碼的準(zhǔn)確性,與每個差分量對應(yīng)的還可以包括一個差分偏移量和一個偏移量長度,其中,差分偏移量用于表示從第幾位起具有差異,偏移量長度用于表示差分量的位數(shù),即到底有幾位是不同的。例如用于表示第10-15為的差分量是11111,與其對應(yīng)的差分偏移量可以表示從第10位開始存在差異,而差分量長度用于表示存在差異的位數(shù)是5位。以表3為例,假設(shè)以數(shù)據(jù)包1為基準(zhǔn),對排序后的三個數(shù)據(jù)包進行差分運算,如下:用于指示數(shù)據(jù)包1的二進制取值為:100010000010010001;用于指示數(shù)據(jù)包3的二進制取值為:100010000110010010;用于指示數(shù)據(jù)包2的二進制取值為:111110111111101010。計算數(shù)據(jù)包3與數(shù)據(jù)包1之間的差分量,獲得的計算結(jié)果如表4所示:表4差分量編號差分量差分偏移量差分量長度差分量11101差分量21171計算數(shù)據(jù)包2與數(shù)據(jù)包3之間的差分量,獲得的計算結(jié)果如表5所示:表5根據(jù)表4和表5可知,針對第一個類別排序后的三個數(shù)據(jù)包進行差分運算,可以獲得5個差分量,即本發(fā)明實施例中的q在此處的取值為5??商鎿Q的,也可以按照數(shù)據(jù)包所包括的全部字段確定與該數(shù)據(jù)包對應(yīng)的二進制取值,根據(jù)表1可知:用于指示數(shù)據(jù)包1的二進制取值為:10100010000010010001;用于指示數(shù)據(jù)包3的二進制取值為:10100010000110010010;用于指示數(shù)據(jù)包1的二進制取值為:10111110111111101010。那么對應(yīng)的,在計算差分量時,獲得的差分量和差分量長度是相同的,不同的只是與每個差分量對應(yīng)的差分偏移量,例如對于數(shù)據(jù)包3與數(shù)據(jù)包1的差分量的具體情況則可以如表6所示,與表4相比,所不同的僅是差分偏移量。表6差分量編號差分量差分偏移量差分量長度差分量11121差分量21191進一步地,在獲得5個差分量后,可以根據(jù)數(shù)據(jù)包1、5個差分量以及對應(yīng)的差分偏移量和差分量長度獲得n個數(shù)據(jù)包中的任意一個數(shù)據(jù)包,例如可以獲得n個數(shù)據(jù)包中的第一數(shù)據(jù)包。當(dāng)是將第一個類別所包括的三個數(shù)據(jù)包合成為一個數(shù)據(jù)包時,此時則可以根據(jù)數(shù)據(jù)包1、5個差分量以及對應(yīng)的差分偏移量和差分量長度獲得第一數(shù)據(jù)包的全部內(nèi)容,例如此時第一數(shù)據(jù)包中各字段所包括的信息如圖6a所示。當(dāng)是將第一個類別所包括的三個數(shù)據(jù)包和其余類別的數(shù)據(jù)包一起合成第一數(shù)據(jù)包時,此時第一數(shù)據(jù)包中各字段所包括的信息可以如圖6b所示,其中,數(shù)據(jù)包x可以是另一類別的數(shù)據(jù)包排序后的第一個數(shù)據(jù)包或最后一個數(shù)據(jù)包, 而對另一類別的數(shù)據(jù)包進行壓縮的方式可以采用對上述第一個類別所包括的三個數(shù)據(jù)包進行的相同的壓縮方式。另外,在將m個數(shù)據(jù)包合成n個數(shù)據(jù)包之前,數(shù)據(jù)合并設(shè)備還可以先判斷是否滿足預(yù)定合成條件,其中,預(yù)定合成條件為用于觸發(fā)數(shù)據(jù)合并設(shè)備對接收到的m個數(shù)據(jù)包進行合成的條件,也就是說,可以將預(yù)定合成條件看作是觸發(fā)數(shù)據(jù)合并設(shè)備對接收到的m個數(shù)據(jù)包進行合成的觸發(fā)條件。通過先判斷是否滿足預(yù)定合成條件,可以確保合成的及時性,使得數(shù)據(jù)合并設(shè)備能夠及時地將接收的數(shù)據(jù)包進行合成后及時進行傳輸,同時,還可以確保合成的必要性,例如需要數(shù)據(jù)包達到預(yù)定個數(shù)時才進行合成,這樣可以盡量降低數(shù)據(jù)合并設(shè)備的處理負(fù)荷,提升數(shù)據(jù)合并設(shè)備的性能。在具體實施過程中,可以具有多種方式判斷是否滿足預(yù)定合成條件,即,預(yù)定合成條件的設(shè)置可以具有多種。例如,第一種可能的預(yù)定合成條件是:m個數(shù)據(jù)包的個數(shù)達到預(yù)定個數(shù)。其中,預(yù)定個數(shù)例如為100個,考慮到數(shù)據(jù)傳輸?shù)募皶r性,當(dāng)數(shù)據(jù)合并設(shè)備確定接收了預(yù)定個數(shù)的數(shù)據(jù)包時,則可以進行一次合成處理,這樣可以使得發(fā)送設(shè)備所發(fā)送的數(shù)據(jù)包能夠及時地傳輸?shù)綄?yīng)的接收設(shè)備。又例如,第二種可能的預(yù)定合成條件是:m個數(shù)據(jù)包的總數(shù)據(jù)量大于等于預(yù)定數(shù)據(jù)量。其中,預(yù)定數(shù)據(jù)量例如可以為10m或20m,等等,在m個數(shù)據(jù)包均為小數(shù)據(jù)包時,當(dāng)確定m個數(shù)據(jù)包的總數(shù)據(jù)量大于當(dāng)于預(yù)定數(shù)據(jù)量時,可以間接確定數(shù)據(jù)包的個數(shù),此時為了確保數(shù)據(jù)傳輸?shù)募皶r性,則可以及時地進行合成,同時,通過將m個數(shù)據(jù)包的總數(shù)據(jù)量與預(yù)定數(shù)據(jù)量進行比較,還可以盡量滿足數(shù)據(jù)合并設(shè)備對數(shù)據(jù)的傳輸要求,使得數(shù)據(jù)合并設(shè)備通過一次合成即可以將m個數(shù)據(jù)包全部發(fā)送給數(shù)據(jù)拆分設(shè)備,保證數(shù)據(jù)傳輸?shù)臅r效性。再例如,第三種可能的預(yù)定合成條件是:達到預(yù)定時刻。也就是說,數(shù)據(jù)合并設(shè)備可以按照預(yù)定的合成周期對接收的數(shù)據(jù)包進行合 成,例如,每隔1分鐘進行一次合成,這樣可以在減少數(shù)據(jù)包的個數(shù)的基礎(chǔ)上,盡量保證數(shù)據(jù)傳輸?shù)募皶r性和時效性。請參見圖7,本發(fā)明實施例提供一種數(shù)據(jù)合并設(shè)備,該數(shù)據(jù)合并設(shè)備包括連接到同一總線700的處理器702、接收器701和發(fā)送器703。其中,處理器702可以是中央處理器(cpu)或特定應(yīng)用集成電路(applicationspecificintegratedcircuit,asic),可以是一個或多個用于控制程序執(zhí)行的集成電路,可以是基帶芯片,等等。接收器701和發(fā)送器703可以通過總線700與處理器702相連接(例如圖7所示),或者也可以通過專門的連接線分別與處理器702連接。接收器701和發(fā)送器703之間也可以通過總線700相連接(例如圖7所示),或者也可以通過專門的連接線進行連接。數(shù)據(jù)合并設(shè)備還可以包括存儲器,存儲器可以通過總線700與處理器702連接。存儲器的數(shù)量可以是一個或多個,存儲器可以是只讀存儲器(readonlymemory,rom)、隨機存取存儲器(randomaccessmemory,ram)或磁盤存儲器,等等。通過對處理器702進行設(shè)計編程,將前述的數(shù)據(jù)發(fā)送方法所對應(yīng)的代碼固化到芯片內(nèi),從而使芯片在運行時能夠執(zhí)行前述圖4所示的數(shù)據(jù)發(fā)送方法,如何對處理器702進行設(shè)計編程為本領(lǐng)域技術(shù)人員所公知的技術(shù),這里不再贅述。請參見圖8,本發(fā)明實施例提供一種數(shù)據(jù)合并設(shè)備,該數(shù)據(jù)合并設(shè)備包括接收模塊801、分類模塊802、合成模塊803和發(fā)送模塊804。在實際應(yīng)用中,接收模塊801對應(yīng)的實體設(shè)備可以是圖7中的接收器701,發(fā)送模塊804對應(yīng)的實體設(shè)備可以是圖7中的發(fā)送器703,分類模塊802和合成模塊803對應(yīng)的實體設(shè)備可以是圖7中的處理器702。本發(fā)明實施例中的數(shù)據(jù)合并設(shè)備設(shè)備可以用于執(zhí)行上述圖4所述的方法,對于該數(shù)據(jù)合并設(shè)備中的各模塊所實現(xiàn)的功能等,可參考如前方法部分的描述,在此不多贅述。以上實施例僅用以對本申請的技術(shù)方案進行了詳細(xì)介紹,但以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想,不應(yīng)理解為對本發(fā)明的限制。本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。當(dāng)前第1頁12