碼壓縮后的變化數(shù)據(jù)作為消息寫(xiě)入到第一消息隊(duì)列服務(wù)器120中的第一消息隊(duì)列。第一消息隊(duì)列服務(wù)器120將第一消息隊(duì)列中的消息發(fā)送給第而第二消息隊(duì)列服務(wù)器130。其中,第一消息隊(duì)列服務(wù)器120和第二消息隊(duì)列服務(wù)器130 —般設(shè)置在不同的城市,每一個(gè)城市設(shè)置多臺(tái)消息隊(duì)列服務(wù)器,例如,第一消息隊(duì)列服務(wù)器集群和第二消息隊(duì)列服務(wù)集群。
[0046]根據(jù)一種實(shí)施方式,第一消息隊(duì)列服務(wù)器120和第二消息隊(duì)列服務(wù)器130之間具有多條通信鏈路,第一消息隊(duì)列服務(wù)器120在發(fā)送信息時(shí)支持多源多目標(biāo)。因此,在進(jìn)行消息傳輸時(shí),第一消息隊(duì)列服務(wù)器120還可以根據(jù)預(yù)定策略從多條通信鏈路中選擇一條或者一條以上的鏈路進(jìn)行消息的傳輸。例如,第一消息隊(duì)列服務(wù)器設(shè)置在石家莊,第二消息隊(duì)列服務(wù)器設(shè)置在北京,通常情況下消息可以由石家莊服務(wù)器直接發(fā)送給北京的服務(wù)器。但是,如果由石家莊服務(wù)器到北京服務(wù)器的通信鏈路出現(xiàn)故障了,此時(shí),石家莊的服務(wù)器可以將消息發(fā)送到設(shè)置在例如濟(jì)南的服務(wù)器,再由濟(jì)南的服務(wù)器將信息發(fā)送到北京的服務(wù)器。因此,在某條通信鏈路出現(xiàn)故障時(shí),可以實(shí)時(shí)切換通信鏈路,自動(dòng)選擇通信最快的鏈路,實(shí)現(xiàn)尚可用。
[0047]設(shè)置在另一個(gè)城市的第二消息服務(wù)器130會(huì)將接收到的消息寫(xiě)入到第二消息隊(duì)列,消息隊(duì)列消費(fèi)者服務(wù)器140根據(jù)接收的消息得到變化數(shù)據(jù),并將變化數(shù)據(jù)解壓縮及解碼,對(duì)目標(biāo)數(shù)據(jù)庫(kù)進(jìn)行更新。
[0048]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的消息隊(duì)列消費(fèi)者服務(wù)器140的示意圖。
[0049]如圖3所示,消息隊(duì)列消費(fèi)者服務(wù)器140包括讀消息隊(duì)列單元142、解壓縮單元144和數(shù)據(jù)更新單元146。
[0050]讀消息隊(duì)列單元142從第二消息隊(duì)列中讀取消息,得到編碼壓縮后的變化數(shù)據(jù)。解壓縮單元144根據(jù)上述數(shù)據(jù),對(duì)編碼和壓縮后的變化數(shù)據(jù)進(jìn)行解壓縮及解碼。最后,數(shù)據(jù)更新單元146根據(jù)解壓縮和解碼后的變化數(shù)據(jù)對(duì)目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行更新。另外,變化數(shù)據(jù)在目標(biāo)數(shù)據(jù)庫(kù)進(jìn)行同步時(shí),消息隊(duì)列消費(fèi)者服務(wù)器增加了提前通知機(jī)制,更加實(shí)用。
[0051]應(yīng)當(dāng)理解的是,上面對(duì)數(shù)據(jù)解壓縮和解碼的方式可以有多種。因此,本發(fā)明不受限于數(shù)據(jù)解壓縮方式的具體形式,所有可以實(shí)現(xiàn)數(shù)據(jù)解壓縮的方式都在本發(fā)明的保護(hù)范圍內(nèi)。
[0052]根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,在進(jìn)行數(shù)據(jù)庫(kù)同步時(shí),引入了基于消息隊(duì)列的同步技術(shù),消息傳送速度快、消息路由靈活(比如多路的實(shí)現(xiàn)),能夠滿(mǎn)足跨IDC數(shù)據(jù)庫(kù)同步時(shí)高性能、低延時(shí)的需求。
[0053]根據(jù)本發(fā)明的技術(shù)方案,面對(duì)不同的源數(shù)據(jù)庫(kù)數(shù)據(jù),采用多種數(shù)據(jù)捕獲策略,數(shù)據(jù)捕獲速度得到提高。將變化數(shù)據(jù)進(jìn)行壓縮,減少傳送數(shù)據(jù)的大小,獲得更好的傳輸速度和性能。采用多條通信鏈路,支持多源多目標(biāo),實(shí)現(xiàn)實(shí)時(shí)切換,選擇最佳通信鏈路,實(shí)現(xiàn)高可用。
[0054]圖4示出了根據(jù)本發(fā)明示例性實(shí)施例的數(shù)據(jù)同步方法400的流程圖。本發(fā)明的數(shù)據(jù)同步方法可以將該數(shù)據(jù)同步源數(shù)據(jù)庫(kù)中的數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫(kù)中,該方法始于步驟S410o
[0055]在步驟S410中,根據(jù)預(yù)定的捕獲策略捕獲源數(shù)據(jù)庫(kù)的變化數(shù)據(jù)。
[0056]捕獲策略可以包括:數(shù)據(jù)庫(kù)觸發(fā)器、變更數(shù)據(jù)捕獲服務(wù)和應(yīng)用程序級(jí)捕獲。此時(shí),根據(jù)不同的數(shù)據(jù)源頭分配不同的捕獲策略,例如,為數(shù)據(jù)變化源頭已知的數(shù)據(jù)分配應(yīng)用程序級(jí)的捕獲策略,為數(shù)據(jù)變化源頭未知且實(shí)時(shí)性要求高的數(shù)據(jù)分配數(shù)據(jù)庫(kù)觸發(fā)器的捕獲策略,為數(shù)據(jù)變化源頭未知且實(shí)時(shí)性要求低的數(shù)據(jù)分配變更數(shù)據(jù)捕獲服務(wù)的捕獲策略。
[0057]隨后,在步驟S420中,對(duì)捕獲的變化數(shù)據(jù)進(jìn)行編碼和壓縮。在壓縮之前,要判斷變化數(shù)據(jù)的大小是否大于第一閾值。如果變化數(shù)據(jù)的大小超過(guò)第一閾值,例如,第一閾值為4kb_10kb,則對(duì)變化數(shù)據(jù)進(jìn)行編碼和壓縮,否則不對(duì)變化數(shù)據(jù)進(jìn)行編碼和壓縮。
[0058]對(duì)數(shù)據(jù)進(jìn)行壓縮時(shí),根據(jù)實(shí)際情況使用合適的壓縮程序進(jìn)行壓縮。例如,當(dāng)網(wǎng)絡(luò)帶寬占用比例小于或等于第二閾值(例如80%)時(shí),通過(guò)Gzip程序?qū)ψ兓瘮?shù)據(jù)進(jìn)行編碼和壓縮。當(dāng)網(wǎng)絡(luò)帶寬占用比例大于第二閾值(例如80%)時(shí),通過(guò)7-zip程序?qū)ψ兓瘮?shù)據(jù)進(jìn)行編碼和壓縮。
[0059]應(yīng)當(dāng)理解的是,上面對(duì)數(shù)據(jù)壓縮的方式僅僅是示意性的,可以根據(jù)系統(tǒng)的具體情況,進(jìn)一步選擇合適的壓縮方式。本發(fā)明不受限于數(shù)據(jù)壓縮方式的具體形式,所有可以實(shí)現(xiàn)數(shù)據(jù)壓縮的方式都在本發(fā)明的保護(hù)范圍內(nèi)。
[0060]隨后,在步驟S430中,將編碼和壓縮后的變化數(shù)據(jù)作為消息寫(xiě)入到第一消息隊(duì)列。
[0061]隨后,在步驟S440中,將第一消息隊(duì)列中的消息發(fā)送給第二消息隊(duì)列。
[0062]隨后,在步驟S450中,從第二消息隊(duì)列中讀取信息,得到編碼和壓縮后的變化數(shù)據(jù)。
[0063]隨后,在步驟S460中,對(duì)編碼和壓縮后的變化數(shù)據(jù)進(jìn)行解壓縮及解碼。
[0064]應(yīng)當(dāng)理解的是,對(duì)數(shù)據(jù)解壓縮和解碼的方式可以有多中。因此,本發(fā)明不受限于數(shù)據(jù)解壓縮方式的具體形式,所有可以實(shí)現(xiàn)數(shù)據(jù)解壓縮的方式都在本發(fā)明的保護(hù)范圍內(nèi)。
[0065]隨后,在步驟S470中,根據(jù)解壓縮和解碼后的變化數(shù)據(jù)對(duì)目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行更新。
[0066]根據(jù)本發(fā)明的技術(shù)方案,面對(duì)不同的源數(shù)據(jù)庫(kù)數(shù)據(jù),采用多種數(shù)據(jù)捕獲策略,數(shù)據(jù)捕獲速度得到提高。將變化數(shù)據(jù)進(jìn)行壓縮減少傳送數(shù)據(jù)的大小,獲得更好的傳輸速度和性能。采用多條通信鏈路,支持多源多目標(biāo),實(shí)現(xiàn)實(shí)時(shí)切換,選擇最佳通信鏈路,實(shí)現(xiàn)高可用。
[0067]在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下被實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。
[0068]All:如AS所述的方法,其中所述對(duì)捕獲的變化數(shù)據(jù)進(jìn)行編碼和壓縮的步驟包括:判斷變化數(shù)據(jù)的大小是否大于第一閾值;如果變化數(shù)據(jù)的大小超過(guò)第一閾值,則對(duì)變化數(shù)據(jù)進(jìn)行編碼和壓縮,否則不對(duì)變化數(shù)據(jù)進(jìn)行編碼和壓縮。A12:如Al I所述的方法,其中所述第一閾值為4kb-10kb。A13:如AS所述的方法,其中所述對(duì)捕獲的變化數(shù)據(jù)進(jìn)行編碼和壓縮的步驟還包括:當(dāng)網(wǎng)絡(luò)帶寬占用比例小于或等于第二閾值時(shí),通過(guò)Gzip程序?qū)ψ兓瘮?shù)據(jù)進(jìn)行編碼和壓縮;當(dāng)網(wǎng)絡(luò)帶寬占用比例大于第二閾值時(shí),通過(guò)7-zip程序?qū)ψ兓瘮?shù)據(jù)進(jìn)行編碼和壓縮。A14:如AS所述的方法,其中所述第一消息隊(duì)列和第二消息隊(duì)列之間具有多條通信鏈路,第一消息隊(duì)列還適于根據(jù)預(yù)定策略從所述多條通信鏈路中選擇一條或者一條以上的鏈路進(jìn)行消息的傳輸。
[0069]類(lèi)似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書(shū)由