公務(wù)員期刊網(wǎng) 論文中心 正文

氣象業(yè)務(wù)網(wǎng)文件管理子系統(tǒng)設(shè)計(jì)淺析

前言:想要寫(xiě)出一篇引人入勝的文章?我們特意為您整理了氣象業(yè)務(wù)網(wǎng)文件管理子系統(tǒng)設(shè)計(jì)淺析范文,希望能給你帶來(lái)靈感和參考,敬請(qǐng)閱讀。

氣象業(yè)務(wù)網(wǎng)文件管理子系統(tǒng)設(shè)計(jì)淺析

摘要:針對(duì)原廣東省氣象業(yè)務(wù)網(wǎng)文件管理中存在的功能分散、與頁(yè)面耦合度太高等問(wèn)題,設(shè)計(jì)了獨(dú)立的文件管理子系統(tǒng)。該系統(tǒng)采用微服務(wù)架構(gòu)、Solr搜索引擎、RabbitMQ消息中間件、Quartz調(diào)度管理等技術(shù)方案,集中解決了文件資源的同步存儲(chǔ)、全文搜索、數(shù)據(jù)轉(zhuǎn)換、監(jiān)控告警、備份清理等功能需求。應(yīng)用結(jié)果表明,文件管理子系統(tǒng)保障了業(yè)務(wù)網(wǎng)文件資料的完整性和及時(shí)性,提升了文件搜索服務(wù)能力,提高了業(yè)務(wù)管理效率。

關(guān)鍵詞:氣象業(yè)務(wù)網(wǎng);文件管理子系統(tǒng);廣東省

隨著氣象現(xiàn)代化要求日益增高[1],廣東省氣象局于2019年開(kāi)始建設(shè)新業(yè)務(wù)網(wǎng),針對(duì)原業(yè)務(wù)網(wǎng)的文件處理功能不集中,文件管理與業(yè)務(wù)網(wǎng)頁(yè)面顯示耦合度太高的問(wèn)題[2],新業(yè)務(wù)網(wǎng)建設(shè)采用開(kāi)發(fā)文件管理子系統(tǒng)的思路。當(dāng)前,文件類(lèi)氣象資料的處理多為功能單一的軟件系統(tǒng),例如對(duì)氣象數(shù)據(jù)的全鏈路監(jiān)控[3]、針對(duì)CTS文件傳輸?shù)目梢暬O(jiān)控[4]、對(duì)觀測(cè)類(lèi)數(shù)據(jù)的調(diào)度傳輸[5]、氣象資料檢索[6]、氣象資料備份[7-8]等等,這些功能單一的系統(tǒng),無(wú)法滿足新業(yè)務(wù)網(wǎng)的需求,且各個(gè)系統(tǒng)之間信息無(wú)法共享。綜合式的文件管理方案,有利于業(yè)務(wù)網(wǎng)功能擴(kuò)展以及降低系統(tǒng)耦合度。新一期的業(yè)務(wù)網(wǎng)建設(shè)對(duì)數(shù)據(jù)安全提出了更高的要求[9],獨(dú)立的文件管理系統(tǒng)更有利于安全功能的擴(kuò)展。廣東省氣象業(yè)務(wù)網(wǎng)文件管理子系統(tǒng)(以下簡(jiǎn)稱(chēng)系統(tǒng)),要求在可能出現(xiàn)的單點(diǎn)故障和維護(hù)狀態(tài)下,保證業(yè)務(wù)能夠不間斷運(yùn)行及保證數(shù)據(jù)的一致性和完整性[10]。同時(shí)系統(tǒng)設(shè)計(jì)采用微服務(wù)架構(gòu)[11-12],實(shí)現(xiàn)動(dòng)態(tài)可擴(kuò)展性。

1系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

1.1系統(tǒng)模塊設(shè)計(jì)

系統(tǒng)的基礎(chǔ)功能可分為3個(gè)大模塊:文件調(diào)度模塊、文件搜索模塊和文件監(jiān)控模塊。其中,3個(gè)模塊通過(guò)日志相互關(guān)聯(lián)。1)文件調(diào)度模塊。該模塊實(shí)現(xiàn)了文件的遷移、清理、轉(zhuǎn)換、改名、備份等功能。支持不同協(xié)議、不同節(jié)律、不同字符集的傳輸;系統(tǒng)實(shí)現(xiàn)了多種文件讀取的過(guò)濾、文件寫(xiě)入的后處理、對(duì)Office文檔的轉(zhuǎn)換功能。具體功能詳見(jiàn)表1。2)文件搜索模塊。該模塊是基于Solr的搜索引擎實(shí)現(xiàn)。Solr是基于Lucene的全文搜索服務(wù)器,支持中文分詞算法。匹配度根據(jù)文件名命中數(shù)、文件內(nèi)容命中數(shù)、文件時(shí)間不同權(quán)重計(jì)算匹配度,最后根據(jù)匹配相關(guān)的排序顯示。顯示詞條包含文件的文件名、文件實(shí)體地址、源地址、目標(biāo)地址等信息。3)文件監(jiān)控模塊。該模塊實(shí)現(xiàn)了對(duì)數(shù)據(jù)流程的監(jiān)控管理,應(yīng)用數(shù)據(jù)血緣關(guān)系形成數(shù)據(jù)鏈路圖來(lái)描述數(shù)據(jù)流程,通過(guò)配置每個(gè)節(jié)點(diǎn)的監(jiān)控,實(shí)現(xiàn)整個(gè)數(shù)據(jù)流程的監(jiān)控,每個(gè)監(jiān)控節(jié)點(diǎn)定義了不同告警級(jí)別、不同類(lèi)型(文件、連接、服務(wù))、不同節(jié)律的監(jiān)控,并通過(guò)數(shù)據(jù)接口發(fā)送到值班輔助平臺(tái)。另外,系統(tǒng)接口服務(wù)模塊支持http的get與post兩種方式請(qǐng)求,為了保證系統(tǒng)數(shù)據(jù)訪問(wèn)安全,訪問(wèn)系統(tǒng)接口通常需要3個(gè)步驟:訪問(wèn)認(rèn)證接口;根據(jù)時(shí)間戳、系統(tǒng)編碼、密碼等信息生成認(rèn)證;獲取認(rèn)證信息后,則數(shù)據(jù)訪問(wèn)接口附帶認(rèn)證信息,獲取接口數(shù)據(jù)。對(duì)于以往開(kāi)放式的數(shù)據(jù)服務(wù),數(shù)據(jù)安全性有較大提升。其他功能包含公共信息的管理,如連接協(xié)議管理、系統(tǒng)監(jiān)控管理、日志的維護(hù)模塊、消息提醒模塊、資料類(lèi)型相關(guān)子系統(tǒng)的關(guān)聯(lián)配置等。系統(tǒng)功能劃分見(jiàn)圖1。

1.2系統(tǒng)邏輯架構(gòu)設(shè)計(jì)

為了充分滿足系統(tǒng)在高可用、易擴(kuò)展等方面的要求,采用SpringCloud微服務(wù)架構(gòu)。根據(jù)不同的方法劃分成相應(yīng)的微服務(wù),各服務(wù)之間彼此獨(dú)立,也可以根據(jù)業(yè)務(wù)需求進(jìn)行服務(wù)調(diào)用。邏輯層級(jí)上系統(tǒng)分為3層結(jié)構(gòu):交互層、服務(wù)層、數(shù)據(jù)層。系統(tǒng)以Tomcat為web服務(wù)器,Tomcat響應(yīng)用戶請(qǐng)求,訪問(wèn)微服務(wù)集群;而傳輸產(chǎn)生的日志、搜索的索引等其他相關(guān)的日志,通過(guò)Solr日志索引庫(kù)存儲(chǔ)。Oracle則提供了基本元數(shù)據(jù)的持久化存儲(chǔ),例如配置信息等等。通過(guò)Redis作為數(shù)據(jù)緩存,減少了數(shù)據(jù)查詢的壓力。系統(tǒng)邏輯架構(gòu)如圖2所示。

1.3系統(tǒng)部署實(shí)現(xiàn)

通過(guò)測(cè)試發(fā)現(xiàn),系統(tǒng)運(yùn)行壓力主要存在于文件處理服務(wù)的IO壓力以及線程數(shù)量的不足,所以部署多臺(tái)文件處理服務(wù)器和一臺(tái)接口服務(wù)器。因系統(tǒng)用戶數(shù)有限,Oracle、Redis服務(wù)壓力小,部署同一服務(wù)器。Solr提供日志服務(wù)與搜索服務(wù),單獨(dú)部署一臺(tái)服務(wù)器。消息中間件與其他系統(tǒng)共用現(xiàn)有消息中間件服務(wù)器(圖3)。

2關(guān)鍵技術(shù)

2.1基于Quartz的任務(wù)調(diào)度算法

系統(tǒng)的調(diào)度任務(wù)分配是基于Quartz框架完成,核心元素是調(diào)度器scheduler,并由觸發(fā)器trigger和任務(wù)job兩個(gè)元素構(gòu)成。trigger是用于定義調(diào)度時(shí)間的元素,例如定時(shí)執(zhí)行、按日歷執(zhí)行、單次執(zhí)行等;job用于表示被調(diào)度的具體作業(yè)內(nèi)容。概括性的描述,通過(guò)輪詢scheduler列表,完成了任務(wù)的調(diào)度,具體如圖4所示。

2.2文件同步清單生成算法

文件同步是一項(xiàng)耗費(fèi)IO資源的功能,為防止頻繁的掃描和重復(fù)同步,對(duì)哪些文件同步的判斷十分關(guān)鍵。該系統(tǒng)采用的是日志比對(duì)的方式,對(duì)源目錄掃描文件集A和已同步文件集合B進(jìn)行比對(duì),判斷出是否需要同步,其具體方法是:A和B交集代表已經(jīng)傳輸?shù)娜罩?,避免再次傳?A補(bǔ)集代表新增的文件,新增的文件清單,發(fā)送到消息隊(duì)列處理;B的補(bǔ)集代表已過(guò)期的日志,為了減少日志查詢壓力避免日志累積,可以刪除過(guò)期日志,具體同步清單生成如圖5所示。

2.3任務(wù)異步執(zhí)行管理

為了避免多個(gè)任務(wù)線程對(duì)資源的搶占,本系統(tǒng)由RabbitMQ消息中間件實(shí)現(xiàn)任務(wù)的異步執(zhí)行,對(duì)應(yīng)每個(gè)任務(wù),QuartZ生成任務(wù)調(diào)度器,執(zhí)行調(diào)度清單生成算法,生成的調(diào)度清單打包成JSON消息集發(fā)送到RabbitMQ。當(dāng)隊(duì)列監(jiān)聽(tīng)線程發(fā)現(xiàn)有消息時(shí),通過(guò)消費(fèi)者獲取消息,解析JSON信息,獲取完整的任務(wù)信息,完成任務(wù)的執(zhí)行(圖6)。該機(jī)制有以下幾個(gè)優(yōu)點(diǎn)。(1)調(diào)度線程不會(huì)受到任務(wù)實(shí)際執(zhí)行情況影響,當(dāng)完成消息寫(xiě)入時(shí),調(diào)度器的線程就結(jié)束。(2)如果執(zhí)行異常,將異常消息寫(xiě)入日志,任務(wù)json重新寫(xiě)入隊(duì)列,并附加已傳輸?shù)拇螖?shù),實(shí)現(xiàn)文件有限次數(shù)的重傳。(3)執(zhí)行線程設(shè)置了超時(shí)中斷,當(dāng)任務(wù)阻塞時(shí),線程超時(shí),中斷線程回收資源,任務(wù)json重新寫(xiě)入隊(duì)列。(4)消息中間件作為任務(wù)執(zhí)行的緩存器,只有一個(gè)監(jiān)聽(tīng)線程,配置有限個(gè)消費(fèi)者,避免了大量任務(wù)同時(shí)執(zhí)行造成的IO壓力。

2.4字符集轉(zhuǎn)換算法

由于文件管理的數(shù)據(jù)源于不同用戶的文件上傳,系統(tǒng)無(wú)法控制用戶上傳的中文文件名字符集,如果不對(duì)中文文件名有效的處理,則會(huì)出現(xiàn)文件名亂碼的情況,嚴(yán)重的將會(huì)影響到文件的讀取,字符轉(zhuǎn)換算法的核心是:(1)正確匹配源文件的字符集讀取文件,此處可以根據(jù)用戶設(shè)定的字符集或者用JCharDet算法識(shí)別,JCharDet是基于統(tǒng)計(jì)概率的識(shí)別方法,通過(guò)計(jì)算字符集轉(zhuǎn)換后字符出現(xiàn)的概率,判斷是否亂碼、識(shí)別出字符集。(2)負(fù)責(zé)轉(zhuǎn)換的服務(wù)器操作系統(tǒng)字符集為最為完備的字符集,編碼范圍至少包含了源與目標(biāo)目錄的字符集,該系統(tǒng)設(shè)定為utf-8,以免在字符集轉(zhuǎn)換的過(guò)程中發(fā)生了信息丟失。(3)將正確讀取的文本以目標(biāo)目錄字符集寫(xiě)入到目標(biāo)目錄。

3試運(yùn)行

系統(tǒng)為業(yè)務(wù)網(wǎng)提供了完備的文件處理服務(wù)。隨著新業(yè)務(wù)網(wǎng)建設(shè)周期,不斷的優(yōu)化建設(shè)系統(tǒng)。通過(guò)統(tǒng)計(jì)2021年8月到10月的運(yùn)行,日均同步文件數(shù)量144264個(gè),總計(jì)大小23GB、搜索接口訪問(wèn)231次。在千兆網(wǎng)絡(luò)帶寬、64核CPU、64g內(nèi)存、ssd存儲(chǔ)的配置條件下,對(duì)系統(tǒng)的最大負(fù)載做了測(cè)試,分析了系統(tǒng)的文件處理、接口服務(wù)的最大負(fù)載能力,系統(tǒng)運(yùn)行在最大負(fù)載的情況下,仍能夠穩(wěn)定運(yùn)行。通過(guò)與原業(yè)務(wù)網(wǎng)分散的文件處理功能對(duì)比,系統(tǒng)最大負(fù)載能力如表2所示。在管理效率上,通過(guò)系統(tǒng)的監(jiān)控模塊實(shí)現(xiàn)自我監(jiān)控,監(jiān)控消息通過(guò)服務(wù)接口對(duì)接值班輔助理平臺(tái),納入了值班監(jiān)控;與原系統(tǒng)相比,通過(guò)分析值班員人工記錄的日志。對(duì)文件故障的發(fā)現(xiàn)時(shí)間減少了約33%;系統(tǒng)的文件接口,增加了信息認(rèn)證,文件的同步,不依賴第三方軟件,有效的提升了安全性;集約的文件處理功能,實(shí)現(xiàn)了原業(yè)務(wù)網(wǎng)3個(gè)系統(tǒng)功能,減少了運(yùn)維的工作量,優(yōu)化了業(yè)務(wù)管理。系統(tǒng)還彌補(bǔ)了原業(yè)務(wù)網(wǎng)系統(tǒng)中中文字符集轉(zhuǎn)換、全文搜索等缺失的功能,解決了業(yè)務(wù)上的需求。

作者:黃偉 阮惠華 李澤杰 黃宇宸 陳逸智 單位:廣東省氣象探測(cè)數(shù)據(jù)中心