999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

智能網(wǎng)格氣象產(chǎn)品共享管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2022-08-17 10:07:26周雪瑩胡麗麗魏敏丹
電子設(shè)計(jì)工程 2022年15期
關(guān)鍵詞:系統(tǒng)

周雪瑩,胡麗麗,魏敏丹

(江西省氣象信息中心,江西 南昌 330096)

智能網(wǎng)格氣象產(chǎn)品定量化和精細(xì)化是氣象業(yè)務(wù)發(fā)展的必然趨勢(shì),對(duì)公眾和各行業(yè)領(lǐng)域的精細(xì)化天氣預(yù)報(bào)服務(wù)具有重要的作用[1-2]。隨著智能網(wǎng)格氣象業(yè)務(wù)不斷發(fā)展,省級(jí)部門(mén)接收、制作和發(fā)布的網(wǎng)格產(chǎn)品數(shù)據(jù)量日益增加,頻繁操作產(chǎn)品文件會(huì)影響服務(wù)器的整體性能,導(dǎo)致文件不能及時(shí)下載使用等問(wèn)題,為了保障智能網(wǎng)格氣象產(chǎn)品高效共享應(yīng)用,針對(duì)目前的文件共享方式的缺點(diǎn),該文設(shè)計(jì)開(kāi)發(fā)了一套智能網(wǎng)格氣象產(chǎn)品共享應(yīng)用系統(tǒng),實(shí)現(xiàn)消息生產(chǎn)和消費(fèi)、異步傳送以及實(shí)時(shí)監(jiān)聽(tīng)等功能。

1 消息傳輸流程設(shè)計(jì)

采用開(kāi)源消息代理軟件,通過(guò)服務(wù)端和客戶端的方式,實(shí)現(xiàn)客戶端實(shí)時(shí)獲取服務(wù)端授權(quán)訂閱的產(chǎn)品文件狀態(tài),通過(guò)有效的產(chǎn)品文件下載服務(wù)實(shí)現(xiàn)產(chǎn)品文件實(shí)時(shí)同步共享。當(dāng)有新的產(chǎn)品文件到達(dá)省級(jí)數(shù)據(jù)環(huán)境或者被監(jiān)聽(tīng)的文件目錄有文件變動(dòng)時(shí),觸發(fā)監(jiān)視模塊的實(shí)時(shí)監(jiān)視代理,生成標(biāo)準(zhǔn)格式的產(chǎn)品文件訂閱消息,通過(guò)處理線程池發(fā)送到開(kāi)源消息代理軟件[3-5],客戶端收到訂閱的消息后,啟動(dòng)文件同步模塊實(shí)現(xiàn)遠(yuǎn)程文件下載,下載結(jié)束后客戶端把下載情況生成狀態(tài)消息發(fā)送到開(kāi)源消息代理軟件,如果下載過(guò)程中有異常情況,如產(chǎn)品文件下載不完整、服務(wù)器狀態(tài)不正常等,通過(guò)異常處理模塊發(fā)送到監(jiān)控系統(tǒng)。消息傳輸流程設(shè)計(jì)圖如圖1 所示。

圖1 消息傳輸流程設(shè)計(jì)圖

2 總體設(shè)計(jì)

智能網(wǎng)格氣象產(chǎn)品共享應(yīng)用系統(tǒng)總體設(shè)計(jì)包括數(shù)據(jù)源區(qū)、功能模塊區(qū)和告警區(qū)。系統(tǒng)總體架構(gòu)圖如圖2 所示。

圖2 系統(tǒng)總體架構(gòu)圖

數(shù)據(jù)源區(qū)主要是通過(guò)監(jiān)視模塊實(shí)時(shí)監(jiān)視從各種渠道收集文件的服務(wù)器群,如果有新增、修改、移動(dòng)等文件操作時(shí),生成數(shù)據(jù)消息并寫(xiě)入日志文件,同時(shí)把產(chǎn)品文件的基本信息保存到業(yè)務(wù)數(shù)據(jù)庫(kù)。功能模塊區(qū)處理接收到的消息,開(kāi)源消息代理軟件會(huì)把有訂閱需求的消息發(fā)送到消息隊(duì)列中[6-9],客戶端根據(jù)接收的數(shù)據(jù)消息下載數(shù)據(jù)文件,同時(shí)把消息內(nèi)容和出錯(cuò)記錄寫(xiě)入日志文件,并且根據(jù)業(yè)務(wù)或科研需要對(duì)下載的產(chǎn)品文件進(jìn)行保存,為了防止出現(xiàn)僵尸進(jìn)程或者進(jìn)程異常退出,導(dǎo)致整個(gè)系統(tǒng)運(yùn)行不穩(wěn)定,建立了一套簡(jiǎn)單的機(jī)制以保證進(jìn)程一直處于活躍狀態(tài)[10]。告警區(qū)主要通過(guò)異常處理模塊把進(jìn)程運(yùn)行、服務(wù)器性能或同步情況等異常信息,通過(guò)短信、微信或頁(yè)面的形式發(fā)送給值班業(yè)務(wù)人員或管理人員。

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

在國(guó)內(nèi)氣象通信系統(tǒng)(CTS2.0)和虛擬資源池的基礎(chǔ)上,以收集到的各類(lèi)氣象網(wǎng)格產(chǎn)品文件為數(shù)據(jù)源,該系統(tǒng)采用開(kāi)源消息代理軟件RabbitMQ、MySQL數(shù)據(jù)庫(kù)、C#和Python 等技術(shù),該系統(tǒng)實(shí)現(xiàn)消息生產(chǎn)和消費(fèi)、異步傳送和實(shí)時(shí)監(jiān)聽(tīng)等功能。

3.1 監(jiān)視代理

監(jiān)視代理包括實(shí)時(shí)監(jiān)視代理和狀態(tài)監(jiān)視代理兩部分,分布式部署在服務(wù)器上,收集文件路徑、大小和操作等基本信息,以及進(jìn)程狀態(tài)等可用性數(shù)據(jù),并且通過(guò)守護(hù)進(jìn)程保證進(jìn)程一直處于運(yùn)行狀態(tài)。

實(shí)時(shí)監(jiān)視代理是基于Python 的實(shí)時(shí)監(jiān)控第三方庫(kù)watchdog 進(jìn)行開(kāi)發(fā)的,實(shí)時(shí)監(jiān)聽(tīng)代理的工作原理如圖3 所示。

圖3 實(shí)時(shí)監(jiān)聽(tīng)代理工作原理

通過(guò)參數(shù)設(shè)置控制監(jiān)視策略,如指定監(jiān)視的文件類(lèi)型、是否區(qū)分文件名大小寫(xiě)、是否監(jiān)視子文件夾,并且采取多次調(diào)用schedule 方法的方式,同時(shí)監(jiān)視多個(gè)文件夾,通過(guò)操作系統(tǒng)的時(shí)間觸發(fā),不需要循環(huán)和等待,當(dāng)共享清單下的特定文件被創(chuàng)建、刪除、修改、移動(dòng)時(shí),生成數(shù)據(jù)消息并與訂閱清單進(jìn)行對(duì)比,如果消息的內(nèi)容符合訂閱清單的要求,則把消息發(fā)送到開(kāi)源消息代理軟件中對(duì)應(yīng)的消息隊(duì)列。

3.2 消息處理

消息處理軟件包括消息封裝模塊和消息處理模塊,分別部署在服務(wù)端和客戶端。消息封裝模塊是把接收到的產(chǎn)品文件信息根據(jù)配置文件進(jìn)行標(biāo)準(zhǔn)封裝,使用開(kāi)源消息代理軟件RabbitMQ 的異步消息隊(duì)列(Work Queue)方式投遞消息,不需等待客戶端響應(yīng)可直接將消息來(lái)源、發(fā)送時(shí)間和發(fā)送目的地等信息寫(xiě)入日志文件。消息的傳輸格式是以鍵值對(duì)的形式存放消息屬性,包含消息發(fā)布者信息、消息接收者信息、消息發(fā)送時(shí)間、文件大小和文件絕對(duì)路徑等。

消息處理模塊部署在客戶端,客戶端從消息隊(duì)列中讀取訂閱的消息,根據(jù)獲得的消息屬性調(diào)用文件同步中的文件下載模塊,并把下載文件的基本信息寫(xiě)入日志文件,如文件名、文件大小、保存路徑和來(lái)源等,同時(shí)存入關(guān)系數(shù)據(jù)庫(kù)MySQL 中進(jìn)行持久化存儲(chǔ)。

3.3 存儲(chǔ)管理

該系統(tǒng)采用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL 來(lái)存儲(chǔ)信息,為了提高數(shù)據(jù)讀寫(xiě)性能、數(shù)據(jù)庫(kù)訪問(wèn)速度和數(shù)據(jù)查詢速度,保證數(shù)據(jù)入庫(kù)的及時(shí)性,采用視圖、索引、主鍵等對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化設(shè)計(jì)[11-13]。根據(jù)業(yè)務(wù)需求,系統(tǒng)設(shè)計(jì)了服務(wù)器狀態(tài)表、文件詳細(xì)信息表、文件總量數(shù)據(jù)表、異常情況數(shù)據(jù)表和下載情況數(shù)據(jù)表等。服務(wù)器狀態(tài)表用于存儲(chǔ)監(jiān)控區(qū)域服務(wù)器和客戶端的系統(tǒng)進(jìn)程、IO、系統(tǒng)時(shí)間和磁盤(pán)等出現(xiàn)異常的信息;文件詳細(xì)信息表用于存儲(chǔ)監(jiān)控區(qū)域共享文件的詳細(xì)信息;文件總量數(shù)據(jù)表用于存儲(chǔ)監(jiān)控區(qū)域共享文件每日下載的數(shù)據(jù)總量;異常情況數(shù)據(jù)表用于存儲(chǔ)讀取消息過(guò)程或下載過(guò)程出現(xiàn)的異常情況;下載情況數(shù)據(jù)表用于存儲(chǔ)客戶端下載數(shù)據(jù)的文件名、數(shù)據(jù)量、時(shí)間和目錄等信息。

3.4 異常處理

異常情況包括文件同步失敗、服務(wù)器狀態(tài)異常和進(jìn)程異常等,異常處理模塊采用Web 頁(yè)面的方式,提供閾值設(shè)置和管理、告警方式的選擇和異常記錄歷史查詢等功能。告警閾值設(shè)置有3 個(gè)級(jí)別,根據(jù)不同的閾值觸發(fā)不同級(jí)別的告警[14-16];告警方式有微信、短信和Web 頁(yè)面3 種方式,根據(jù)值班業(yè)務(wù)人員或管理人員的需求選擇一種或多種方式進(jìn)行告警;異常記錄歷史查詢可以查詢所有的異常記錄以及處理結(jié)果。

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

4.1 基于RabbitMQ的異步消息傳輸

RabbitMQ 是基于高級(jí)消息隊(duì)列協(xié)議(Advanced Message Queuing Protocol,AMQP)的開(kāi)源消息代理軟件,設(shè)置隊(duì)列中的消息持久化,用來(lái)處理實(shí)時(shí)且要求高可靠性的消息。該文采用RabbitMQ 的主題交換器(Topic Exchange),使用特殊含義的符號(hào)為路由器關(guān)鍵字(Routing Key)設(shè)置特定規(guī)則,根據(jù)路由器關(guān)鍵字發(fā)送消息到所有使用匹配綁定鍵綁定的消息隊(duì)列(Queue),如果不存在路由器關(guān)鍵字中指定的消息隊(duì)列名,則指定到這個(gè)消息隊(duì)列的消息會(huì)被丟棄。客戶端使用basic.consume 命令,訂閱消息隊(duì)列中的消息,實(shí)現(xiàn)信道(channel)自動(dòng)在處理完上一條消息之后,接收下一條消息[9-10]。

消息按照主題方式發(fā)送,消息隊(duì)列名稱以“Q.”開(kāi)頭,包含資料來(lái)源和資料類(lèi)型,主題交換器的路由器關(guān)鍵字是由點(diǎn)分隔的一組單詞組成,“#”表示0 個(gè)或若干個(gè)關(guān)鍵字,“*”表示一個(gè)關(guān)鍵字,將消息發(fā)送到一個(gè)或者多個(gè)消息隊(duì)列中,實(shí)現(xiàn)pub/sub 模式,即發(fā)布訂閱方式。主題方式消息傳輸圖如圖4 所示。

圖4 主題方式消息傳輸圖

4.2 文件系統(tǒng)實(shí)時(shí)監(jiān)聽(tīng)

基于Python 的實(shí)時(shí)監(jiān)控第三方庫(kù)watchdog 優(yōu)先使用底層原生API,其次再通過(guò)輪詢磁盤(pán)實(shí)現(xiàn)監(jiān)控。通過(guò)操作系統(tǒng)的時(shí)間觸發(fā),不需要循環(huán)和等待,對(duì)不同平臺(tái)的事件都進(jìn)行了封裝,通過(guò)observer 模塊不斷檢測(cè)調(diào)用平臺(tái)的依賴代碼,監(jiān)控指定目錄/文件,當(dāng)有創(chuàng)建、刪除、修改、移動(dòng)等變化時(shí),產(chǎn)生事件并且對(duì)應(yīng)特定的事件類(lèi),再通過(guò)事件處理類(lèi)(event_handler)來(lái)處理對(duì)應(yīng)的事件,observer 模塊、事件處理類(lèi)和被監(jiān)控的文件夾通過(guò)observer.schedule函數(shù)串聯(lián)起來(lái)。

文件系統(tǒng)實(shí)時(shí)監(jiān)聽(tīng)調(diào)用文件系統(tǒng)事件處理類(lèi),通過(guò)定義處理事件,繼承FileMovedEvent、FileCreated Event 和FileModifiedEvent,并重寫(xiě)對(duì)應(yīng)實(shí)例方法,來(lái)實(shí)現(xiàn)文件實(shí)時(shí)監(jiān)視。文件寫(xiě)入目錄的過(guò)程中會(huì)多次觸發(fā)類(lèi)實(shí)例self.on_moved(event),為了避免文件重復(fù)處理產(chǎn)生重復(fù)記錄,導(dǎo)致大量相同的消息發(fā)送到消息代理軟件,把文件名賦值給一個(gè)全局變量,如果上次傳入的文件名和這次賦值的文件名是一致的,則不做任何操作,從而避免多次觸發(fā)類(lèi)實(shí)例。為了只對(duì)格點(diǎn)資料進(jìn)行監(jiān)視控制,使用PatternMatching EventHandler 事件處理類(lèi),指定模式為GRB、GRB2、MIC 和BIN,如果監(jiān)視目錄下的文件名匹配指定的文件類(lèi)型則調(diào)用實(shí)例方法。

4.3 客戶端狀態(tài)信息定時(shí)采集

采用基于Quartz的Python定時(shí)任務(wù)框架apscheduler和系統(tǒng)工具模塊psutil 實(shí)現(xiàn)定時(shí)采集客戶端進(jìn)程運(yùn)行狀態(tài)信息的任務(wù)。psutil 是一個(gè)開(kāi)源且跨平臺(tái)的庫(kù),提供了便利的函數(shù),用于獲取系統(tǒng)運(yùn)行的進(jìn)程和系統(tǒng)利用率等信息。操作系統(tǒng)基本都會(huì)提供定時(shí)任務(wù)的實(shí)現(xiàn),例如Linux 自帶的crontab、Windows 自帶的任務(wù)計(jì)劃,但是apscheduler 提供了構(gòu)建專(zhuān)用調(diào)度器或調(diào)度服務(wù)的基礎(chǔ)模塊,以及非常豐富而且方便易用的定時(shí)任務(wù)接口,提供了基于日期、固定時(shí)間間隔以及crontab 類(lèi)型的任務(wù),能實(shí)現(xiàn)更好、更便捷的跨平臺(tái)定時(shí)任務(wù)。客戶端狀態(tài)信息定時(shí)采集時(shí),采用后臺(tái)運(yùn)行(BackgroundScheduler)的方式,每隔5 min采集一次進(jìn)程信息并寫(xiě)入到業(yè)務(wù)數(shù)據(jù)庫(kù)中。

5 結(jié)束語(yǔ)

該文在虛擬資源池的環(huán)境下,設(shè)計(jì)了具有消息生產(chǎn)和消費(fèi)、異步傳送、實(shí)時(shí)監(jiān)聽(tīng)和文件遠(yuǎn)程備份等功能的智能網(wǎng)格氣象產(chǎn)品共享應(yīng)用系統(tǒng),并且對(duì)消息生成、消息處理、實(shí)時(shí)監(jiān)視和文件同步進(jìn)行了詳細(xì)的闡述。采用RabbitMQ開(kāi)源消息代理軟件,實(shí)現(xiàn)消息異步處理,實(shí)時(shí)生成產(chǎn)品文件的數(shù)據(jù)消息,并且發(fā)送到消息隊(duì)列,客戶端根據(jù)接收的數(shù)據(jù)消息下載對(duì)應(yīng)的產(chǎn)品文件,減少了服務(wù)器內(nèi)存的使用量,提高了數(shù)據(jù)共享時(shí)效;利用差異備份的方式備份變動(dòng)的數(shù)據(jù),減少寬帶資源的大量耗費(fèi),提高數(shù)據(jù)傳輸效率;定時(shí)采集客戶端狀態(tài)信息獲取系統(tǒng)運(yùn)行的進(jìn)程和系統(tǒng)利用率,便于監(jiān)控系統(tǒng)和管理進(jìn)程,保證系統(tǒng)安全可靠運(yùn)行。

猜你喜歡
系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
基于UG的發(fā)射箱自動(dòng)化虛擬裝配系統(tǒng)開(kāi)發(fā)
半沸制皂系統(tǒng)(下)
FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統(tǒng) 德行天下
PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 国产幂在线无码精品| 久久网欧美| a国产精品| 91免费精品国偷自产在线在线| 欧美一级专区免费大片| 女人18毛片一级毛片在线 | 亚洲欧美日韩视频一区| 97人人做人人爽香蕉精品| 中国特黄美女一级视频| 欧美日韩一区二区在线播放| 国产自在线播放| 精品国产网站| 免费在线视频a| 国产美女免费| 亚洲综合专区| 喷潮白浆直流在线播放| 91在线免费公开视频| 亚洲一区色| 婷婷在线网站| 久久亚洲国产视频| 国精品91人妻无码一区二区三区| 国产99久久亚洲综合精品西瓜tv| 色欲国产一区二区日韩欧美| 國產尤物AV尤物在線觀看| 成年人福利视频| 国产SUV精品一区二区6| 亚洲成A人V欧美综合| 国产视频a| 天堂成人av| 91无码人妻精品一区二区蜜桃| 国产精品香蕉在线| 重口调教一区二区视频| 久久综合丝袜日本网| 欧美日韩福利| 欧美日韩在线亚洲国产人| 欧美日韩高清在线| h视频在线观看网站| 精品三级网站| 成人蜜桃网| 国产精品第| 欧美在线天堂| 亚洲h视频在线| 精品亚洲麻豆1区2区3区| 波多野结衣视频网站| av一区二区三区在线观看 | 国产国语一级毛片| 一本久道久久综合多人| 久久国产拍爱| 久久香蕉国产线看精品| 亚洲综合色婷婷| 国产亚洲精品yxsp| 国产精品夜夜嗨视频免费视频| 欧美午夜理伦三级在线观看| 日本黄色不卡视频| 精品视频91| 久久综合九色综合97网| a级免费视频| 色成人综合| 手机在线免费毛片| 亚洲av无码专区久久蜜芽| 精品一區二區久久久久久久網站| 亚洲综合香蕉| 日本亚洲欧美在线| 国产在线精品美女观看| 亚洲欧洲日产国码无码av喷潮| 久久精品无码中文字幕| 在线观看国产黄色| 国产成人无码久久久久毛片| 91精品亚洲| 国产精品真实对白精彩久久| 亚洲三级成人| 国产亚洲第一页| 亚洲视频在线观看免费视频| 一级做a爰片久久毛片毛片| 中文精品久久久久国产网址 | 无码综合天天久久综合网| jizz国产在线| 国产高清国内精品福利| 国产18在线播放| 国产午夜福利片在线观看| 亚洲欧洲日本在线| 这里只有精品在线|