近期在進行主資料治理方案的實施落地,在主資料中存在人員主資料,而人員主資料主要對省內自然人進行記錄,涉及資料量上千萬條記錄數,由於資料量巨大,需要對MDM主資料管理平臺、ESB企業服務匯流排同步介面及整合流程進行測試,
驗證是否支援大批次資料同步
。
本次大批次資料同步主要針對1千條、1萬條、10萬條、100萬條、1000萬條資料級別進行測試驗證,其中1萬條及以下采用批次同步方式,而1萬條以上採用迴圈批次同步錄入的方式,本文主要對測試方法、調優過程及測試結果分析進行主要說明。
整體說明
本章主要針對測試的主要內容、測試的ESB應用整合流程具體實現情況以及遇到問題應該如何處理等進行詳細說明。
1.測試思路
在測試時主要針對1千條、1萬條、10萬條、100萬條、1000萬條資料級別進行測試驗證,測試分為兩個模組,具體如下:
1。對環境進行最佳化,分別最佳化主資料及ESB的CPU、記憶體,並對Redis、JVM、CentOS、Nginx等進行最佳化;
2。對每個數量級進行進行ESB層面測試,先用程式碼構造對應的入參,再使用ESB資料介面卡中的資料插入元件記錄每個數量級的同步時間;
3。複製原有整合流程,加入主資料排程介面進行資料的同步,記錄同步時間,並與資料庫批次插入同步時間進行對比,檢視是否是因為同步介面降低同步時效;
4。對測試結果進行總結,將相關問題反饋至產品負責人員進行最佳化,並進行再次測試。
2.測試流程
測試流程主要是針對不同資料量級別對ESB資料插入效能等進行測試,主要測試100W條及1000W條資料的寫入測試,具體流程如下:
1。批次處理具體流程如下:
a)初始化操作記錄資料起始時間;
b)查詢出1千/1萬條資料,並進行記錄;
c)資料庫直接批次資料插入;
d)記錄截止時間並進行時間計算。
2。迴圈批次處理流程如下:
a)初始化操作記錄資料起始時間;
b)使用Java轉換節點構造1萬條資料;
c)資料庫直接批次資料插入;
d)索引自增長並進行迴圈;
e)構造整合日誌引數並記錄流程執行時間。
3.結果驗證
對資料執行結果進行分析,與開發人員反饋具體最佳化點
,因為主資料不僅僅是資料的儲存,還有資料的展現及分析,需要對人員資料管理進行檢視驗證,並對涉及人員資料巡檢、人員資料分析等功能進行查證,核實是否會因為大資料量導致系統崩潰或者Redis崩潰等情況。
效能調優
效能調優主要對CPU、記憶體、Redis、JVM、CentOS、Nginx等進行最佳化,具體最佳化過程如下。
1.記憶體調優
調優方面主要使用UMC對主資料、ESB等進行CPU及記憶體擴充,調整記憶體為4G—8G,主資料方面:
ESB方面調整同上:
2.系統調優
對CentOS進行調優,調整sysctl。conf檔案。
加入具體的引數及引數說明:
接下來使配置檔案生效。
3.執行緒池調優
調整server。xml檔案,調整執行緒池,引數說明:
1。maxThreads:最大執行緒數,高併發請求時,tomcat能建立來處理請求的最大執行緒數,超過則放入請求佇列中進行排隊,預設值為200;
2。minSpareThreads:最小空閒執行緒數,任何情況都會存活的執行緒數,即便超過了最大空閒時間,也不會被回收,預設值4;
4.Redis調優
透過調整Redis配置檔案對Redis進行調優。
具體詳見附件。
需要關閉redis例項節點,重啟後生效。
驗證方法:
輸入“info”命令檢視已經改為5G記憶體,已啟用allkeys-lru模式。
5.Nginx調優
Nginx方面調整使用epoll模式、調整最大連線數、超時時間、請求頭緩衝區、請求體緩衝區等等。
具體詳見附件。
實現步驟
首先
建立一個虛擬表
用來模擬業務資料,接下來,之後
透過資料庫讀取元件分頁獲取資料
,之後
透過迴圈的方式批次進行資料的插入
。
1.模擬資料
首先使用Mysql函式往資料庫內插入1000萬條資料。
指令碼執行輸入插入記錄數就可以在上述庫內插入對應資料,執行方法如下:
在max_num插入資料就可以在資料庫內插入定量資料。具體詳見附件。
2.ESB驗證
按照上文測試思路,先對ESB資料寫入能力進行驗證,資料批次插入流程流程圖(以100W資料為例):
流程解讀開始:
1。資料初始化操作:設定變數index索引值,記錄流程開始時間;
2。設定迴圈1萬天,構造引數;
3。資料插入元件,每次插入1萬條資料;
4。Index+1索引自增長,在線上設定迴圈條件,迴圈1000次,插入1000萬條資料;
5。記錄資料執行時間,並插入資料庫內流程結束。
最後直接呼叫各個流程直接執行即可。
3.介面驗證
介面驗證主要驗證主資料同步介面是否支援資料大批次的同步,如果支援,同步效率如何,對主資料批次同步介面進行驗證,流程只是把資料構造替換成資料查詢元件,把資料插入元件替換成資料介面即可,具體流程如下:
流程解讀開始:
1。資料初始化操作:設定變數index索引值,記錄流程開始時間;
2。查詢資料1W條記錄量;
3。呼叫主資料大批次同步介面imp-all-fields;
4。Index+1索引自增長,在線上設定迴圈條件,迴圈1000次,插入1000萬條資料;
5。記錄資料執行時間,並插入資料庫內流程結束。
最後直接呼叫各個流程直接執行即可。
4.結果對比
透過測試結果可以看出呼叫主資料介面會影響資料同步的速度,同時資料庫欄位的多少同樣也會影響資料同步的速度,可以從資料同步介面進行最佳化提升同步效率。
心得體會
透過本次的大批次資料同步測試驗證使自身在效能調優等方面有了一定的提升,同時也總結了一些心得,現從做事方法、意識形態以及技術積累層面總結如下。
1.做事方法
近期的工作讓我認識到:在工作的過程中應該
勤與公司領導、同事溝通互動
,在遇到困難時應該面對困難,對於問題的解決方法多往前看,積極解決問題,在解決問題的同時,提升自身技術能力。
2.意識形態
透過查閱現有Nginx、Redis等調優的記錄文件,發現文件中有一些內容需要進行最佳化,伴隨著自身專業知識不斷積累,對知識的認知也不斷提高。當回過頭來看自己之前記錄的工作文件,會發現存在很多漏點,這時就需要再次完善工作文件了。在這個完善的過程中又把初學時的理解和當下進行比較,可以瞭解到當時的自己有哪些不足,思維邏輯有了怎樣改善。技術、認知在不斷更新,工作文件也在不斷更新,在這個
不斷迭代更新
的過程中,使自己的知識點不知不覺連成了線。
3.技術積累
本次資料同步驗證使自身Linux系統調優方面有了一定的提升,同時也暴露了自己在調配置檔案不仔細所產生的問題,
不能僅停留於敲程式碼的層面
,在日常的工作過程也是一樣,在後續的學習工作過程中要避免此類問題發生。
Linux系統作為目前伺服器端最常用的系統,學好它的重要性不言而喻,作為一款字串操作為主流的系統,想要學好Linux其實並不用容易,想要熟練掌握,也需要投入很多的精力,
只有不斷地學習積累才能使自身知識體系更加完善
。
本文由@數通暢聯原創,歡迎轉發,僅供學習交流使用,引用請註明出處!謝謝~