張翰文


摘 要:文章針對廣域網架構下的多數據副本的數據一致性問題,提出了基于ZeroMQ及增量數據抽取的同步方案,研制了同步軟件UltraSync。在中國民航流量管理系統的研制與應用中,UltraSync能高效地同步中心節點數據分布在全國的二級分系統,有效解決了核心數據的分布式存儲問題。
關鍵詞:數據同步;消息中間件;分布式數據存儲
1 相關工作
1.1 數據同步軟件概況
在傳統數據中心建設中,核心系統數據一般保存在磁盤陣列,通過磁盤陣列的鏡像復制技術或存儲虛擬化技術進行存儲設備間的同步[1-2],可以達到同城/異地數據庫雙活,進而達到系統的容災故障轉移和自動化運行。存儲設備層的同步,需要有硬件存儲設備支持該特性,且對系統間的網絡要求較高,如系統間需要配備裸光纖加波分復用設備,有較大的資金投入。通過網絡傳輸至遠端執行。其他方式如通過數據庫的觸發器機制獲取增量數據,然后將數據傳輸到對方數據庫進行數據還原,本質還是獲取底層的變化增量數據,在遠端進行相同的DML操作來達到數據同步。
1.2 設計難點
中國民航流量管理系統在數據庫架構上主要包含三個中心一級節點及八個地區二級節點。每個節點都配置有基于Oracle RAC集群的本地數據庫及應用服務集群。在數據共享層引入了業界傳輸速度較快的ZeroMQ(以下簡稱“ZMQ”)消息中間件技術,設計了一套增量的基于數據結果的同步協議,利用可靠傳輸及校驗機制,使飛行計劃結果數據在各個數據庫副本間高效流轉。
系統所處的網絡環境為民航通信網,帶寬資源需與各類民航空管系統共享,有著嚴格的QOS要求,因此在數據同步過程中需要考慮數據的壓縮及帶寬占用率。如何平衡低延時與低帶寬占用,是UltraSync在研發實施中的一個難點。
2 UltraSync關鍵技術
2.1 ZMQ傳輸中間件
在數據的傳輸同步過程中,通常使用基于消息中間件的通信技術,保障數據的無損傳輸[3]。Message Queue(消息隊列)技術可以提供信息傳送的路由,并保障信息的傳遞,且消息隊列可在消息接收者未消費或者未連接的情況下保留數據,直至下一次被消費者取走。UltraSync在設計研發時,選用了ZMQ作為消息服務中間件。相比于其他MQ,其具備通信模式靈活,去中心化的分布式架構及吞吐量高的特性。ZMQ支持的傳輸模式包括:REQ/REP請求響應模式,PUB/SUB發布訂閱模式,ROUTER/DEALER路由代理模式。
數據提供方是數據的生產者,在民航流量管理系統中,即為處在中心節點的一級數據庫系統。UltraSync在一級部署了服務端,為二級同步提供代理服務。通過消息路由代理模式,數據提供方和請求方通過代理交互,而不用各方建立底層的多對多的數據連接,簡化了系統模塊間的交叉通信。考慮系統處理能力有差異,在客戶端增加了本地緩存,通過ZMQ傳輸的同步數據會先在客戶端本地寫入數據請求方的共享內存,減少網絡消息阻塞等待客戶端入庫的時延。
2.2 數據傳輸工作流
UltraSync提取增量源數據的方式主要是通過數據時標或觸發器機制,獲取變化的數據,其基本捕獲的數據事件為DML類型的增刪修改事件。為保證變更的數據能正確的傳達至二級,UltraSync工具設計了一套隊列機制,對每一個二級節點的同步客戶端連接,建立一個專用的服務程序對其進行數據傳輸,類似Oracle數據庫服務器的Dedicated Server模式。
在客戶端與客戶端建立隊列的過程中,先通過連接隊列消息CONN,請求確認消息ACP,數據索取消息REQ交互需要傳輸的數據表及二級最新的數據時標。一級的專用服務進程通過比對下級上報的時標,獲取需要傳輸的增量數據,對本批次傳輸的數據行進行流水號編號,通過ZMQ隊列傳輸至二級。二級對接收的數據依據流水號是否連續進行兩端確認,無誤后執行數據的修改操作,從而保證數據的一致及增量數據的完整性。
3 系統同步架構及實現
3.1 系統總體架構
以UltraSync的實際應用場景為例。在同步系統設計上,在一級節點部署UltraSync服務端,在二級節點部署UltraSync代理客戶端,實現一級到二級點對點,1對N的數據同步傳輸,如圖1所示。
首先,在一級節點上,系統整體設計為主,備,應急的高冗余數據中心級架構。對于二級系統的同步代理端,如何連接正在運行的一級節點是實現的難點。Ultra Sync參照現在流行的開源系統架構,采用類似服務網關的設計,即在系統的DMZ隔離區,通過服務網關統一代理主,備,應急系統的一級核心數據庫。在中國空管局三中心一級節點內部,服務端對始終指向當前為主用運行系統的數據庫,通過統一的對外數據接口提供服務。
3.2? 網絡傳輸模塊
在網絡設置配置中,主要有GENERAL和CONNE-CTION兩類配置。GENERAL標簽中配置了服務連接的數據庫賬戶身份信息.CONNECTION類配置中對每個二級節點定義了一套消息隊列,每個隊列以CONNECTION加地區代號的方式劃定作用范圍。在二級節點的標簽內定義了本地區節點的連接名稱,訂閱數據的端口號pubport,專用通信端口p2pport,以及每個地區節點限制的帶寬上限bandwidth。通過該配置,可實現二級節點的網絡參數調整,具備較強的靈活性。
服務端程序啟動后,根據訂閱的端口號連接配置,生成服務名為nodename的專用連接進程,而客戶端程序可以根據所處地區獲取配置中的訂閱端口,向服務端發起服務請求,獲取對應節點的數據同步服務。
3.3? 數據抽取及壓縮模塊
系統的核心數據如飛行計劃數據在Oracle RAC集群中主要以字符串形式存儲。其傳輸一條記錄的基本流程如下:UltraSync在獲取數據庫數據時,根據數據庫表元信息(MetaData)生成結構體,在程序內存中完成表數據到結構體的復制,結構體的壓縮,再通過ZMQ隊列進行數據傳輸。在數據壓縮中,綜合考慮壓縮性能及壓縮比,使用了成熟的LZF壓縮算法,降低字符串數據在通信傳輸中的帶寬消耗,經現場運行驗證,其壓縮性能及程序開銷均能達到業務實時性的要求。
4 系統性能驗證
UltraSync 模塊已在中國民航流量管理系統中上線,并承載全國各級節點實際的數據同步流量。作為代理程序,其性能受應用服務器及數據庫服務器兩處影響,目前的服務器環境參數,如表1所示。
在東北二級節點上線運行過程中,一級全國飛行計劃數據庫發生數據變化,到二級節點數據入庫,平均單表延遲最大為3.17秒,延遲中位數為1.91秒。通過數據比對,飛行計劃表數據在一二級庫傳輸之間無丟失現象。
5 結語
在民航空管流量系統不斷成長過程中,建立一個分布式的數據庫平臺,可有效共享各方信息,實現新業務的高效支撐。經實際生產系統驗證,在低帶寬和DML操作特別頻繁的環境下,相比OGG軟件表現出更好的適應性。通過系統上線運行記錄,UltraSync軟件在數據傳輸的穩定性及同步效率方面達到了系統要求。后續,還需考慮對異構數據庫的兼容性及軟件的可移植性問題。
[參考文獻]
[1]吳禮樂.基于雙活容災存儲技術的云計算數據中心的設計及應用[J].電子設計工程,2015(6):190-192.
[2]宋英華,王志勇,李鐘瑋.基于存儲雙活技術的調度自動化系統高可靠性架構研究[J].供用電,2020(3):58-63,70.
[3]王玨,孟曉蕊.分布式數據庫同步中間件系統的設計與研究[J].現代電子技術,2016(9):31-36.
(編輯 姚 鑫)