MetaQ 簡單使用(數據同步框架)

數據同步通用框架說明

框架說明


數據同步工具用來對兩個系統或者多個系統的數據進行同步處理,框架能夠實現項目開發人員只需配置兩邊系統需的業務數據,不需要關係數據是如何實現同步的,框架底層數據傳輸技術使用淘寶的開源框架metamorphosis簡稱metaQ,該框架是使用觀察者的設計模式來處理數據的中間介,發送端只需將數據發送到服務器,接收端進行監聽,一旦有新數據,就立刻可以接收到。

框架結構

 

 

系統常量中設置一些公用的常量,例如文件每次傳輸的大小,文件存放的路徑,項目的路徑等。

數據庫工具類主要封裝了一些基本的數據庫操作。

業務枚舉,主要包括數據傳輸方式,錯誤標記,業務類型,所屬系統等等。

框架接口主要定義了一些針對框架配置進行處理的操作,例如獲得標記池數據,打包數據等等。

MetaQ處理類,主要包含metaQ的實現方式-消息生產者、消息消費者。

定時服務程序,用來定時執行框架需要執行的操作。主要包括掃描標記池、監聽服務端數據。
         業務線程,分爲普通數據發送線程,文件發送線程,普通數據接收線程,文件接收線程

工具類,主要封裝了一些常用的操作類,例如,文件處理類、json處理類,zip壓縮解壓處理類等。

 

詳細說明

定時服務

 

用於定時執行需要實現的業務

 

分爲數據發送線程、數據接收線程、文件發送線程、文件接收線程

 

數據發送線程

 

定時的從標記池中獲取相應業務需要處理的數據,通過數據同步業務配置表中根據sql查出需要打包的數據,並根據規定打包格式進行打包發送數據,如果數據發送成功,更新標記池數據,該條記錄設爲已同步,否則,下次繼續執行

 

數據接收線程


定時的從服務器中獲取業務端發送成功的數據,進行解包處理,這裏的接收線程屬於監聽線程,其中messge.getPartition().setAutoAck(false) 用來設置接收數據是否自動提交,如果自動提交,不論後面處理成功或者失敗,都獲取不到此條數據,如果爲不自動提交,用戶可以根據自己的需求來確定下次是否獲取此條數據,這裏準備設置爲自動條件,錯誤數據進行日誌記錄。

 

文件發送線程

 

定時的從標記池中獲取相應業務需要處理的數據,通過數據同步業務配置表中根據sql和模版配置查出需要傳輸的文件位置進行統一打包,並根據規定打包格式進行打包發送數據,數據發送採用已字節流的方式進行分塊傳輸,如果數據發送成功,更新標記池數據,該條記錄設爲已同步,否則,下次繼續執行

 

 

文件接收線程

 

定時的從服務器中獲取業務端發送成功的數據,進行解包處理,這裏的接收線程屬於監聽線程,其中messge.getPartition().setAutoAck(false) 用來設置接收數據是否自動提交,如果自動提交,不論後面處理成功或者失敗,都獲取不到此條數據,如果爲不自動提交,用戶可以根據自己的需求來確定下次是否獲取此條數據,這裏準備設置爲自動條件,錯誤數據進行日誌記錄,文件接收採用追加寫文件的方式,直至文件接收完畢再進行處理。

 

MetaQ 處理

普通生產者(Producer)

 

生產者可以向服務器中存在的任意topic中發送消息,供生產者使用,這裏的sessionFactory和Producer建議使用單例,不然會出現問題

普通消費者(Consumer)


消費者可以從服務器上存在的topic中獲取信息,這裏使用的是異步獲取,即獲取完一條數據之後,如果客戶端Consumer設置自動提交,下次獲取,此條記錄將獲取不到,這裏的sessionFactory和Consumer建議使用單例,不然會出現問題

文件生產者(FileProducer)

文件消費者(FileAsyncConsumer)

 

所需數據結構

標記池

存放業務端需同步的數據

日誌表

記錄接收錯誤數據

系統參數配置

用來通過業務端發送的業務ID來對業務端系統進行傳輸數據傳輸和處理,此表需對業務端數據庫進行操作

業務參數配置

用來設置相應的系統業務是否需進行同步,並關聯到metaQ相關配置

底層參數配置

用來配置metaQ相關配置,包括主題和分組

打包格式

1、普通同步數據

{sys:XXXX, type:XXXX, signId:XXXX,data[{XXX},{}…..]}

2、文件同步數據

{sys:XXXX, type:XXXX,signId:XXXX,data[{XXX},{}…..]}

錯誤數據處理

消費端接收的數據處理失敗時,錯誤數據需進行日誌記錄,需要求發送端進行數據重傳,具體操作爲單獨創建錯誤數據處理通道,進行錯誤信息的傳輸,實施類似普通消息的發送,接收。

1、  現在主要爲通過SQL執行錯誤來判斷數據的正確性

2、  後期可以考慮通過驗證數據格式的正確性來判斷


使用說明

MetaQ服務器部署

MetaQ是建立在zookeeper之上的中間介,所以要使用MetaQ,必須搭建zookeeper服務環境,從官網上下載安裝程序包


直接解壓文件到指定目錄,執行bin目錄下的zkServer.cmd,啓動服務



MetaQ也一樣,從官網上下載安裝包


解壓文件,執行bin目錄下的metaServer.bat啓動服務


MetaQ和zookeeper都包含windows和Linux的兩個版本,目前最新版本必須使用JDK1.6版本。

 

具體的MetaQ 和zookeeper的相關配置需要參照官方文檔

定時服務部署

系統完成後,將系統工程打包成相應的jar 文件,並使用bat文件進行項目的自動啓用


定時服務使用

如果需要使用同步框架,用戶需要將框架相關數據表導入系統(當然也可以採用其他方案),主要包含,業務參數配置表、數據同步配置表、數據標記池表和數據接收日誌表

用戶需配置業務參數配置表和數據同步配置表,並將需要傳輸的數據安裝格式存入數據同步標記池中。業務參數配置中消息主題需要在服務端有相應的配置。

另外要根據MetaQ服務器存放的位置,相應的修改客戶端的IP和端口

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章