一種進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法和裝置。
【背景技術(shù)】
[0002]分布式消息系統(tǒng)是采用分布式處理進(jìn)行消息發(fā)布和訂閱的系統(tǒng),典型的分布式消息系統(tǒng)包括 kafka,RabbitMQ, ActiveMQ, QBus 等等。
[0003]QBus是一種以kafka為原型的分布式消息系統(tǒng),其主要由發(fā)布方(Producer)、訂閱方(Consumer)、存儲方(Broker)、協(xié)調(diào)方(Zookeeper)、代理方(Agent)等單元組成。在QBus系統(tǒng)中,消息系統(tǒng)的三個主要角色是存儲方、發(fā)布方和訂閱方,其中,發(fā)布方和訂閱方完全解耦,彼此不感知。在QBus系統(tǒng)中,這三個角色有較大概率部署在不同的數(shù)據(jù)中心,包括地理位置上相距很遠(yuǎn)的數(shù)據(jù)中心,比如北京、鄭州和廣州。這就可能造成訂閱方在消費(fèi)存儲方上的數(shù)據(jù)時,需要承擔(dān)較大的網(wǎng)絡(luò)延遲,這在消息系統(tǒng)的發(fā)布-訂閱應(yīng)用中尤其明顯。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,提出了本發(fā)明,以便提供一種克服上述問題或者至少部分地解決上述問題的一種進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法和裝置。
[0005]依據(jù)本發(fā)明的一方面,提供了一種進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法,應(yīng)用于分布式消息系統(tǒng),包括:位于第二機(jī)房的一個或多個第一存儲方從位于第一機(jī)房的一個或多個發(fā)布方接收一份或多份數(shù)據(jù)并存儲在第二機(jī)房本地;以及所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方,以存儲在第三機(jī)房本地以供位于第三機(jī)房的一個或多個訂閱方調(diào)用。
[0006]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法中,所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方的步驟進(jìn)一步包括:所述一個或多個第一存儲方采用有序輪詢的方式將所述一份或多份數(shù)據(jù)同步到所述一個或多個第二存儲方。
[0007]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法中,所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方的步驟進(jìn)一步包括:對于其中每一份數(shù)據(jù),所述一個或多個第一存儲方采用有序輪詢的方式將所述一份數(shù)據(jù)的一個或多個部分同步到所述一個第二存儲方并作為一個或多個部分存儲。
[0008]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法中,第二機(jī)房、第三機(jī)房位于不同的位置。
[0009]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法中,所述第二機(jī)房與所述第三機(jī)房進(jìn)行遠(yuǎn)程通信。
[0010]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法中,在所述分布式消息系統(tǒng)中,所述發(fā)布方是Producer,所述第一存儲方和第二存儲方是Broker,所述訂閱方是Consumer。
[0011]根據(jù)本發(fā)明的另一方面,提供了一種進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法,應(yīng)用于分布式消息系統(tǒng),包括:位于第二機(jī)房的一個或多個第一存儲方從位于第一機(jī)房的一個或多個發(fā)布方接收一份或多份數(shù)據(jù)并存儲在第二機(jī)房本地;所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方,以存儲在第三機(jī)房本地;以及位于第三機(jī)房的一個或多個訂閱方從所述一個或多個第二存儲方獲取所述一份或多份數(shù)據(jù)。
[0012]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法中,在所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方,以存儲在第三機(jī)房本地的步驟之后,所述方法還包括:所述一個或多個第二存儲方將存儲在第三機(jī)房本地超過預(yù)先定義的第一時間閾值的一份或多份數(shù)據(jù)刪除。
[0013]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法中,在所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方,以存儲在第二機(jī)房本地的步驟之后,所述方法還包括:在存儲在第二機(jī)房本地的所述一份或多份數(shù)據(jù)超過預(yù)先定義的大小的情況下,所述一個或多個第二存儲方將存儲在第三機(jī)房本地的一份或多份數(shù)據(jù)中存儲時間最長的、超出所述預(yù)先定義的大小的一份或多份數(shù)據(jù)刪除。
[0014]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法中,還包括:位于所述第一機(jī)房的所述一個或多個發(fā)布方將一份或多份數(shù)據(jù)發(fā)送到位于第二機(jī)房的一個或多個第一存儲方。
[0015]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法中,在所述分布式消息系統(tǒng)中,所述發(fā)布方是Producer,所述第一存儲方和第二存儲方是Broker,所述訂閱方是Consumer。
[0016]根據(jù)本發(fā)明的又一方面,提供了一種進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置,應(yīng)用于分布式消息系統(tǒng),包括:接收和存儲模塊,用于通過位于第二機(jī)房的一個或多個第一存儲方從位于第一機(jī)房的一個或多個發(fā)布方接收一份或多份數(shù)據(jù)并存儲在第二機(jī)房本地;以及同步模塊,用于通過所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方,以存儲在第三機(jī)房本地以供位于第三機(jī)房的一個或多個訂閱方調(diào)用。
[0017]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置中,所述同步模塊通過所述一個或多個第一存儲方采用有序輪詢的方式將所述一份或多份數(shù)據(jù)同步到所述一個或多個第二存儲方。
[0018]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置中,所述同步模塊對于其中每一份數(shù)據(jù),通過所述一個或多個第一存儲方采用有序輪詢的方式將所述一份數(shù)據(jù)的一個或多個部分同步到所述一個第二存儲方并作為一個或多個部分存儲。
[0019]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置中,第二機(jī)房、第三機(jī)房位于不同的位置。
[0020]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置中,所述第二機(jī)房與所述第三機(jī)房進(jìn)行遠(yuǎn)程通信。
[0021]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置中,在所述分布式消息系統(tǒng)中,所述發(fā)布方是Producer,所述第一存儲方和第二存儲方是Broker,所述訂閱方是Consumer。
[0022]根據(jù)本發(fā)明的再一方面,提供了一種進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置,應(yīng)用于分布式消息系統(tǒng),包括:接收和存儲模塊,用于通過位于第二機(jī)房的一個或多個第一存儲方從位于第一機(jī)房的一個或多個發(fā)布方接收一份或多份數(shù)據(jù)并存儲在第二機(jī)房本地;同步模塊,用于通過所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方,以存儲在第三機(jī)房本地;以及獲取模塊,用于通過位于第三機(jī)房的一個或多個訂閱方從所述一個或多個第二存儲方獲取所述一份或多份數(shù)據(jù)。
[0023]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置中,還包括第一刪除模塊,用于在所述同步模塊通過所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方,以存儲在第三機(jī)房本地之后,通過所述一個或多個第二存儲方將存儲在第三機(jī)房本地超過預(yù)先定義的第一時間閾值的一份或多份數(shù)據(jù)刪除。
[0024]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置中,還包括第二刪除模塊,用于在所述同步模塊通過所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方,以存儲在第三機(jī)房本地之后,在存儲在第三機(jī)房本地的所述一份或多份數(shù)據(jù)超過預(yù)先定義的大小的情況下,通過所述一個或多個第二存儲方將存儲在第三機(jī)房本地的一份或多份數(shù)據(jù)中存儲時間最長的、超出所述預(yù)先定義的大小的一份或多份數(shù)據(jù)刪除。
[0025]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置中,還包括發(fā)送模塊,用于通過位于所述第一機(jī)房的所述一個或多個發(fā)布方將一份或多份數(shù)據(jù)發(fā)送到位于第二機(jī)房的一個或多個第一存儲方。
[0026]可選地,在根據(jù)本發(fā)明的上述實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的裝置中,在所述分布式消息系統(tǒng)中,所述發(fā)布方是Producer,所述第一存儲方和第二存儲方是Broker,所述訂閱方是Consumer。
[0027]本發(fā)明提供了上述進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法和裝置,應(yīng)用于分布式消息系統(tǒng)。根據(jù)本發(fā)明的實施例,位于第二機(jī)房的一個或多個第一存儲方從位于第一機(jī)房的一個或多個發(fā)布方接收一份或多份數(shù)據(jù)并存儲在第二機(jī)房本地;所述一個或多個第一存儲方將所述一份或多份數(shù)據(jù)同步到位于第三機(jī)房的一個或多個第二存儲方,以存儲在第三機(jī)房本地以供位于第三機(jī)房的一個或多個訂閱方調(diào)用。由于將發(fā)布方所發(fā)布的數(shù)據(jù)從第二機(jī)房的一個或多個第一存儲方同步到了位于一個或多個訂閱方本地的第三機(jī)房中的一個或多個第二存儲方,避免了反復(fù)在第二機(jī)房的第一存儲方與第三機(jī)房的訂閱方之間傳輸數(shù)據(jù),很大程度地減少了網(wǎng)絡(luò)延遲。根據(jù)本發(fā)明的可選實施例,采用有序輪詢的方式進(jìn)行數(shù)據(jù)同步,能夠最大程度地適應(yīng)各機(jī)房的不同拓?fù)浣Y(jié)構(gòu),還可以靈活地保持或改變數(shù)據(jù)的元信息;另外,采取過期策略,減少了機(jī)房本地存儲空間的負(fù)擔(dān)。
[0028]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【附圖說明】
[0029]通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0030]圖1是根據(jù)本發(fā)明的一種實施例的進(jìn)行跨機(jī)房數(shù)據(jù)同步的方法的流程示意圖;
[0031]圖2是根據(jù)本發(fā)明的實施例的一種實施例的采用有序輪詢的方式將數(shù)據(jù)同步到第二存儲方的示意圖;
[0032]圖3是根據(jù)本