專利名稱:一種分布式系統(tǒng)中的數(shù)據(jù)同步方法和分布式系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是一種分布式系統(tǒng)中的數(shù)據(jù)同步方法和分布式系統(tǒng)。
背景技術(shù):
在計(jì)算機(jī)技術(shù)中,通?;谏a(chǎn)者-消費(fèi)者模型的設(shè)計(jì)架構(gòu)。在生產(chǎn)者-消費(fèi)者模型中,生產(chǎn)者用于生產(chǎn)數(shù)據(jù),這些數(shù)據(jù)再由消費(fèi)者來(lái)負(fù)責(zé)處理。請(qǐng)參閱圖1,其為現(xiàn)有技術(shù)中一種基于生產(chǎn)者-消費(fèi)者模型的架構(gòu)示意圖。如圖I所示,生產(chǎn)者將數(shù)據(jù)寫入緩沖區(qū)中, 消費(fèi)者再?gòu)木彺鎱^(qū)中讀取數(shù)據(jù)進(jìn)行處理。這種基于生產(chǎn)者-消費(fèi)者模型的數(shù)據(jù)訪問(wèn)方式,能夠支持解耦、并發(fā)和忙閑不均等情況。例如,鍵盤輸入程序是生產(chǎn)者,屏幕顯示程序是消費(fèi)者,字符是鍵盤輸入程序生產(chǎn)的數(shù)據(jù),鍵盤輸入程序?qū)⑸a(chǎn)的字符寫入緩沖區(qū),屏幕顯示程序再?gòu)木彌_區(qū)中讀取字符,對(duì)字符進(jìn)行顯示處理。但是,發(fā)明人在研究中發(fā)現(xiàn),現(xiàn)有的這種生產(chǎn)者-消費(fèi)者模型只能支持在同一個(gè)數(shù)據(jù)中心上的不同子系統(tǒng)中完成數(shù)據(jù)的訪問(wèn),例如,模型中的生產(chǎn)者位于數(shù)據(jù)中心A上的子系統(tǒng)I中,消費(fèi)者位于數(shù)據(jù)中心A上的子系統(tǒng)2中,子系統(tǒng)2中的消費(fèi)者對(duì)子系統(tǒng)I中的生產(chǎn)者所生產(chǎn)的數(shù)據(jù)進(jìn)行處理。通常,“數(shù)據(jù)中心”就是指以外包方式讓許多網(wǎng)上公司存放它們的設(shè)備,主要是網(wǎng)站服務(wù)器,或者存放數(shù)據(jù)的地方,是場(chǎng)地出租概念在因特網(wǎng)領(lǐng)域的延伸。如,數(shù)據(jù)中心為中國(guó)電信北京海淀機(jī)房。“子系統(tǒng)”就是實(shí)現(xiàn)一個(gè)或多個(gè)接口,這些接口定義子系統(tǒng)可以執(zhí)行的行為。也就是說(shuō),子系統(tǒng)提供可調(diào)用的接口,完成可執(zhí)行的行為。子系統(tǒng)部署在位于數(shù)據(jù)中心的網(wǎng)站服務(wù)器上,而在現(xiàn)有的生產(chǎn)者-消費(fèi)者模型中,不同的子系統(tǒng)可以部署在位于同一個(gè)數(shù)據(jù)中心的同一個(gè)網(wǎng)站服務(wù)器上,也可以部署在位于同一個(gè)數(shù)據(jù)中心的不同網(wǎng)站服務(wù)器上。而對(duì)于位于不同數(shù)據(jù)中心的生產(chǎn)者和消費(fèi)者,例如,生產(chǎn)者位于數(shù)據(jù)中心A的子系統(tǒng)I中,而消費(fèi)者位于數(shù)據(jù)中心B的子系統(tǒng)2中,現(xiàn)有的生產(chǎn)者-消費(fèi)者模型則無(wú)法實(shí)現(xiàn)數(shù)據(jù)的訪問(wèn),即,數(shù)據(jù)中心A的消費(fèi)者無(wú)法對(duì)遠(yuǎn)程的數(shù)據(jù)中心B的生產(chǎn)者所生產(chǎn)的數(shù)據(jù)進(jìn)行處理。
發(fā)明內(nèi)容
為了解決上述技術(shù)問(wèn)題,本申請(qǐng)實(shí)施例提供了一種分布式系統(tǒng)中的數(shù)據(jù)同步方法和分布式系統(tǒng),以能夠支持本地的消費(fèi)者對(duì)遠(yuǎn)程的生產(chǎn)者生產(chǎn)的數(shù)據(jù)進(jìn)行處理。本申請(qǐng)實(shí)施例公開了如下技術(shù)方案—種分布式系統(tǒng),包括至少兩個(gè)子系統(tǒng),每個(gè)子系統(tǒng)分別位于不同的數(shù)據(jù)中心上,其中,每個(gè)子系統(tǒng)包括消費(fèi)者模塊、生產(chǎn)者模塊、消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊,在位于任意一個(gè)數(shù)據(jù)中心的子系統(tǒng)中,生產(chǎn)者模塊,用于生產(chǎn)數(shù)據(jù),將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊;
消費(fèi)者模塊,用于從本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),對(duì)讀取的數(shù)據(jù)進(jìn)行處理;生產(chǎn)者存儲(chǔ)模塊,用于存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊寫入的數(shù)據(jù),向位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù);消費(fèi)者存儲(chǔ)模塊,用于存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊寫入的數(shù)據(jù)和位于本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中的子系統(tǒng)中的生產(chǎn)者存儲(chǔ)模塊同步的數(shù)據(jù)。一種分布式系統(tǒng)中的數(shù)據(jù)同步方法,包括本地子系統(tǒng)的生產(chǎn)者模塊將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊;
本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊向位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù),以便位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者模塊從同步后的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),對(duì)讀取的數(shù)據(jù)進(jìn)行處理。由上述實(shí)施例可以看出,與現(xiàn)有技術(shù)相比,本申請(qǐng)具有如下優(yōu)點(diǎn)分布式系統(tǒng)中分別位于不同數(shù)據(jù)中心的每個(gè)子系統(tǒng)同時(shí)包括生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊,位于一個(gè)數(shù)據(jù)中心的子系統(tǒng)中的生產(chǎn)者存儲(chǔ)模塊跨越數(shù)據(jù)中心向位于其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊進(jìn)行數(shù)據(jù)同步,依次實(shí)現(xiàn)各個(gè)子系統(tǒng)之間的交叉同步,最終保證整個(gè)分布式系統(tǒng)的數(shù)據(jù)同步,從而能夠支持本地的消費(fèi)者對(duì)遠(yuǎn)程的生產(chǎn)者生產(chǎn)的數(shù)據(jù)進(jìn)行處理。并且,對(duì)于每個(gè)子系統(tǒng)而言,向外進(jìn)行數(shù)據(jù)同步過(guò)程和接受外面的數(shù)據(jù)同步過(guò)程可以并發(fā)執(zhí)行,提高了整個(gè)分布式系統(tǒng)的工作效率。
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為現(xiàn)有技術(shù)中一種基于生產(chǎn)者-消費(fèi)者模型的架構(gòu)示意圖;圖2為本申請(qǐng)一種分布式系統(tǒng)的一個(gè)實(shí)施例的結(jié)構(gòu)圖;圖3為本申請(qǐng)中生產(chǎn)者存儲(chǔ)模塊的一個(gè)結(jié)構(gòu)示意圖;圖4為本申請(qǐng)中生產(chǎn)者模塊的一個(gè)結(jié)構(gòu)示意圖;圖5為本申請(qǐng)中消費(fèi)者生產(chǎn)模塊的一個(gè)結(jié)構(gòu)示意圖;圖6為本申請(qǐng)一種分布式系統(tǒng)中的數(shù)據(jù)同步方法的一個(gè)實(shí)施例的流程圖;圖7為本申請(qǐng)一種分布式系統(tǒng)中子系統(tǒng)A對(duì)子系統(tǒng)B進(jìn)行數(shù)據(jù)同步的方法的流程圖。
具體實(shí)施例方式下面結(jié)合附圖及實(shí)施例,對(duì)本申請(qǐng)實(shí)施例進(jìn)行詳細(xì)描述。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本申請(qǐng),并不用于限定本申請(qǐng)。實(shí)施例一
請(qǐng)參閱圖2,其為本申請(qǐng)一種分布式系統(tǒng)的一個(gè)實(shí)施例的結(jié)構(gòu)圖。該系統(tǒng)包括至少兩個(gè)子系統(tǒng)20,每個(gè)子系統(tǒng)20分別位于不同的數(shù)據(jù)中心上,其中,每個(gè)子系統(tǒng)20包括消費(fèi)者模塊202、生產(chǎn)者模塊201、生產(chǎn)者存儲(chǔ)模塊203和消費(fèi)者存儲(chǔ)模塊204,在位于任意一個(gè)數(shù)據(jù)中心的子系統(tǒng)中,生產(chǎn)者模塊201,用于生產(chǎn)數(shù)據(jù),將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊204和生產(chǎn)者存儲(chǔ)模塊203 ;消費(fèi)者模塊202,用于從本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊204中讀取數(shù)據(jù),對(duì)讀取的數(shù)據(jù)進(jìn)行處理;生產(chǎn)者存儲(chǔ)模塊203,用于存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊201寫入的數(shù)據(jù),向位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊204同步所存儲(chǔ)的數(shù)據(jù);消費(fèi)者存儲(chǔ)模塊204,用于存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊201寫入的數(shù)據(jù)和位于 除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的生產(chǎn)者存儲(chǔ)模塊203同步的數(shù)據(jù)。例如,以點(diǎn)擊付費(fèi)系統(tǒng)為例,由海外用戶通過(guò)位于美國(guó)或歐洲數(shù)據(jù)中心的子系統(tǒng)A執(zhí)行一次點(diǎn)擊行為,并產(chǎn)生一個(gè)數(shù)據(jù),數(shù)據(jù)存儲(chǔ)在子系統(tǒng)A中的生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊中,子系統(tǒng)A的生產(chǎn)者存儲(chǔ)模塊將數(shù)據(jù)同步給位于中國(guó)大陸數(shù)據(jù)中心的子系統(tǒng)B中的消費(fèi)者存儲(chǔ)模塊,并進(jìn)一步由子系統(tǒng)B的消費(fèi)者模塊在中國(guó)大陸進(jìn)行消費(fèi)。反過(guò)來(lái),在中國(guó)大陸的數(shù)據(jù)中心也會(huì)產(chǎn)生數(shù)據(jù),該數(shù)據(jù)可以由海外用戶在美國(guó)或者歐洲的數(shù)據(jù)中心消費(fèi)。需要說(shuō)明的是,為了簡(jiǎn)單而清楚地表示分布式系統(tǒng)的結(jié)構(gòu),在圖2中的分布式系統(tǒng)僅包含了兩個(gè)子系統(tǒng)。而在本申請(qǐng)的技術(shù)方案中,分布式系統(tǒng)至少包括兩個(gè)子系統(tǒng),子系統(tǒng)的具體個(gè)數(shù)不在本實(shí)施例中進(jìn)行限定。另外,還需要說(shuō)明的是,在本申請(qǐng)的技術(shù)方案中,“本地子系統(tǒng)”和“位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)”僅僅是一個(gè)相對(duì)概念。舉一個(gè)簡(jiǎn)單的例子,假設(shè)整個(gè)分布式系統(tǒng)中共包含有3個(gè)子系統(tǒng)A、B和C,對(duì)于A而言,當(dāng)其為本地子系統(tǒng)時(shí),B和C就是位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的;對(duì)于B而言,當(dāng)其為本地子系統(tǒng)時(shí),A和C就是位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的,同樣,對(duì)于C而言,當(dāng)其為本地子系統(tǒng),A和B就是位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的。因此,可以明確的是,在本申請(qǐng)的分布式系統(tǒng)中,任意一個(gè)子系統(tǒng)都可以是本地子系統(tǒng),此時(shí),分布式系統(tǒng)中除該本地子系統(tǒng)外的其它子系統(tǒng)都是該本地子系統(tǒng)的遠(yuǎn)程子系統(tǒng)。由于數(shù)據(jù)庫(kù)系統(tǒng)都會(huì)提供相應(yīng)的數(shù)據(jù)庫(kù)同步解決方法,因此,當(dāng)采用數(shù)據(jù)庫(kù)實(shí)現(xiàn)生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊時(shí),可以方便地實(shí)現(xiàn)本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊與遠(yuǎn)程子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊之間的數(shù)據(jù)同步。優(yōu)選的,生產(chǎn)者存儲(chǔ)模塊203為一個(gè)主數(shù)據(jù)庫(kù),消費(fèi)者存儲(chǔ)模塊204為一個(gè)從數(shù)據(jù)庫(kù),所述主數(shù)據(jù)庫(kù)將存儲(chǔ)的數(shù)據(jù)復(fù)制到所述從數(shù)據(jù)庫(kù)中。進(jìn)一步優(yōu)選的,主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)包括SQL Server數(shù)據(jù)庫(kù)、Oracle Server數(shù)據(jù)庫(kù)、Mysql數(shù)據(jù)庫(kù)、Sybase ASE數(shù)據(jù)庫(kù)或者DB2數(shù)據(jù)庫(kù)等。
例如,以Mysql數(shù)據(jù)庫(kù)為例,在mysql數(shù)據(jù)庫(kù)A中配置數(shù)據(jù)庫(kù)B的主機(jī)信息及訪問(wèn)口令,mysql會(huì)自動(dòng)同步數(shù)據(jù)庫(kù)A的數(shù)據(jù)到數(shù)據(jù)庫(kù)B,即A庫(kù)的數(shù)據(jù)變更,包括修改新增等操作會(huì)同步到B庫(kù)。最后,重啟主數(shù)據(jù)庫(kù)A及從數(shù)據(jù)庫(kù)B,同步即生效,主數(shù)據(jù)庫(kù)A中的數(shù)據(jù)會(huì)同步到從數(shù)據(jù)庫(kù)B中。除了采用數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊之外,也可以由獨(dú)立的邏輯功能模塊實(shí)現(xiàn)生產(chǎn)者存儲(chǔ)模塊,使本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊將數(shù)據(jù)同步到遠(yuǎn)程子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊。優(yōu)選的,請(qǐng)參閱圖3,其為本申請(qǐng)中生產(chǎn)者存儲(chǔ)模塊的一個(gè)結(jié)構(gòu)示意圖。如圖3所示,生產(chǎn)者存儲(chǔ)模塊203包括存儲(chǔ)子模塊2031、監(jiān)聽子模塊2032和同步子模塊2034,其中,存儲(chǔ)子模塊2031,用于存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊201寫入的數(shù)據(jù);監(jiān)聽子模塊2032,用于監(jiān)測(cè)存儲(chǔ)子模塊2031是否有數(shù)據(jù)寫入,如果是,啟動(dòng)同步·子模塊2033,否則,繼續(xù)檢測(cè)存儲(chǔ)子模塊2032 ;同步子模塊2033,用于將存儲(chǔ)子模塊2031存儲(chǔ)的數(shù)據(jù)寫入到位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊中。進(jìn)一步優(yōu)選的,存儲(chǔ)子模塊2031包括隊(duì)列緩沖區(qū)或者環(huán)形緩沖區(qū)。例如,存儲(chǔ)子模塊為一個(gè)環(huán)形隊(duì)列,在數(shù)據(jù)寫入接口中設(shè)置一個(gè)觀察者模式的數(shù)據(jù)監(jiān)聽器,這個(gè)數(shù)據(jù)監(jiān)聽器即為監(jiān)聽子模塊,當(dāng)將數(shù)據(jù)寫入環(huán)形隊(duì)列的同時(shí),數(shù)據(jù)寫入接口向監(jiān)聽器發(fā)送notify消息,通過(guò)notify消息把數(shù)據(jù)操作的內(nèi)容發(fā)送給監(jiān)聽器,監(jiān)聽器是一個(gè)異步線程,收到消息后異步調(diào)用寫入接口,寫入接口即為同步子模塊,寫入接口將環(huán)形隊(duì)列中的數(shù)據(jù)寫入到位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊,完成數(shù)據(jù)同步。需要說(shuō)明的是,存儲(chǔ)子模塊除了可以是隊(duì)列緩沖區(qū)或者環(huán)形緩沖區(qū)外,還可以是其它的具有存儲(chǔ)功能的介質(zhì)。在本申請(qǐng)的技術(shù)方案中,對(duì)存儲(chǔ)子模塊的存在形式并不進(jìn)行具體限定。另外,優(yōu)選的,生產(chǎn)者模塊201除了包括用于生產(chǎn)數(shù)據(jù)的生產(chǎn)子模塊,和用于將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊的數(shù)據(jù)寫入子模塊之外,請(qǐng)參閱圖4,其為本申請(qǐng)中生產(chǎn)者模塊的一個(gè)結(jié)構(gòu)示意圖,如圖4所示,生產(chǎn)者模塊201還包括記錄子模塊2013和時(shí)間寫入子模塊2014,其中,記錄子模塊2013,用于記錄數(shù)據(jù)的生產(chǎn)時(shí)間;時(shí)間寫入子模塊2014,用于將數(shù)據(jù)的生產(chǎn)時(shí)間一同寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊。與圖4所示的生產(chǎn)者消費(fèi)模塊相對(duì)應(yīng),請(qǐng)參閱圖5,為本申請(qǐng)中消費(fèi)者生產(chǎn)模塊的一個(gè)結(jié)構(gòu)示意圖,如圖5所示,消費(fèi)者存儲(chǔ)模塊204包括排序子模塊2041和處理子模塊2042,其中,排序子模塊2041,用于從本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),按照數(shù)據(jù)的生產(chǎn)時(shí)間對(duì)讀取的數(shù)據(jù)進(jìn)行排序;處理子模塊2042,用于按照生產(chǎn)時(shí)間的先后順序?qū)?shù)據(jù)進(jìn)行處理。由上述實(shí)施例可以看出,與現(xiàn)有技術(shù)相比,本申請(qǐng)具有如下優(yōu)點(diǎn)
分布式系統(tǒng)中分別位于不同數(shù)據(jù)中心的每個(gè)子系統(tǒng)同時(shí)包括生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊,位于一個(gè)數(shù)據(jù)中心的子系統(tǒng)中的生產(chǎn)者存儲(chǔ)模塊跨越數(shù)據(jù)中心向位于其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊進(jìn)行數(shù)據(jù)同步,依次實(shí)現(xiàn)各個(gè)子系統(tǒng)之間的交叉同步,最終保證整個(gè)分布式系統(tǒng)的數(shù)據(jù)同步,從而能夠支持本地的消費(fèi)者對(duì)遠(yuǎn)程的生產(chǎn)者生產(chǎn)的數(shù)據(jù)進(jìn)行處理。并且,對(duì)于每個(gè)子系統(tǒng)而言,向外進(jìn)行數(shù)據(jù)同步過(guò)程和接受外面的數(shù)據(jù)同步過(guò)程可以并發(fā)執(zhí)行,提高了整個(gè)分布式系統(tǒng)的工作效率。實(shí)施例二與實(shí)施例一中的分布系統(tǒng)相對(duì)應(yīng),本申請(qǐng)實(shí)施例還提供了一種分布式系統(tǒng)中的數(shù)據(jù)同步方法。請(qǐng)參閱圖6,其為本申請(qǐng)一種分布式系統(tǒng)中的數(shù)據(jù)同步方法的一個(gè)實(shí)施例的流程圖。其中,同步方法包括以下步驟步驟601 :本地子系統(tǒng)的生產(chǎn)者模塊將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊; 需要說(shuō)明的是,在本申請(qǐng)的技術(shù)方案中,并不限定生產(chǎn)者模塊將數(shù)據(jù)寫入生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊的寫入順序,可以將數(shù)據(jù)同時(shí)寫入到生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊,也可以先寫入任意一個(gè)存儲(chǔ)模塊,再寫入另一個(gè)存儲(chǔ)模塊。為了使消費(fèi)者模塊按照一定的順序處理數(shù)據(jù),本地子系統(tǒng)的生產(chǎn)者模塊在將數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊的同時(shí),也記錄數(shù)據(jù)生產(chǎn)時(shí)間,將數(shù)據(jù)以及對(duì)應(yīng)的數(shù)據(jù)生產(chǎn)時(shí)間一同寫入。因此,優(yōu)選的,所述本地子系統(tǒng)的生產(chǎn)者模塊將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊包括本地子系統(tǒng)的生產(chǎn)者模塊在生產(chǎn)數(shù)據(jù)的同時(shí),記錄數(shù)據(jù)的生產(chǎn)時(shí)間;本地子系統(tǒng)的生產(chǎn)者模塊將生產(chǎn)的數(shù)據(jù)和數(shù)據(jù)的生產(chǎn)時(shí)間寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊。步驟602 :本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊向位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù),以便位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者模塊從同步后的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),對(duì)讀取的數(shù)據(jù)進(jìn)行處理。優(yōu)選的,所述本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊向遠(yuǎn)程子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù)包括本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊監(jiān)測(cè)是否有數(shù)據(jù)寫入;一旦監(jiān)測(cè)到有數(shù)據(jù)寫入,本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊將當(dāng)前寫入的數(shù)據(jù)寫入到遠(yuǎn)程子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊中。當(dāng)然,除了利用上述的監(jiān)測(cè)方式,在數(shù)據(jù)一旦寫入生產(chǎn)者存儲(chǔ)模塊后,即執(zhí)行數(shù)據(jù)同步外,生產(chǎn)者存儲(chǔ)模塊也可以定時(shí)將存儲(chǔ)的數(shù)據(jù)進(jìn)行同步。例如,設(shè)定一個(gè)同步周期,同時(shí),生產(chǎn)者存儲(chǔ)模塊在存儲(chǔ)數(shù)據(jù)時(shí)記錄下數(shù)據(jù)的存儲(chǔ)時(shí)間,例如以時(shí)間戳的方式記錄下數(shù)據(jù)的存儲(chǔ)時(shí)間。在當(dāng)前同步周期到達(dá)時(shí),生產(chǎn)者存儲(chǔ)模塊根據(jù)時(shí)間戳識(shí)別出在上一個(gè)同步周期與當(dāng)前不同周期之間存儲(chǔ)的數(shù)據(jù),將識(shí)別出的數(shù)據(jù)進(jìn)行同步。另外,如果生產(chǎn)者模塊在向本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊寫入數(shù)據(jù)的同時(shí),也寫入了數(shù)據(jù)的生產(chǎn)時(shí)間,則本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊在進(jìn)行數(shù)據(jù)同步時(shí),也同樣要同步數(shù)據(jù)的生產(chǎn)時(shí)間。因此,所述本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊向位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù)包括本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊監(jiān)測(cè)是否有數(shù)據(jù)寫入;一旦監(jiān)測(cè)到有數(shù)據(jù)寫入,本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊將當(dāng)前寫入的數(shù)據(jù)和數(shù)據(jù)的生產(chǎn)時(shí)間寫入到位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊中。同樣,當(dāng)生產(chǎn)者模塊向遠(yuǎn)程子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊同步數(shù)據(jù)和數(shù)據(jù)的生產(chǎn)時(shí)間時(shí),除了利用上述的監(jiān)測(cè)方式外,生產(chǎn)者存儲(chǔ)模塊也可以定時(shí)將存儲(chǔ)的數(shù)據(jù)和數(shù)據(jù)產(chǎn)生時(shí)間進(jìn)行同步。例如,設(shè)定一個(gè)同步周期,同時(shí),生產(chǎn)者存儲(chǔ)模塊在存儲(chǔ)數(shù)據(jù)時(shí)記錄下數(shù)據(jù)和對(duì)應(yīng)生產(chǎn)時(shí)間的存儲(chǔ)時(shí)間,例如以時(shí)間戳的方式記錄下數(shù)據(jù)的存儲(chǔ)時(shí)間。在當(dāng)前同步周期到達(dá)時(shí),生產(chǎn)者存儲(chǔ)模塊根據(jù)時(shí)間戳識(shí)別出在上一個(gè)同步周期與當(dāng)前不同周期之間存儲(chǔ)的數(shù)據(jù)和對(duì)應(yīng)的生產(chǎn)時(shí)間,將識(shí)別出的數(shù)據(jù)和 對(duì)應(yīng)的生產(chǎn)時(shí)間進(jìn)行同步。進(jìn)一步優(yōu)選的,在本地子系統(tǒng)的生產(chǎn)者模塊將數(shù)據(jù)和對(duì)應(yīng)的生產(chǎn)日期都寫入生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊的情況下,當(dāng)生產(chǎn)者存儲(chǔ)模塊將存儲(chǔ)的數(shù)據(jù)對(duì)遠(yuǎn)程子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊進(jìn)行同步后,遠(yuǎn)程子系統(tǒng)的消費(fèi)者模塊就會(huì)按照數(shù)據(jù)的生產(chǎn)時(shí)間的先后順序?qū)?shù)據(jù)進(jìn)行處理。因此,所述遠(yuǎn)程子系統(tǒng)的消費(fèi)者模塊從同步后的消費(fèi)者存儲(chǔ)模塊讀取數(shù)據(jù),對(duì)讀取的數(shù)據(jù)進(jìn)行處理包括位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者模塊從同步后的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),按照數(shù)據(jù)的生產(chǎn)時(shí)間對(duì)讀取的數(shù)據(jù)進(jìn)行排序;位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者模塊按照生產(chǎn)時(shí)間的先后順序?qū)?shù)據(jù)進(jìn)行處理。顯然,這樣可以實(shí)現(xiàn)數(shù)據(jù)處理的順序性。需要說(shuō)明的是,無(wú)論是本地子系統(tǒng)還是位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng),消費(fèi)者模塊從消費(fèi)者存儲(chǔ)模塊讀取數(shù)據(jù)的流程與生產(chǎn)者模塊向生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊寫入的數(shù)據(jù)的流程沒(méi)有嚴(yán)格的先后順序關(guān)系,即,讀取數(shù)據(jù)的過(guò)程和寫入數(shù)據(jù)的過(guò)程是并發(fā)進(jìn)行的。當(dāng)采用監(jiān)測(cè)方式實(shí)現(xiàn)數(shù)據(jù)同步時(shí),生產(chǎn)者模塊向生產(chǎn)者存儲(chǔ)模塊寫入數(shù)據(jù)的流程與生產(chǎn)者存儲(chǔ)模塊同步數(shù)據(jù)的流程具有確定的先后順序,當(dāng)采用定時(shí)方式實(shí)現(xiàn)數(shù)據(jù)同步時(shí),數(shù)據(jù)寫入的過(guò)程和同步的過(guò)程也是并發(fā)進(jìn)行的。最后,需要說(shuō)明的是,在本申請(qǐng)的技術(shù)方案中,“本地子系統(tǒng)”和“位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的”僅僅是一個(gè)相對(duì)概念??梢悦鞔_的是,在本申請(qǐng)的分布式系統(tǒng)中,任意一個(gè)子系統(tǒng)都可以是本地子系統(tǒng)。由上述實(shí)施例可以看出,與現(xiàn)有技術(shù)相比,本申請(qǐng)具有如下優(yōu)點(diǎn)分布式系統(tǒng)中分別位于不同數(shù)據(jù)中心的每個(gè)子系統(tǒng)同時(shí)包括生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊,位于一個(gè)數(shù)據(jù)中心的子系統(tǒng)中的生產(chǎn)者存儲(chǔ)模塊跨越數(shù)據(jù)中心向位于其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊進(jìn)行數(shù)據(jù)同步,依次實(shí)現(xiàn)各個(gè)子系統(tǒng)之間的交叉同步,最終保證整個(gè)分布式系統(tǒng)的數(shù)據(jù)同步,從而能夠支持本地的消費(fèi)者對(duì)遠(yuǎn)程的生產(chǎn)者生產(chǎn)的數(shù)據(jù)進(jìn)行處理。并且,對(duì)于每個(gè)子系統(tǒng)而言,向外進(jìn)行數(shù)據(jù)同步過(guò)程和接受外面的數(shù)據(jù)同步過(guò)程可以并發(fā)執(zhí)行,提高了整個(gè)分布式系統(tǒng)的工作效率。實(shí)施例三下面針對(duì)圖2中僅包含兩個(gè)子系統(tǒng)A和B的分布式系統(tǒng),假設(shè)A為本地子系統(tǒng),B為位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng),詳細(xì)說(shuō)明在分布式系統(tǒng)中A對(duì)B進(jìn)行數(shù)據(jù)同步的方法。B對(duì)A的同步與A對(duì)B的同步相同,在本實(shí)施例中就不再重復(fù)描述。最終A與B之間實(shí)現(xiàn)交叉同步,達(dá)到整個(gè)分布式系統(tǒng)的數(shù)據(jù)同步。請(qǐng)參閱圖7,其為本申請(qǐng)一種分布式系統(tǒng)中子系統(tǒng)A對(duì)子系統(tǒng)B進(jìn)行數(shù)據(jù)同步的方法的流程圖,包括以下步驟步驟701 :子系統(tǒng)A中的生產(chǎn)者生產(chǎn)數(shù)據(jù),并記錄數(shù)據(jù)的生產(chǎn)時(shí)間;步驟702 :子系統(tǒng)A中的生產(chǎn)者模塊將生產(chǎn)的數(shù)據(jù)和記錄的數(shù)據(jù)生產(chǎn)時(shí)間寫入到子系統(tǒng)A中的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊;步驟703 :子系統(tǒng)A中的生產(chǎn)者存儲(chǔ)模塊監(jiān)測(cè)是否有數(shù)據(jù)寫入;步驟704:當(dāng)監(jiān)測(cè)到當(dāng)前有數(shù)據(jù)寫入時(shí),子系統(tǒng)A中的生產(chǎn)者存儲(chǔ)模塊將當(dāng)前寫入的數(shù)據(jù)和對(duì)應(yīng)的生產(chǎn)時(shí)間同步到子系統(tǒng)B中的消費(fèi)者存儲(chǔ)模塊;
步驟705 :子系統(tǒng)B中的消費(fèi)者模塊從同步后的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),按照數(shù)據(jù)的生產(chǎn)時(shí)間對(duì)讀取的數(shù)據(jù)進(jìn)行排序;步驟706 :子系統(tǒng)B的消費(fèi)者模塊按照生產(chǎn)時(shí)間的先后順序?qū)?shù)據(jù)進(jìn)行處理。由上述實(shí)施例可以看出,與現(xiàn)有技術(shù)相比,本申請(qǐng)具有如下優(yōu)點(diǎn)分布式系統(tǒng)中分別位于不同數(shù)據(jù)中心的每個(gè)子系統(tǒng)同時(shí)包括生產(chǎn)者存儲(chǔ)模塊和消費(fèi)者存儲(chǔ)模塊,位于一個(gè)數(shù)據(jù)中心的子系統(tǒng)中的生產(chǎn)者存儲(chǔ)模塊跨越數(shù)據(jù)中心向位于其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊進(jìn)行數(shù)據(jù)同步,依次實(shí)現(xiàn)各個(gè)子系統(tǒng)之間的交叉同步,最終保證整個(gè)分布式系統(tǒng)的數(shù)據(jù)同步,從而能夠支持本地的消費(fèi)者對(duì)遠(yuǎn)程的生產(chǎn)者生產(chǎn)的數(shù)據(jù)進(jìn)行處理。并且,對(duì)于每個(gè)子系統(tǒng)而言,向外進(jìn)行數(shù)據(jù)同步過(guò)程和接受外面的數(shù)據(jù)同步過(guò)程可以并發(fā)執(zhí)行,提高了整個(gè)分布式系統(tǒng)的工作效率。以上對(duì)本申請(qǐng)所提供的一種分布式系統(tǒng)中的數(shù)據(jù)同步方法和分布式系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體實(shí)施例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,在不脫離本發(fā)明描述的原理前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種分布式系統(tǒng),其特征在于,包括至少兩個(gè)子系統(tǒng),每個(gè)子系統(tǒng)分別位于不同的數(shù)據(jù)中心上,其中,每個(gè)子系統(tǒng)包括消費(fèi)者模塊、生產(chǎn)者模塊、消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊,在位于任意一個(gè)數(shù)據(jù)中心的子系統(tǒng)中, 生產(chǎn)者模塊,用于生產(chǎn)數(shù)據(jù),將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊; 消費(fèi)者模塊,用于從本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),對(duì)讀取的數(shù)據(jù)進(jìn)行處理; 生產(chǎn)者存儲(chǔ)模塊,用于存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊寫入的數(shù)據(jù),向位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù); 消費(fèi)者存儲(chǔ)模塊,用于存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊寫入的數(shù)據(jù)和位于本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中的子系統(tǒng)中的生產(chǎn)者存儲(chǔ)模塊同步的數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的系統(tǒng),其特征在于,所述生產(chǎn)者存儲(chǔ)模塊為一個(gè)主數(shù)據(jù)庫(kù),所述消費(fèi)者存儲(chǔ)模塊為一個(gè)從數(shù)據(jù)庫(kù),所述主數(shù)據(jù)庫(kù)將存儲(chǔ)的數(shù)據(jù)復(fù)制到所述從數(shù)據(jù)庫(kù)中。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)包括SQLServer數(shù)據(jù)庫(kù)、OracIe Server數(shù)據(jù)庫(kù)、Mysql數(shù)據(jù)庫(kù)、Sybase ASE數(shù)據(jù)庫(kù)或者DB2數(shù)據(jù)庫(kù)。
4.根據(jù)權(quán)利要求I所述的系統(tǒng),其特征在于,所述生產(chǎn)者存儲(chǔ)模塊包括存儲(chǔ)子模塊,監(jiān)聽子模塊和同步子模塊,其中, 所述存儲(chǔ)子模塊,用于存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊寫入的數(shù)據(jù); 所述監(jiān)聽子模塊,用于監(jiān)測(cè)存儲(chǔ)子模塊是否有數(shù)據(jù)寫入,如果是,啟動(dòng)所述同步子模塊,否則,繼續(xù)監(jiān)測(cè)存儲(chǔ)子模塊; 所述同步子模塊,用于將所述存儲(chǔ)子模塊存儲(chǔ)的數(shù)據(jù)寫入到位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊中。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述存儲(chǔ)子模塊包括隊(duì)列緩沖區(qū)或者環(huán)形緩沖區(qū)。
6.根據(jù)權(quán)利要求1-5中的任意一項(xiàng)所述的系統(tǒng),其特征在于,生產(chǎn)者模塊還包括記錄子模塊和時(shí)間寫入子模塊,其中, 記錄子模塊,用于記錄數(shù)據(jù)的生產(chǎn)時(shí)間; 時(shí)間寫入子模塊,用于將數(shù)據(jù)的生產(chǎn)時(shí)間一同寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述消費(fèi)者存儲(chǔ)模塊包括 排序子模塊,用于從本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),按照數(shù)據(jù)的生產(chǎn)時(shí)間對(duì)讀取的數(shù)據(jù)進(jìn)行排序; 處理子模塊,用于按照生產(chǎn)時(shí)間的先后順序?qū)?shù)據(jù)進(jìn)行處理。
8.一種分布式系統(tǒng)中的數(shù)據(jù)同步方法,其特征在于,包括 本地子系統(tǒng)的生產(chǎn)者模塊將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊; 本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊向位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù),以便位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者模塊從同步后的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),對(duì)讀取的數(shù)據(jù)進(jìn)行處理。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述本地子系統(tǒng)的生產(chǎn)者模塊將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊包括 本地子系統(tǒng)的生產(chǎn)者模塊在生產(chǎn)數(shù)據(jù)的同時(shí),記錄數(shù)據(jù)的生產(chǎn)時(shí)間; 本地子系統(tǒng)的生產(chǎn)者模塊將生產(chǎn)的數(shù)據(jù)和數(shù)據(jù)的生產(chǎn)時(shí)間寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊向位于本地直通所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù)包括 本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊監(jiān)測(cè)是否有數(shù)據(jù)寫入; 一旦監(jiān)測(cè)到有數(shù)據(jù)寫入,本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊將當(dāng)前寫入的數(shù)據(jù)寫入到位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊中。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊向位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù)包括 本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊監(jiān)測(cè)是否有數(shù)據(jù)寫入; 一旦監(jiān)測(cè)到有數(shù)據(jù)寫入,本地子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊將當(dāng)前寫入的數(shù)據(jù)和數(shù)據(jù)的生產(chǎn)時(shí)間寫入到位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊中。
12.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述遠(yuǎn)程子系統(tǒng)的消費(fèi)者模塊從同步后的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),對(duì)讀取的數(shù)據(jù)進(jìn)行處理包括 位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者模塊從同步后的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),按照數(shù)據(jù)的生產(chǎn)時(shí)間對(duì)讀取的數(shù)據(jù)進(jìn)行排序; 位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者模塊按照生產(chǎn)時(shí)間的先后順序?qū)?shù)據(jù)進(jìn)行處理。
全文摘要
本申請(qǐng)實(shí)施例公開了一種分布式系統(tǒng)中的數(shù)據(jù)同步方法和分布式系統(tǒng)。分布式系統(tǒng)包括至少兩個(gè)子系統(tǒng),每個(gè)子系統(tǒng)分別位于不同的數(shù)據(jù)中心上,其中,每個(gè)子系統(tǒng)包括消費(fèi)者模塊、生產(chǎn)者模塊、消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊,在位于任意一個(gè)數(shù)據(jù)中心的子系統(tǒng)中,生產(chǎn)者模塊生產(chǎn)數(shù)據(jù),將生產(chǎn)的數(shù)據(jù)寫入到本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊和生產(chǎn)者存儲(chǔ)模塊;消費(fèi)者模塊從本地子系統(tǒng)的消費(fèi)者存儲(chǔ)模塊中讀取數(shù)據(jù),對(duì)讀取的數(shù)據(jù)進(jìn)行處理;生產(chǎn)者存儲(chǔ)模塊存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊寫入的數(shù)據(jù),向位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)中的消費(fèi)者存儲(chǔ)模塊同步所存儲(chǔ)的數(shù)據(jù);消費(fèi)者存儲(chǔ)模塊存儲(chǔ)本地子系統(tǒng)的生產(chǎn)者模塊寫入的數(shù)據(jù)和位于除本地子系統(tǒng)所在的數(shù)據(jù)中心之外的其它數(shù)據(jù)中心的子系統(tǒng)的生產(chǎn)者存儲(chǔ)模塊同步的數(shù)據(jù)。根據(jù)本申請(qǐng)實(shí)施例,能夠支持本地的消費(fèi)者對(duì)遠(yuǎn)程的生產(chǎn)者生產(chǎn)的數(shù)據(jù)進(jìn)行處理。
文檔編號(hào)G06F17/30GK102760126SQ201110105169
公開日2012年10月31日 申請(qǐng)日期2011年4月26日 優(yōu)先權(quán)日2011年4月26日
發(fā)明者李彥超, 李智慧, 李鼎, 潘磊, 雷繼斌 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司