一種數(shù)據(jù)同步方法及裝置的制造方法
【專利摘要】本文提供一種數(shù)據(jù)同步方法和數(shù)據(jù)同步裝置;其中,所述方法包括:監(jiān)測主數(shù)據(jù)是否發(fā)生變化;若監(jiān)測到發(fā)生變化,則:根據(jù)所述主數(shù)據(jù)的版本號和序列號,確定數(shù)據(jù)變化前后的差異數(shù)據(jù);其中,所述版本號表示數(shù)據(jù)的兼容性,所述序列號表示數(shù)據(jù)的長度;將所述差異數(shù)據(jù)發(fā)送給數(shù)據(jù)同步節(jié)點,以使其進行數(shù)據(jù)同步。本文所述的數(shù)據(jù)同步方法和數(shù)據(jù)同步裝置支持差異數(shù)據(jù)傳輸;客戶端無需輪詢獲取差異數(shù)據(jù),服務(wù)器可主動推送;支持內(nèi)建壓縮,減少數(shù)據(jù)傳輸量,提高并發(fā)。
【專利說明】
一種數(shù)據(jù)同步方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)同步方法及裝置。
【背景技術(shù)】
[0002]目前線上主流的數(shù)據(jù)庫,如Redis只能做全量獲取,因此當(dāng)數(shù)據(jù)庫發(fā)生變化時,與其同步的其他節(jié)點需要重新全量獲取更新,造成數(shù)據(jù)量大,占用大量網(wǎng)絡(luò)資源;并且現(xiàn)有的數(shù)據(jù)庫發(fā)生變化后,不會主動將數(shù)據(jù)庫推送給與其同步的其他節(jié)點,而是需要每個節(jié)點輪詢獲取。
【發(fā)明內(nèi)容】
[0003]有鑒于此,為了解決現(xiàn)有技術(shù)中存在數(shù)據(jù)庫更新后需要全量獲取,并且不支持推送功能的問題,本發(fā)明的目的是提出一種數(shù)據(jù)同步方法。為了對披露的實施例的一些方面有一個基本的理解,下面給出了簡單的概括。該概括部分不是泛泛評述,也不是要確定關(guān)鍵/重要組成元素或描繪這些實施例的保護范圍。其唯一目的是用簡單的形式呈現(xiàn)一些概念,以此作為后面的詳細說明的序言。
[0004]在一些可選的實施例中,所述數(shù)據(jù)同步方法,包括:
[0005]監(jiān)測主數(shù)據(jù)是否發(fā)生變化;若監(jiān)測到發(fā)生變化,則:
[0006]根據(jù)所述主數(shù)據(jù)的版本號和序列號,確定數(shù)據(jù)變化前后的差異數(shù)據(jù);其中,所述版本號表示數(shù)據(jù)的兼容性,所述序列號表示數(shù)據(jù)的長度;
[0007]將所述差異數(shù)據(jù)發(fā)送給數(shù)據(jù)同步節(jié)點,以使其進行數(shù)據(jù)同步。
[0008]本發(fā)明另一個目的是提供一種數(shù)據(jù)同步裝置;
[0009]在一些可選的實施例中,所述數(shù)據(jù)同步裝置,包括:
[0010]監(jiān)測單元,用于監(jiān)測主數(shù)據(jù)是否發(fā)生變化;若監(jiān)測到發(fā)生變化,則:
[0011]差異數(shù)據(jù)確定單元,用于根據(jù)所述主數(shù)據(jù)的版本號和序列號,確定數(shù)據(jù)變化前后的差異數(shù)據(jù);其中,所述版本號表示數(shù)據(jù)的兼容性,所述序列號表示數(shù)據(jù)的長度;
[0012]同步單元,用于將所述差異數(shù)據(jù)發(fā)送給數(shù)據(jù)同步節(jié)點,以使其進行數(shù)據(jù)同步。
[0013]采用上述實施例,可達到以下效果:
[0014]1、支持差異數(shù)據(jù)傳輸;
[0015]2、客戶端無需輪詢獲取差異數(shù)據(jù),服務(wù)器可主動推送;
[0016]3、支持內(nèi)建壓縮,減少數(shù)據(jù)傳輸量,提高并發(fā)。
[0017]為了上述以及相關(guān)的目的,一個或多個實施例包括后面將詳細說明并在權(quán)利要求中特別指出的特征。下面的說明以及附圖詳細說明某些示例性方面,并且其指示的僅僅是各個實施例的原則可以利用的各種方式中的一些方式。其它的益處和新穎性特征將隨著下面的詳細說明結(jié)合附圖考慮而變得明顯,所公開的實施例是要包括所有這些方面以及它們的等同。
【附圖說明】
[0018]此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0019]圖1示出了本發(fā)明實施例的一種數(shù)據(jù)同步方法的流程示意圖;
[0020]圖2示出了本發(fā)明實施例的一種數(shù)據(jù)同步裝置的功能結(jié)構(gòu)框圖。
【具體實施方式】
[0021]以下描述和附圖充分地示出本發(fā)明的具體實施方案,以使本領(lǐng)域的技術(shù)人員能夠?qū)嵺`它們。其他實施方案可以包括結(jié)構(gòu)的、邏輯的、電氣的、過程的以及其他的改變。實施例僅代表可能的變化。除非明確要求,否則單獨的部件和功能是可選的,并且操作的順序可以變化。一些實施方案的部分和特征可以被包括在或替換其他實施方案的部分和特征。本發(fā)明的實施方案的范圍包括權(quán)利要求書的整個范圍,以及權(quán)利要求書的所有可獲得的等同物。在本文中,本發(fā)明的這些實施方案可以被單獨地或總地用術(shù)語“發(fā)明”來表示,這僅僅是為了方便,并且如果事實上公開了超過一個的發(fā)明,不是要自動地限制該應(yīng)用的范圍為任何單個發(fā)明或發(fā)明構(gòu)思。
[0022]圖1示出了本發(fā)明實施例一種數(shù)據(jù)同步方法的流程示意圖;如圖1所示,所述方法包括:
[0023]步驟SlOl,監(jiān)測主數(shù)據(jù)是否發(fā)生變化;若監(jiān)測到發(fā)生變化,則:
[0024]步驟S102,根據(jù)所述主數(shù)據(jù)的版本號和序列號,確定數(shù)據(jù)變化前后的差異數(shù)據(jù);其中,所述版本號表示數(shù)據(jù)的兼容性,所述序列號表示數(shù)據(jù)的長度;
[0025]步驟S103,將所述差異數(shù)據(jù)發(fā)送給數(shù)據(jù)同步節(jié)點,以使其進行數(shù)據(jù)同步;
[0026]所述方法可以應(yīng)用于大并發(fā)網(wǎng)絡(luò)多節(jié)點數(shù)據(jù)同步服務(wù)器,現(xiàn)有技術(shù)中主流的數(shù)據(jù)庫如Redis的數(shù)據(jù)發(fā)生變化時,在數(shù)據(jù)同步時需要全量傳輸,無法實現(xiàn)差異傳輸,并且服務(wù)器不支持主動推送,需要客戶端輪詢獲取數(shù)據(jù);通過上述方法,本節(jié)點主動監(jiān)測主數(shù)據(jù)變化,并且通過判斷版本號和序列號兩個標(biāo)識確定數(shù)據(jù)是發(fā)生了本質(zhì)改變還是發(fā)生了增量改變,從而確定差異數(shù)據(jù)為全量數(shù)據(jù)還是新增數(shù)據(jù),然后主動將差異數(shù)據(jù)傳輸給數(shù)據(jù)同步節(jié)點,整個過程簡潔高效,減少帶寬占用,高并發(fā);
[0027]在一些可選的實施例中,所述主數(shù)據(jù)的修改方式包括替換和新增兩種;
[0028]若對所述主數(shù)據(jù)進行所述替換的操作,則:所述版本號,或,所述版本號和所述序列號改變;
[0029]若對所述主數(shù)據(jù)進行所述新增的操作,則:所述版本號不變,所述序列號增值;
[0030]在一些可選的實施例中,所述監(jiān)測主數(shù)據(jù)是否發(fā)生變化的操作,包括:
[0031]監(jiān)測所述主數(shù)據(jù)的版本號和序列號是否改變;若二者均未改變,則所述主數(shù)據(jù)未改變;若改變,則觸發(fā)確定所述差異數(shù)據(jù)的操作;
[0032]在一些可選的實施例中,所述根據(jù)所述主數(shù)據(jù)的版本號和序列號,確定數(shù)據(jù)變化前后的差異數(shù)據(jù)的操作,包括:
[0033]判斷所述版本號是否改變;若是,則所述差異數(shù)據(jù)為所述主數(shù)據(jù)的全量;若否,則:
[0034]判斷所述序列號是否增值;若是,則所述差異數(shù)據(jù)為所述主數(shù)據(jù)的新增數(shù)據(jù),并根據(jù)所述序列號的增值,在所述主數(shù)據(jù)中確定待傳輸?shù)男略鰯?shù)據(jù);
[0035]在一些可選的實施例中,所述將所述差異數(shù)據(jù)發(fā)送給數(shù)據(jù)同步節(jié)點的操作,包括:
[0036]根據(jù)記錄的所述數(shù)據(jù)同步節(jié)點的信息,將所述主數(shù)據(jù)全量或所述主數(shù)據(jù)的新增數(shù)據(jù)壓縮并發(fā)送到所述數(shù)據(jù)同步節(jié)點;
[0037]在所述發(fā)送數(shù)據(jù)的過程中,還攜帶發(fā)生變化的所述版本號和/或所述序列號。
[0038]以下實施例給出了具體的實施方案,所述數(shù)據(jù)同步方法應(yīng)用于大并發(fā)網(wǎng)絡(luò)多節(jié)點數(shù)據(jù)同步服務(wù)器,在大并發(fā)網(wǎng)絡(luò)中,本服務(wù)器可以向多個網(wǎng)絡(luò)節(jié)點提供數(shù)據(jù)同步服務(wù),當(dāng)主數(shù)據(jù)發(fā)生變化時,可以快速向與本端同步的網(wǎng)絡(luò)節(jié)點推送相應(yīng)的差異數(shù)據(jù);
[0039]具體的設(shè)計方案如下:
[0040]首先,可以對本節(jié)點的主數(shù)據(jù)設(shè)置版本號vers1n和序列號sequence兩個參數(shù)標(biāo)識;其中,vers 1n標(biāo)識主數(shù)據(jù)變化前后的兼容性,例如:主數(shù)據(jù)是AB,vers1n = I;若主數(shù)據(jù)變成ABC,那么主數(shù)據(jù)只是發(fā)生了長度的增加,則vers1n不變;若主數(shù)據(jù)變成了 AA,那么主數(shù)據(jù)發(fā)生了本質(zhì)變化,則vers1n變成Sdequence代表數(shù)據(jù)的長度,若主數(shù)據(jù)發(fā)生了長度的新增,則該值增加相應(yīng)的數(shù)量,若主數(shù)據(jù)發(fā)生了本質(zhì)的變化,則該值記錄的是變化后的數(shù)據(jù)的長度,例如:主數(shù)據(jù)是AB,sequence = 2,若主數(shù)據(jù)變成了 ABCD,則seuqence = 4,若主數(shù)據(jù)變成了 AA,則sequence不變;
[0041]其次,當(dāng)主數(shù)據(jù)發(fā)生了變化,修改數(shù)據(jù)可為兩種,一種是替換replace操作,一種是新增append操作,不準(zhǔn)許在數(shù)據(jù)中間插入。每次append后,sequence為增加數(shù)據(jù)后的數(shù)據(jù)長度,vers 1n不變化;如果是replace后vers 1n變化,sequence為數(shù)據(jù)長度;
[0042]第三,通過判斷vers1n和sequence兩個參數(shù)的變化,可以確定最佳的同步數(shù)據(jù)的方案,即確定差異數(shù)據(jù);若sequence為增加,vers1n不變,則僅將新增對部分?jǐn)?shù)據(jù)進行同步;若vers 1n發(fā)生變化,則需要將主數(shù)據(jù)整體進行同步;
[0043]第四,根據(jù)記錄的所述數(shù)據(jù)同步節(jié)點的信息,將確定的差異數(shù)據(jù)主動推送給所述節(jié)點,并在傳輸過程中加入壓縮標(biāo)志,對數(shù)據(jù)進行壓縮,減少帶寬占用。
[0044]圖2示出了本發(fā)明實施例的一種數(shù)據(jù)同步裝置的功能結(jié)構(gòu)框圖;所述數(shù)據(jù)同步裝置200,包括:
[0045]監(jiān)測單元201,用于監(jiān)測主數(shù)據(jù)是否發(fā)生變化;若監(jiān)測到發(fā)生變化,則:
[0046]差異數(shù)據(jù)確定單元201,用于根據(jù)所述主數(shù)據(jù)的版本號和序列號,確定數(shù)據(jù)變化前后的差異數(shù)據(jù);其中,所述版本號表示數(shù)據(jù)的兼容性,所述序列號表示數(shù)據(jù)的長度;
[0047]同步單元203,用于將所述差異數(shù)據(jù)發(fā)送給數(shù)據(jù)同步節(jié)點,以使其進行數(shù)據(jù)同步;
[0048]在一些可選的實例中,所述主數(shù)據(jù)的修改方式包括替換和新增兩種;
[0049]若對所述主數(shù)據(jù)進行所述替換的操作,則:所述版本號,或,所述版本號和所述序列號改變;
[0050]若對所述主數(shù)據(jù)進行所述新增的操作,則:所述版本號不變,所述序列號增值;
[0051 ] 在一些可選的實例中,所述監(jiān)測單元201,包括:
[0052]監(jiān)測子單元2011,用于監(jiān)測所述主數(shù)據(jù)的版本號和序列號是否改變;若二者均未改變,則所述主數(shù)據(jù)未改變;若改變,則觸發(fā)確定所述差異數(shù)據(jù)的操作;
[0053]在一些可選的實例中,所述差異數(shù)據(jù)確定單元202,包括:
[0054]第一判斷單元2021,用于判斷所述版本號是否改變;若是,則所述差異數(shù)據(jù)為所述主數(shù)據(jù)的全量;若否,則:
[0055]第二判斷單元2022,用于判斷所述序列號是否增值;若是,則所述差異數(shù)據(jù)為所述主數(shù)據(jù)的新增數(shù)據(jù),并根據(jù)所述序列號的增值,在所述主數(shù)據(jù)中確定待傳輸?shù)男略鰯?shù)據(jù);
[0056]在一些可選的實例中,所述同步單元203,包括:
[0057]同步子單元2031,用于根據(jù)記錄的所述數(shù)據(jù)同步節(jié)點的信息,將所述主數(shù)據(jù)全量或所述主數(shù)據(jù)的新增數(shù)據(jù)壓縮并發(fā)送到所述數(shù)據(jù)同步節(jié)點;
[0058]在所述同步子單元發(fā)送數(shù)據(jù)的過程中,還攜帶發(fā)生變化的所述版本號和/或所述序列號。
[0059]綜上所述,采用本發(fā)明所述的數(shù)據(jù)同步方法和裝置,可使得:
[0060]1、支持差異數(shù)據(jù)傳輸;
[0061]2、客戶端無需輪詢獲取差異數(shù)據(jù),服務(wù)器可主動推送;
[0062]3、支持內(nèi)建壓縮,減少數(shù)據(jù)傳輸量,提高并發(fā)。
[0063]本領(lǐng)域技術(shù)人員還應(yīng)當(dāng)理解,以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種數(shù)據(jù)同步方法,其特征在于,包括: 監(jiān)測主數(shù)據(jù)是否發(fā)生變化;若監(jiān)測到發(fā)生變化,則: 根據(jù)所述主數(shù)據(jù)的版本號和序列號,確定數(shù)據(jù)變化前后的差異數(shù)據(jù);其中,所述版本號表示數(shù)據(jù)的兼容性,所述序列號表示數(shù)據(jù)的長度; 將所述差異數(shù)據(jù)發(fā)送給數(shù)據(jù)同步節(jié)點,以使其進行數(shù)據(jù)同步。2.如權(quán)利要求1所述的方法,其特征在于,所述主數(shù)據(jù)的修改方式包括替換和新增兩種; 若對所述主數(shù)據(jù)進行所述替換的操作,則:所述版本號,或,所述版本號和所述序列號改變; 若對所述主數(shù)據(jù)進行所述新增的操作,則:所述版本號不變,所述序列號增值。3.如權(quán)利要求2所述的方法,其特征在于,所述監(jiān)測主數(shù)據(jù)是否發(fā)生變化的操作,包括: 監(jiān)測所述主數(shù)據(jù)的版本號和序列號是否改變;若二者均未改變,則所述主數(shù)據(jù)未改變;若改變,則觸發(fā)確定所述差異數(shù)據(jù)的操作。4.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述主數(shù)據(jù)的版本號和序列號,確定數(shù)據(jù)變化前后的差異數(shù)據(jù)的操作,包括: 判斷所述版本號是否改變;若是,則所述差異數(shù)據(jù)為所述主數(shù)據(jù)的全量;若否,則:判斷所述序列號是否增值;若是,則所述差異數(shù)據(jù)為所述主數(shù)據(jù)的新增數(shù)據(jù),并根據(jù)所述序列號的增值,在所述主數(shù)據(jù)中確定待傳輸?shù)男略鰯?shù)據(jù)。5.如權(quán)利要求4所述的方法,其特征在于,所述將所述差異數(shù)據(jù)發(fā)送給數(shù)據(jù)同步節(jié)點的操作,包括: 根據(jù)記錄的所述數(shù)據(jù)同步節(jié)點的信息,將所述主數(shù)據(jù)全量或所述主數(shù)據(jù)的新增數(shù)據(jù)壓縮并發(fā)送到所述數(shù)據(jù)同步節(jié)點; 在所述發(fā)送數(shù)據(jù)的過程中,還攜帶發(fā)生變化的所述版本號和/或所述序列號。6.一種數(shù)據(jù)同步裝置,其特征在于,包括: 監(jiān)測單元,用于監(jiān)測主數(shù)據(jù)是否發(fā)生變化;若監(jiān)測到發(fā)生變化,則: 差異數(shù)據(jù)確定單元,用于根據(jù)所述主數(shù)據(jù)的版本號和序列號,確定數(shù)據(jù)變化前后的差異數(shù)據(jù);其中,所述版本號表示數(shù)據(jù)的兼容性,所述序列號表示數(shù)據(jù)的長度; 同步單元,用于將所述差異數(shù)據(jù)發(fā)送給數(shù)據(jù)同步節(jié)點,以使其進行數(shù)據(jù)同步。7.如權(quán)利要求6所述的裝置,其特征在于,所述主數(shù)據(jù)的修改方式包括替換和新增兩種; 若對所述主數(shù)據(jù)進行所述替換的操作,則:所述版本號,或,所述版本號和所述序列號改變; 若對所述主數(shù)據(jù)進行所述新增的操作,則:所述版本號不變,所述序列號增值。8.如權(quán)利要求7所述的裝置,其特征在于,所述監(jiān)測單元,包括: 監(jiān)測子單元,用于監(jiān)測所述主數(shù)據(jù)的版本號和序列號是否改變;若二者均未改變,則所述主數(shù)據(jù)未改變;若改變,則觸發(fā)確定所述差異數(shù)據(jù)的操作。9.如權(quán)利要求7所述的裝置,其特征在于,所述差異數(shù)據(jù)確定單元,包括: 第一判斷單元,用于判斷所述版本號是否改變;若是,則所述差異數(shù)據(jù)為所述主數(shù)據(jù)的全量;若否,則: 第二判斷單元,用于判斷所述序列號是否增值;若是,則所述差異數(shù)據(jù)為所述主數(shù)據(jù)的新增數(shù)據(jù),并根據(jù)所述序列號的增值,在所述主數(shù)據(jù)中確定待傳輸?shù)男略鰯?shù)據(jù)。10.如權(quán)利要求9所述的裝置,其特征在于,所述同步單元,包括: 同步子單元,用于根據(jù)記錄的所述數(shù)據(jù)同步節(jié)點的信息,將所述主數(shù)據(jù)全量或所述主數(shù)據(jù)的新增數(shù)據(jù)壓縮并發(fā)送到所述數(shù)據(jù)同步節(jié)點; 在所述同步子單元發(fā)送數(shù)據(jù)的過程中,還攜帶發(fā)生變化的所述版本號和/或所述序列號。
【文檔編號】G06F17/30GK106055559SQ201610325706
【公開日】2016年10月26日
【申請日】2016年5月17日
【發(fā)明人】王喜旺, 唐周標(biāo)
【申請人】北京金山安全管理系統(tǒng)技術(shù)有限公司