本發明涉及計算機及互聯網技術領域,特別是涉及一種跨數據中心數據同步系統及方法。
背景技術:
隨著互聯網時代的到來,社交網絡、微博、位置服務等面向普通互聯網用戶的交互網站正蓬勃興起,各種網站向數以億計的用戶提供基于互聯網和無線網絡的交互服務。遍布全世界的互聯網用戶每天都進行多種多樣的交互,隨時都在制造各種個樣的數據,這些數據的數量是單機時代數據量的數倍。
為了可靠地保存這些數據,互聯網公司會將服務器分布在多個城市的不同數據中心,同時將數據在不同的數據中心進行備份,因此,需要在不同的數據中心之間進行數據同步。而對于大量與時間序列相關的數據,在進行跨數據中心同步時,需要根據數據的生成時間有序地進行同步,亂序的數據將破壞原有數據的準確性。并且,由于異構數據存儲系統的大量存在,數據同步系統需要很好地支持多語言。
現有的數據同步方案主要包括專有數據同步和應用層數據同步兩種方式。
在專用數據同步方式中,設置有支持跨數據中心數據同步的數據庫,例如Mysql、Hbase等,依賴這類特定的數據庫來實現不同數據中心的數據同步。這種方案會限制用戶的數據只能存儲在特定的數據存儲系統中,用戶無法靈活地選取合適的數據存儲系統,并且,數據無法在異構數據源之間進行同步。
在應用層數據同步方式中,需要進行應用層雙寫和應用層鏈式多寫,通過應用層實現將數據寫到多個數據中心。在雙寫和鏈式多寫下,只有將數據同時在多個數據中心寫成功才能被確認為寫成功。但是在網絡抖動較大的情況下,雙寫和鏈式多寫都會嚴重影響應用層的性能,并且在異常情況下無法保證數據的有序性。
技術實現要素:
為了提高數據同步的靈活性和可靠性,本發明實施例提供一種跨數據中心數據同步系統及方法。
根據本發明實施例的一個方面,提供一種跨數據中心數據同步系統,用于將源數據中心的數據同步到目的數據中心,所述源數據中心和所述目的數據中心均設置有多個RPC客戶端和多個RPC服務器,在所述目的數據中心中設置有數據搬運裝置,所述系統還包括數據搬運管理裝置;所述數據搬運管理裝置,用于管理源消息隊列和目的消息隊列,以及,控制啟動或關閉所述數據搬運裝置從源消息隊列獲取數據;所述數據搬運裝置,用于從源消息隊列獲取到數據,并將所獲取的數據存入到目的消息隊列中。
優選的,所述數據搬運管理裝置,還用于設定所述源消息隊列和所述目的消息隊列的映射對應關系;所述數據搬運裝置將所獲取的數據存入到源消息隊列對應的目的消息隊列中。
優選的,在所述源數據中心的RPC服務器中設置所述源消息隊列,在所述目的數據中心的RPC服務器中設置所述目的消息隊列。
優選的,所述源消息隊列和所述目的消息隊列均是基于日志存儲的分布式隊列。
優選的,所述數據搬運裝置包括消息生產端和消息消費端,所述消息消費端用于從源消息隊列獲取數據,所述消息生產端用于將所述消息消費端獲取的數據存入到目的消息隊列中。
優選的,所述RPC客戶端和RPC服務端之間通過IDL定義通信協議,通過IDL文件編譯成語言代碼,從而實現在數據中心支持所述語言的數據通信。
根據本發明實施例的另一個方面,提供一種跨數據中心數據同步方法,用于將源數據中心的數據同步到目的數據中心,所述源數據中心和所述目的數據中心均設置有多個RPC客戶端和多個RPC服務器,所述方法包括:管理所述源數據中心的源消息隊列以及所述目的數據中心的目的消息隊列,以及,控制啟動或關閉所述目的數據中心的數據搬運裝置從源消息隊列獲取數據;所述數據搬運裝置從所述源消息隊列獲取數據,并將所獲取的數據存入到所述目的消息隊列中。
優選的,上述方法還包括:設定所述源消息隊列和目的消息隊列的映射對應關系;所述數據搬運裝置將所獲取的數據存入到源消息隊列對應的目的消息隊列中。
優選的,所述源消息隊列設置在所述源數據中心的RPC服務器中,所述目的消息隊列設置在所述目的數據中心的RPC服務器中。
優選的,所述源消息隊列和所述目的消息隊列均是基于日志存儲的分布式隊列。
優選的,所述數據搬運裝置包括消息生產端和消息消費端,所述消息消費端用于從源消息隊列獲取數據,所述消息生產端用于將所述消息消費端獲取的數據存入到目的消息隊列中。
優選的,上述方法還包括:采用IDL定義所述RPC客戶端和RPC服務端之間的通信協議,通過IDL文件編譯成語言代碼,實現在數據中心支持所述語言的數據通信。
可見,本發明實施例提供的跨數據中心數據同步系統,通過引入通用的RPC協議,從而實現異構數據源下對多語言的支持,從而增強數據同步的靈活性,而且,通過引入基于日志存儲的分布式消息隊列系統來實現時間序列化(按照不同時間點收集數據)相關數據的有序同步。
附圖說明
圖1是本發明一個實施例提供的一種跨數據中心數據同步系統結構示意圖;
圖2是本發明一個實施例提供的跨數據中心數據同步系統的邏輯處理示意圖;
圖3是本發明一個實施例提供的一種跨數據中心數據同步方法流程圖。
具體實施方式
為使本發明的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖和具體實施方式對本發明作進一步詳細的說明。
鑒于現有的跨數據中心數據同步方案所存在的缺陷,本發明實施例提出一種高可靠、更加靈活的跨數據中心數據同步系統,采用RPC技術實現對多語言的支持,采用消息隊列方式實現數據同步的有序性和可靠性。
參見圖1,為本發明實施例提供的跨數據中心數據同步系統結構示意圖。
系統包括源數據中心1、目的數據中心2以及數據搬運管理裝置3,進一步,源數據中心1包括多個RPC客戶端101和多個RPC服務器102,并且,在RPC服務器102設置有源消息隊列1021。類似的,目的數據中心2包括RPC客戶端201和多個RPC服務器202,并且,在RPC服務器202設置有目的消息隊列2021,特別的,目的數據中心2還包括數據搬運裝置203,該數據搬運裝置203可進一步包括數據消費端2031和數據生產端2032;其中,數據搬運管理裝置3是數據同步過程的控制端,通過控制源消息隊列1021、目的消息隊列2021以及數據搬運裝置203,來實現數據同步的啟動和執行;數據搬運裝置203是完成數據同步的主體,完成數據同步的過程。
從邏輯功能上劃分,可以將整個系統劃分為三個組成部分(子系統):
第一部分是RPC子系統,RPC子系統包括RPC客戶端和RPC服務器。RPC子系統實現了對多語言的支持,這是因為,可以將RPC客戶端和RPC服務端之間的通信協議通過IDL來定義。由此,對于新的語言,通過相應語言的編譯器,就可以將IDL文件編譯為該語言的代碼,從而實現對該語言的支持。其中,IDL(Interface description language)是一種接口描述語言,它通過一種中立的方式來描述接口,使得在不同平臺上運行的對象和用不同語言編寫的程序可以相互通信交流;比如,第一個組件用C++寫成,第二個組件用Java寫成,可以通過IDL協議接口使第一個組件和第二個組件相互通信。
第二部分是消息隊列子系統,消息隊列子系統包括源消息隊列1021和目的消息隊列2021。優選方式中,采用基于分布式消息隊列系統的消息隊列,由此,通過消息隊列子系統可實現數據可靠有序的存儲,這是因為,分布式消息隊列系統通過日志文件來進行數據的持久存儲,而日志文件的特點就是可靠和有序。
第三部分是數據搬運子系統,數據搬運子系統包括數據搬運裝置203和數據搬運管理裝置3,其中,數據搬運裝置203實現數據在不同數據中心之間的同步功能,具體的,數據搬運裝置203由消息隊列的消息消費端2031和消息生產端2032組成。消息消費端2031負責從源數據中心1消費消息,消息生產端2032負責將消息生產到目的數據中心2,從而實現了跨數據中心的數據同步。與數據搬運裝置203協同工作的數據搬運管理裝置3可支持數據搬運的在線伸縮,并保證伸縮過程中數據不丟失。所謂數據搬運的在線伸縮,可以理解為,無需停止服務,就可以對服務實例進行關閉下線或者上線,并保證數據不丟失。在服務下線前,通過數據搬運裝置203關閉當前設備的讀寫權限,數據流被分流到別的設備,此時關閉當前設備就不會造成數據丟失。
下面對系統的各個主要構成進行詳細介紹。
所謂的數據中心是一整套復雜的系統,它不僅僅包括計算機系統和其它與之配套的設備(例如通信和存儲系統),還包含冗余的數據通信連接、環境控制設備、監控設備以及各種安全裝置。數據中心可以被理解為“多功能的系統,能容納多個服務器以及通信設備”。源數據中心1和目的數據中心2可以是現有的常規數據中心,也可以是未來發展出的數據中心。
如前文所述,RPC子系統由RPC客戶端和RPC服務器兩部分組成,數據中心的外部系統內嵌RPC客戶端來實現與數據同步系統的通信。
RPC(Remote Procedure Call Protocol),即遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC采用客戶端/服務器模式。請求程序就是一個客戶端,而服務提供程序就是一個服務器。RPC的工作過程是:首先,客戶端調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息,獲得進程結果,然后調用執行繼續進行。
本發明實施例中,數據經由RPC服務器到達源消息隊列,經由數據搬運裝置最終提供給目的消息隊列。如前所述的,采用RPC子系統的好處在于,通過內嵌不同語言實現的RPC客戶端,可以實現對多語言的支持。優選的,可將消息隊列與RPC服務器部署在同一個設備上(參照圖1,源消息隊列1021部署在RPC服務器102、目的消息隊列2021部署在RPC服務器202),由此可以降低網絡開銷。當然,可以理解,也可以將源消息隊列1021部署在非RPC服務器102的設備上。
優選方式中,源消息隊列1021和目的消息隊列2021都采用基于日志存儲的分布式隊列系統,實現在源數據中心1和目的數據中心2進行實際數據的存儲。日志型的存儲系統可以滿足數據存儲的有序性和可靠性,分布式的消息隊列集群可以根據實際的數據量對集群進行動態的擴容和縮容。分布式消息隊列系統通過日志文件來進行數據的持久化,而日志文件的特點就是可靠和有序,日志型存儲系統中的數據一條一條按照順序添加到文件中,并被持久存儲到硬盤,因此可以滿足有序性和可靠性。
數據搬運裝置203主要完成實際數據的搬運功能,優選方式中,由消息消費端2031組成和消息生產端2032。數據搬運裝置203可以理解為是一個分布式消息系統。
分布式消息系統,是一種同時在不同的計算機上提供消息的臨時存儲和消息的分發功能的系統。典型的分布式消息系統包括消息生產端集群、代理集群和消息消費端集群,消息生產端(Producer)構造出不同主題的消息,發往局域網中部署有消息系統服務的代理端(也稱為:Broker)上進行臨時存儲,消息消費端(Customer)根據自身訂閱的主題從該消息系統集群中獲得對應的消息進行后續加工。分布式消息系統的特點在于消息服務分布在多臺計算機上,通過容錯機制達到高可用,通過負載均衡策略支撐高吞吐。
本發明實施例中,消息消費端2031負責從源數據中心1消費數據,同時調用消息生產端2032將獲取到的消息發送到目的數據中心2中去。為了避免在搬運數據的過程中破壞數據的有序性,優選的,要求源數據中心1中同一個隊列的消息全部搬運到同一個目的數據中心的隊列中。并在數據搬運管理裝置3上控制源數據隊列1021與目的數據隊列2021之間的映射關系。
通過數據搬運裝置203,可保證源數據中心1與目的數據中心2之間的數據同步只發生一次,降低網絡專線的開銷。這是因為,是通過數據搬運裝置203將源數據中心1的數據搬運到目的數據中心2,假設如果不搬運,如果目的數據中心2有多個設備都需要消費源數據中心1的數據,對于相同的數據,各個設備需要分別消費一次,那就是多次占用網絡專線的開銷,而通過數據搬運裝置203搬運之后,對于目的數據中心2的設備,只需要從本地數據中心消費即可,無需占用網絡專線資源。
數據搬運管理裝置3,可以是一臺獨立的設備,用于實現對數據搬運裝置203的管理,并且需要控制源數據隊列1021與目的數據隊列2021的映射關系,從而保證數據的有序性。數據搬運管理裝置3管理數據搬運裝置203在動態伸縮(所謂動態伸縮是指部署的服務器或其他設備在數量上的變化)時的開啟與關閉,從而保證數據不會丟失。數據搬運管理裝置3在啟動數據搬運裝置203時,會加載源消息隊列1021與目的消息隊列2021的對應關系,后續的數據同步過程都會根據這個對應關系來進行。
參加圖2,為本發明實施例提供的跨數據中心數據同步系統的邏輯處理示意圖。
跨數據中心數據同步系統的邏輯處理過程如下:
(1)啟動部署在源數據中心、目的數據中心的源消息隊列和目的消息隊列;并且,通過數據搬運管理裝置啟動數據搬運模塊,等待源數據中心中產生數據,并指定源消息隊列與目的消息隊列的對應關系;
(2)源數據中心的數據寫入到源數據中心的源消息隊列中;
(3)數據搬運模塊的消息消費端從源數據中心的源消息隊列中獲取到數據,并通過消息生產端將數據存儲到目的數據中心中的目的消息隊列中;目的數據中心的客戶端從目的數據中心的目的消息隊列中獲取到同步過來的數據。
本發明實施例提供的跨數據中心數據同步系統,通過引入通用的RPC協議,從而實現異構數據源下對多語言的支持,從而增強數據同步的靈活性,而且,通過引入基于日志存儲的分布式消息隊列系統來實現時間序列化相關數據的有序同步。
參見圖3,為本發明實施例提供的一種跨數據中心數據同步方法流程圖,用于將源數據中心的數據同步到目的數據中心,所述源數據中心和所述目的數據中心均設置有多個RPC客戶端和多個RPC服務器,所述方法包括如下步驟。
S301:管理源數據中心的源消息隊列以及目的數據中心的目的消息隊列,以及,控制啟動或關閉目的數據中心的數據搬運裝置從源消息隊列獲取數據。
S302:數據搬運裝置從源消息隊列獲取數據,并將所獲取的數據存入到目的消息隊列中。
對于上述方法中涉及的源數據中心、目的數據中心可參考圖1所示的跨數據中心數據同步系統進行理解。
系統包括源數據中心1、目的數據中心2以及數據搬運管理裝置3,進一步,源數據中心1包括多個RPC客戶端101和多個RPC服務器102,并且,在RPC服務器102設置有源消息隊列1021,類似的,目的數據中心2包括RPC客戶端201和多個RPC服務器202,并且,在RPC服務器202設置有目的消息隊列2021,特別的,目的數據中心2還包括數據搬運裝置203,該數據搬運裝置203可進一步包括數據消費端2031和數據生產端2032;其中,數據搬運管理裝置3是數據同步過程的控制端,通過控制源消息隊列1021、目的消息隊列2021以及數據搬運裝置203,來實現數據同步的啟動和執行;數據搬運裝置203是完成數據同步的主體,完成數據同步的過程。
從邏輯功能上劃分,可以將整個系統劃分為三個組成部分(子系統):
第一部分是RPC子系統,RPC子系統包括RPC客戶端和RPC服務器。RPC子系統實現了對多語言的支持,這是因為,可以將RPC客戶端和RPC服務端之間的通信協議通過IDL來定義,由此,對于新的語言,通過相應語言的編譯器,就可以將IDL文件編譯為該語言的代碼,從而實現對該語言的支持。其中,IDL(Interface description language)是一種接口描述語言,它通過一種中立的方式來描述接口,使得在不同平臺上運行的對象和用不同語言編寫的程序可以相互通信交流;比如,一個組件用C++寫成,另一個組件用Java寫成。
第二部分是消息隊列子系統,消息隊列子系統包括源消息隊列1021和目的消息隊列2021。優選方式中,采用基于分布式消息隊列系統的消息隊列,由此,通過消息隊列子系統可實現數據可靠有序的存儲,這是因為,分布式消息隊列系統通過日志文件來進行數據的持久化,而日志文件的特點就是可靠和有序。
第三部分是數據搬運子系統,數據搬運子系統包括數據搬運裝置203和數據搬運管理裝置3,其中,數據搬運裝置203實現數據在不同數據中心之間的同步功能,具體的,數據搬運裝置203由消息隊列的消息消費端2031和消息生產端2032組成。消息消費端2031負責從源數據中心1消費消息,消息生產端2032負責將消息生產到目的數據中心2,從而實現了跨數據中心的數據同步。與數據搬運裝置203協同工作的數據搬運管理裝置3可支持數據搬運的在線伸縮,并保證伸縮過程中數據不丟失。所謂數據搬運的在線伸縮,可以理解為,無需停止服務,就可以對服務實例進行關閉下線或者上線,并保證數據不丟失。在服務下線前,通過數據搬運裝置203關閉當前設備的讀寫權限,數據流被分流到別的設備,此時關閉當前設備就不會造成數據丟失。
優選的,該方法還包括:設定所述源消息隊列和目的消息隊列的映射對應關系;其中,所述數據搬運裝置將所獲取的數據存入到源消息隊列對應的目的消息隊列中。
優選的,所述源消息隊列設置在所述源數據中心的RPC服務器中,所述目的消息隊列設置在所述目的數據中心的RPC服務器中。
優選的,所述源消息隊列和所述目的消息隊列均是基于日志存儲的分布式隊列。
優選的,所述數據搬運裝置包括消息生產端和消息消費端,所述消息消費端用于從源消息隊列獲取數據,所述消息生產端用于將所述消息消費端獲取的數據存入到目的消息隊列中。
優選的,所述方法還包括:采用IDL定義所述RPC客戶端和RPC服務端之間的通信協議,通過IDL文件編譯成語言代碼,實現在數據中心支持所述語言的數據通信。
需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明實施例并不受所描述的動作順序的限制,因為依據本發明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優選實施例,所涉及的動作并不一定是本發明實施例所必須的。
本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領域內的技術人員應明白,本發明實施例的實施例可提供為方法、裝置、或計算機程序產品。因此,本發明實施例可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
本發明實施例是參照根據本發明實施例的方法、終端設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理終端設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理終端設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理終端設備上,使得在計算機或其他可編程終端設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程終端設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發明實施例的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本發明實施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
以上對本發明所提供的一種跨數據中心數據同步方法及系統,進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。