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