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