一種多數據中心的數據同步方法
【技術領域】
[0001]本發明涉及數據同步領域,特別涉及一種多數據中心的數據同步方法。
【背景技術】
[0002]為存儲海量數據,各互聯網公司在世界各地建立了龐大的數據中心,存儲其全球用戶每天產生的海量數據,單個數據中心的終端的主機數量在幾百萬至數萬的數量級不等。對這些數據的管理和使用都是巨大的挑戰:包括數據的讀取和存儲、索引和尋址、配置和管理的接口、數據中心之間的數據復制等。為保持這些數據的一致性,在不同地理位置的數據中心之間進行數據同步和復制成為越來越迫切的需求。
[0003]對于電子商務領域來說,以多數據中心部署的方式來提高訪問速度,從而提高用戶的體驗,是一種通常的做法。但是跨公網網絡,尤其是跨國際公網網絡常常會出現一些不穩定情況,如網絡丟包,網絡中斷等。常規做法是采用專線連接各個數據中心,但這種做法成本大,對于中小企業而言,投入產出比極低。
[0004]相比較而言,依靠軟件方法,采用消息隊列技術作為數據傳輸的載體,通過消息機制保證數據的及時性、準確性和可恢復性,這是一種比較實際和相對可靠做法。
[0005]CN 104539663A 一種跨數據中心的數據同步方法和裝置公開一種跨數據中心的數據同步方法和系統,具體包括:收集待同步數據中心的鍵值對數據;以及利用分布式計算框架進行所述待同步數據中心的鍵值對數據的一致性檢測,得到一致或不一致的檢測結果。本發明重點在于主、備數據中心之間的傳輸方法,并未過多涉及到多數據中心間的數據傳輸。
[0006]CN103763368A 一種跨數據中心的數據同步方法公開一種跨數據庫同步的方法,其具體實現過程為:完成數據的寫入與日志的記錄;同步調度與推送;日志回放,完成數據同步;進行跨數據中心的數據訪問,實現異步數據同步操作。該發明能夠實現跨數據中心的異步數據同步操作,提高數據的安全性;有效地利用數據中心內部的10資源和數據中心之間的網絡資源,但該方法主要通過日志回放的方式來實現,這與本發明通過傳輸少量數據,實時返回同步狀態的做法存在很大不同;
[0007]CN 104572921A —種跨數據中心的數據同步方法和裝置公布了一種跨數據中心的數據同步和裝置,具體包括:收集待同步數據中心的鍵值對數據;以及利用分布式計算框架進行所述待同步數據中心的鍵值對數據的一致性檢測,得到一致或不一致的檢測結果。本發明通過減少對各數據中心的訪問次數減輕對各數據中心的線上訪問壓力,其著重在對各分布式計算環境中的數據在各數據中心進行比較,并未提及將數據分發至各數據中心進行同步的方式。
【發明內容】
[0008]為解決現有技術存在的局限性,本發明目的是,提供一種跨數據中心的數據同步方法,目的是在復雜網絡中完成數據傳輸,保證數據有序、且不被丟失。
[0009]本發明的技術方案是,一種多數據中心的數據同步方法,具體包括:
[0010]步驟1:變更數據的獲取:各應用系統以消息的方式向本系統數據中心的客戶端發送數據變更請求,客戶端接收到經序列化的請求后,對所接收的消息在當前數據中心內進行持久化;
[0011]所述客戶端,是部署在服務器端的應用,用于接收服務器端發出的數據,并按照業務需求執行數據同步操作;所述服務器端運行時,一方面用于獲取應用系統需要在多數據中心同步執行的數據,一方面用于將數據分發給各個需數據同步的數據中心的客戶端
[0012]所述持久化,是客戶端將消息存儲到硬件上,可以是數據庫、緩存及分布式緩存;
[0013]步驟2:變更數據的分發:根據當前業務事務嚴格性要求,當前數據中心選擇處理或轉發變更數據;如若數據中心選擇處理變更數據,應用系統先執行數據,待確認執行成功后,再將變更數據分發至各數據中心;如若選擇轉發變更數據,當前數據中心在保存變更數據的同時,將變更數據分發至其他需要數據同步的數據中心;
[0014]所謂事務嚴格性要求,指是否需要保證所有數據中心的數據變更一致性;
[0015]步驟3:變更數據的同步執行:數據到達目的各自數據中心之后的同步執行操作;
[0016]步驟4:變更發回到數據的執行情況匯總:將數據執行情況以消息的形式發回到數據產生的數據中心;
[0017]步驟5:失敗數據的定向重發:定時分析各數據中心發出的數據同步執行情況,針對不超過預設重發次數N的失敗同步或無返回狀態的同步,數據產生的數據中心將重發送變更數據至未成功執行數據同步的數據中心,同時更新重新發送的次數;
[0018]步驟6:多數據中心的同步數據運轉監控與異常報警:變更數據被重新發送到目的數據中心后的處理;
[0019]步驟2中如若數據中心選擇處理變更數據,具體步驟包括:
[0020]步驟2-1:數據由請求同步方執行完成后,將變更數據以消息的方式發送給當前數據中心的客戶端,客戶端對變更數據進行持久化,同時記錄數據中心接收該消息的時間;
[0021]特別地,請求同步方是指發出數據變更請求的應用系統;
[0022]步驟2-2:客戶端查找并統計除當前數據中心以外的其他數據中心,并將消息復制成相應的份數,提交至數據中心的服務端;
[0023]步驟2-3:服務端遵照TCP協議將變更數據分發給各數據中心;
[0024]如若數據中心選擇轉發變更數據,當前數據中心在保存變更數據的同時,將變更數據分發至其他需要數據同步的數據中心,具體步驟包括:
[0025]步驟2-4:請求同步方將變更數據提交至當前數據中心的客戶端,客戶端對消息進行持久化,并記錄接收消息的時間;
[0026]請求同步方是指發出數據變更請求的應用系統;
[0027]步驟2-5:客戶端查找并統計所有需要數據同步的數據中心,并將變更數據以消息形式發送給數據中心服務端;
[0028]步驟2-6:數據中心服務端按照TCP協議將變更數據分發至包括當前數據中心在內的各數據中心;
[0029]請求同步方是指發出數據變更請求的應用系統。
[0030]針對步驟2中采用的方法不同,相應地,步驟3的變更數據同步執行具體步驟為:步驟3:變更數據的同步執行:數據到達目的各自數據中心之后的同步執行操作;
[0031]針對步驟2中的第一種變更數據分發情況,變更數據的同步執行具體包括:
[0032]步驟3-1:數據中心服務端接收到變更數據的消息后,將消息分發給各自數據中心的客戶端;
[0033]步驟3-2:各數據中心客戶端接收到消息后,將變更數據的消息序列化至各數據中心的數據庫中進行持久化,同時記錄消息已到達狀態;
[0034]步驟3-3:客戶端執行數據同步,執行完成后,更新數據狀態,即更新成功、失敗等;
[0035]針對步驟2中的第二種變更數據分發情況,變更數據的同步執行前不做持久化處理,具體步驟沒有上述的步驟3-1和3-2,直接執行步驟3-3 ;
[0036]步驟4:變更數據的執行情況匯總:將數據執行的情況,以消息的形式發回到數據產生的數據中心;收集不同數據中心返回的數據執行情況;
[0037]各數據中心將數據執行情況以消息的形式發回至產生數據的數據中心的服務端;執行情況包括分為執行成功、執行失敗和未返回執行情況三種;
[0038]服務端的消息隊列獲取到執行情況的消息后,將各數據中心的數據同步執行結果更新到持久化過的數據庫條目中,并在條目中標記已成功實現同步的數據中心,同時記錄數據條目更新時間;
[0039]所謂數據條目,指數據庫記錄各數據中心執行數據同步結果的數據格式;一個數據條目中包括數據變更消息ID號、各個數據中心的名稱、數據同步執行失敗原因;
[0040]步驟5:失敗數據的定向重發:定時分析各數據中心發出的數據同步執行情況,針對不超過N次的失敗同步或無返回狀態的同步,數據產生的數據中心將重新發送變更數據至為未成功執行數據同步的數據中心,同時更新重新發送的次數;
[0041]具體涉及的步驟有:
[0042]步驟5-1:設定對各數據中心進行數據檢查