前言:想要寫出一篇引人入勝的文章?我們特意為您整理了氣象業務網文件管理子系統設計淺析范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:針對原廣東省氣象業務網文件管理中存在的功能分散、與頁面耦合度太高等問題,設計了獨立的文件管理子系統。該系統采用微服務架構、Solr搜索引擎、RabbitMQ消息中間件、Quartz調度管理等技術方案,集中解決了文件資源的同步存儲、全文搜索、數據轉換、監控告警、備份清理等功能需求。應用結果表明,文件管理子系統保障了業務網文件資料的完整性和及時性,提升了文件搜索服務能力,提高了業務管理效率。
關鍵詞:氣象業務網;文件管理子系統;廣東省
隨著氣象現代化要求日益增高[1],廣東省氣象局于2019年開始建設新業務網,針對原業務網的文件處理功能不集中,文件管理與業務網頁面顯示耦合度太高的問題[2],新業務網建設采用開發文件管理子系統的思路。當前,文件類氣象資料的處理多為功能單一的軟件系統,例如對氣象數據的全鏈路監控[3]、針對CTS文件傳輸的可視化監控[4]、對觀測類數據的調度傳輸[5]、氣象資料檢索[6]、氣象資料備份[7-8]等等,這些功能單一的系統,無法滿足新業務網的需求,且各個系統之間信息無法共享。綜合式的文件管理方案,有利于業務網功能擴展以及降低系統耦合度。新一期的業務網建設對數據安全提出了更高的要求[9],獨立的文件管理系統更有利于安全功能的擴展。廣東省氣象業務網文件管理子系統(以下簡稱系統),要求在可能出現的單點故障和維護狀態下,保證業務能夠不間斷運行及保證數據的一致性和完整性[10]。同時系統設計采用微服務架構[11-12],實現動態可擴展性。
1系統設計與實現
1.1系統模塊設計
系統的基礎功能可分為3個大模塊:文件調度模塊、文件搜索模塊和文件監控模塊。其中,3個模塊通過日志相互關聯。1)文件調度模塊。該模塊實現了文件的遷移、清理、轉換、改名、備份等功能。支持不同協議、不同節律、不同字符集的傳輸;系統實現了多種文件讀取的過濾、文件寫入的后處理、對Office文檔的轉換功能。具體功能詳見表1。2)文件搜索模塊。該模塊是基于Solr的搜索引擎實現。Solr是基于Lucene的全文搜索服務器,支持中文分詞算法。匹配度根據文件名命中數、文件內容命中數、文件時間不同權重計算匹配度,最后根據匹配相關的排序顯示。顯示詞條包含文件的文件名、文件實體地址、源地址、目標地址等信息。3)文件監控模塊。該模塊實現了對數據流程的監控管理,應用數據血緣關系形成數據鏈路圖來描述數據流程,通過配置每個節點的監控,實現整個數據流程的監控,每個監控節點定義了不同告警級別、不同類型(文件、連接、服務)、不同節律的監控,并通過數據接口發送到值班輔助平臺。另外,系統接口服務模塊支持http的get與post兩種方式請求,為了保證系統數據訪問安全,訪問系統接口通常需要3個步驟:訪問認證接口;根據時間戳、系統編碼、密碼等信息生成認證;獲取認證信息后,則數據訪問接口附帶認證信息,獲取接口數據。對于以往開放式的數據服務,數據安全性有較大提升。其他功能包含公共信息的管理,如連接協議管理、系統監控管理、日志的維護模塊、消息提醒模塊、資料類型相關子系統的關聯配置等。系統功能劃分見圖1。
1.2系統邏輯架構設計
為了充分滿足系統在高可用、易擴展等方面的要求,采用SpringCloud微服務架構。根據不同的方法劃分成相應的微服務,各服務之間彼此獨立,也可以根據業務需求進行服務調用。邏輯層級上系統分為3層結構:交互層、服務層、數據層。系統以Tomcat為web服務器,Tomcat響應用戶請求,訪問微服務集群;而傳輸產生的日志、搜索的索引等其他相關的日志,通過Solr日志索引庫存儲。Oracle則提供了基本元數據的持久化存儲,例如配置信息等等。通過Redis作為數據緩存,減少了數據查詢的壓力。系統邏輯架構如圖2所示。
1.3系統部署實現
通過測試發現,系統運行壓力主要存在于文件處理服務的IO壓力以及線程數量的不足,所以部署多臺文件處理服務器和一臺接口服務器。因系統用戶數有限,Oracle、Redis服務壓力小,部署同一服務器。Solr提供日志服務與搜索服務,單獨部署一臺服務器。消息中間件與其他系統共用現有消息中間件服務器(圖3)。
2關鍵技術
2.1基于Quartz的任務調度算法
系統的調度任務分配是基于Quartz框架完成,核心元素是調度器scheduler,并由觸發器trigger和任務job兩個元素構成。trigger是用于定義調度時間的元素,例如定時執行、按日歷執行、單次執行等;job用于表示被調度的具體作業內容。概括性的描述,通過輪詢scheduler列表,完成了任務的調度,具體如圖4所示。
2.2文件同步清單生成算法
文件同步是一項耗費IO資源的功能,為防止頻繁的掃描和重復同步,對哪些文件同步的判斷十分關鍵。該系統采用的是日志比對的方式,對源目錄掃描文件集A和已同步文件集合B進行比對,判斷出是否需要同步,其具體方法是:A和B交集代表已經傳輸的日志,避免再次傳輸;A補集代表新增的文件,新增的文件清單,發送到消息隊列處理;B的補集代表已過期的日志,為了減少日志查詢壓力避免日志累積,可以刪除過期日志,具體同步清單生成如圖5所示。
2.3任務異步執行管理
為了避免多個任務線程對資源的搶占,本系統由RabbitMQ消息中間件實現任務的異步執行,對應每個任務,QuartZ生成任務調度器,執行調度清單生成算法,生成的調度清單打包成JSON消息集發送到RabbitMQ。當隊列監聽線程發現有消息時,通過消費者獲取消息,解析JSON信息,獲取完整的任務信息,完成任務的執行(圖6)。該機制有以下幾個優點。(1)調度線程不會受到任務實際執行情況影響,當完成消息寫入時,調度器的線程就結束。(2)如果執行異常,將異常消息寫入日志,任務json重新寫入隊列,并附加已傳輸的次數,實現文件有限次數的重傳。(3)執行線程設置了超時中斷,當任務阻塞時,線程超時,中斷線程回收資源,任務json重新寫入隊列。(4)消息中間件作為任務執行的緩存器,只有一個監聽線程,配置有限個消費者,避免了大量任務同時執行造成的IO壓力。
2.4字符集轉換算法
由于文件管理的數據源于不同用戶的文件上傳,系統無法控制用戶上傳的中文文件名字符集,如果不對中文文件名有效的處理,則會出現文件名亂碼的情況,嚴重的將會影響到文件的讀取,字符轉換算法的核心是:(1)正確匹配源文件的字符集讀取文件,此處可以根據用戶設定的字符集或者用JCharDet算法識別,JCharDet是基于統計概率的識別方法,通過計算字符集轉換后字符出現的概率,判斷是否亂碼、識別出字符集。(2)負責轉換的服務器操作系統字符集為最為完備的字符集,編碼范圍至少包含了源與目標目錄的字符集,該系統設定為utf-8,以免在字符集轉換的過程中發生了信息丟失。(3)將正確讀取的文本以目標目錄字符集寫入到目標目錄。
3試運行
系統為業務網提供了完備的文件處理服務。隨著新業務網建設周期,不斷的優化建設系統。通過統計2021年8月到10月的運行,日均同步文件數量144264個,總計大小23GB、搜索接口訪問231次。在千兆網絡帶寬、64核CPU、64g內存、ssd存儲的配置條件下,對系統的最大負載做了測試,分析了系統的文件處理、接口服務的最大負載能力,系統運行在最大負載的情況下,仍能夠穩定運行。通過與原業務網分散的文件處理功能對比,系統最大負載能力如表2所示。在管理效率上,通過系統的監控模塊實現自我監控,監控消息通過服務接口對接值班輔助理平臺,納入了值班監控;與原系統相比,通過分析值班員人工記錄的日志。對文件故障的發現時間減少了約33%;系統的文件接口,增加了信息認證,文件的同步,不依賴第三方軟件,有效的提升了安全性;集約的文件處理功能,實現了原業務網3個系統功能,減少了運維的工作量,優化了業務管理。系統還彌補了原業務網系統中中文字符集轉換、全文搜索等缺失的功能,解決了業務上的需求。
作者:黃偉 阮惠華 李澤杰 黃宇宸 陳逸智 單位:廣東省氣象探測數據中心