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