要所述數(shù)據(jù)時,避免了反復在第二機房的第一存儲方與第三機房的訂閱方之間傳輸數(shù)據(jù),而是從本地獲取所述數(shù)據(jù),很大程度地減少了網(wǎng)絡延遲。
[0069]根據(jù)本發(fā)明的實施例,可選地,所述裝置600還可以包括可選模塊:第一刪除模塊(未在圖6中示出),用于在所述同步模塊620通過一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機房的一個或多個第二存儲方,以存儲在第三機房本地之后,通過所述一個或多個第二存儲方將存儲在第三機房本地超過預先定義的第一時間閾值的一份或多份數(shù)據(jù)刪除。在上述實施例中,所述第一刪除模塊采取過期策略,將已經(jīng)存儲在第三機房本地超過預先定義的第一時間閾值的數(shù)據(jù)刪除,避免長期存儲不再使用或者使用率很低的數(shù)據(jù),減少了第三機房本地存儲空間的負擔??梢愿鶕?jù)實際需要設置所述預先定義的第一時間閾值的大小。
[0070]根據(jù)本發(fā)明的實施例,可選地,所述裝置600還可以包括可選模塊:第二刪除模塊(未在圖6中示出),用于在所述同步模塊620通過一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機房的一個或多個第二存儲方,以存儲在第三機房本地之后,在存儲在第三機房本地的所述一份或多份數(shù)據(jù)超過預先定義的大小的情況下,所述一個或多個第二存儲方將存儲在第三機房本地的一份或多份數(shù)據(jù)中存儲時間最長的、超出所述預先定義的大小的一份或多份數(shù)據(jù)刪除。在上述實施例中,所述第二刪除模塊采取過期策略,將已經(jīng)存儲在第三機房本地的一份或多份數(shù)據(jù)中存儲時間最長的、超出所述預先定義的大小的一份或多份數(shù)據(jù)刪除,使得在第三機房本地存儲的數(shù)據(jù)等于或小于所述預先定義的大小,避免長期存儲不再使用或者使用率很低的數(shù)據(jù),減少了第三機房本地存儲空間的負擔??梢愿鶕?jù)實際需要設置所述預先定義的大小。
[0071]根據(jù)本發(fā)明的實施例,所述同步模塊620可以通過所述一個或多個第一存儲方采用有序輪詢的方式將所述一份或多份數(shù)據(jù)同步到所述一個或多個第二存儲方。參見圖2,其中示意性地圖示了根據(jù)本發(fā)明的實施例的一種實施例的采用有序輪詢的方式將數(shù)據(jù)同步到第二存儲方的示意圖。如圖2所示,以位于第二機房的6個存儲方將數(shù)據(jù)同步到位于第三機房的4個存儲方為例,采用有序輪詢的方式,即,所述同步模塊620可以通過第二機房的第一存儲方I將數(shù)據(jù)同步到第三機房的第二存儲方1,通過第二機房的第一存儲方2將數(shù)據(jù)同步到第三機房的第二存儲方2,通過第二機房的第一存儲方3將數(shù)據(jù)同步到第三機房的第二存儲方3,通過第二機房的第一存儲方4將數(shù)據(jù)同步到第三機房的第二存儲方4,通過第二機房的第一存儲方5將數(shù)據(jù)同步到第三機房的第二存儲方I,通過第二機房的第一存儲方6將數(shù)據(jù)同步到第三機房的第二存儲方2。上述示例僅為采取有序輪詢在兩個機房的多個存儲方之間同步數(shù)據(jù)的一種示例,本發(fā)明的范圍不限于此,本領域技術人員可以采用其它順序和對應關系來進行有序輪詢方式的數(shù)據(jù)同步。
[0072]根據(jù)本發(fā)明的實施例,對于其中每一份數(shù)據(jù),所述同步模塊620可以通過所述一個或多個第一存儲方采用有序輪詢的方式將所述一份數(shù)據(jù)的一個或多個部分同步到所述一個第二存儲方并作為一個或多個部分存儲。參見圖3,其中示意性地圖示了根據(jù)本發(fā)明的實施例的一種實施例的采用有序輪詢的方式將一份數(shù)據(jù)的一個或多個部分同步到第二存儲方的示意圖。如圖3所示,以位于第二機房的一個第一存儲方將五個數(shù)據(jù)部分同步到位于第三機房的一個第二存儲方上的三個數(shù)據(jù)部分為例,采用有序輪詢的方式,即,對于一份數(shù)據(jù)中的5個數(shù)據(jù)部分,所述同步模塊620可以通過第二機房的第一存儲方將數(shù)據(jù)部分I同步到第三機房的第二存儲方的數(shù)據(jù)部分1,通過第二機房的第一存儲方將數(shù)據(jù)部分2同步到第三機房的第二存儲方的數(shù)據(jù)部分2,通過第二機房的第一存儲方將數(shù)據(jù)部分3同步到第三機房的第二存儲方的數(shù)據(jù)部分3,通過第二機房的第一存儲方將數(shù)據(jù)部分4同步到第三機房的第二存儲方的數(shù)據(jù)部分1,通過第二機房的第一存儲方將數(shù)據(jù)部分5同步到第三機房的第二存儲方的數(shù)據(jù)部分2。上述示例僅為采取有序輪詢在兩個機房的多個存儲方之間同步數(shù)據(jù)的一種示例,本發(fā)明的范圍不限于此,本領域技術人員可以采用其它順序和對應關系來進行有序輪詢方式的數(shù)據(jù)同步。
[0073]上述各種實施例適用于根據(jù)本發(fā)明的全部四個方面,不再一一贅述。
[0074]本發(fā)明提供了上述進行跨機房數(shù)據(jù)同步的方法和裝置,應用于分布式消息系統(tǒng)。根據(jù)本發(fā)明的實施例,位于第二機房的一個或多個第一存儲方從位于第一機房的一個或多個發(fā)布方接收一份或多份數(shù)據(jù)并存儲在第二機房本地;所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機房的一個或多個第二存儲方,以存儲在第三機房本地以供位于第三機房的一個或多個訂閱方調(diào)用。由于將發(fā)布方所發(fā)布的數(shù)據(jù)從第二機房的一個或多個第一存儲方同步到了位于一個或多個訂閱方本地的第三機房中的一個或多個第二存儲方,在第三機房的訂閱方需要所述數(shù)據(jù)時,避免了反復在第二機房的第一存儲方與第三機房的訂閱方之間傳輸數(shù)據(jù),而是從本地獲取所述數(shù)據(jù),很大程度地減少了網(wǎng)絡延遲。根據(jù)本發(fā)明的可選實施例,采用有序輪詢的方式進行數(shù)據(jù)同步,能夠最大程度地適應各機房的不同拓撲結構,還可以靈活地保持或改變數(shù)據(jù)的元信息;另外,采取過期策略,減少了機房本地存儲空間的負擔。
[0075]在此提供的方法和裝置不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類裝置所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0076]在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
[0077]類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權利要求書由此明確地并入該【具體實施方式】,其中每個權利要求本身都作為本發(fā)明的單獨實施例。
[0078]本領域那些技術人員可以理解,可以對實施例中的裝置中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個裝置中??梢园褜嵤├械娜舾赡K組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者模塊中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的替代特征來代替。
[0079]此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
[0080]本發(fā)明的各個裝置實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的裝置中的一些或者全部模塊的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0081]應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”或“包括”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0082]本發(fā)明還公開了:
[0083]Al.一種進行跨機房數(shù)據(jù)同步的方法,應用于分布式消息系統(tǒng),包括:
[0084]位于第二機房的一個或多個第一存儲方從位于第一機房的一個或多個發(fā)布方接收一份或多份數(shù)據(jù)并存儲在第二機房本地;以及
[0085]所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機房的一個或多個第二存儲方,以存儲在第三機房本地以供位于第三機房的一個或多個訂閱方調(diào)用。
[0086]A2.如權利要求Al所述的方法,其中所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機房的一個或多個第二存儲方的步驟進一步包括:所述一個或多個第一存儲方采用有序輪詢的方式將所述一份或多份數(shù)據(jù)同步到所述一個或多個第二存儲方。
[0087]A3.如權利要求Al所述的方法,其中所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機房的一個或多個第二存儲方的步驟進一步包括:
[0088]對于其中每一份數(shù)據(jù),所述一個或多個第一存儲方采用有序輪詢的方式將所述一份數(shù)據(jù)的一個或多個部分同步到所述一個第二存儲方并作為一個或多個部分存儲。
[0089]A