王建榮,唐懷甌,孔芹芹,金素文
(安徽省氣象信息中心,合肥 230031)
氣象資料省際共享監(jiān)控系統(tǒng)①
王建榮,唐懷甌,孔芹芹,金素文
(安徽省氣象信息中心,合肥 230031)
氣象資料省際共享為預報預測以及氣象服務提供了及時的周邊省資料服務. 目前國家氣象信息中心按月統(tǒng)計省際共享資料傳輸質量,不能及時發(fā)現(xiàn)資料收發(fā)異常. 參照上行傳輸監(jiān)控方案,設計與實現(xiàn)了省際共享實時監(jiān)控系統(tǒng),將接收與發(fā)送的自動站文件解碼得到的站級信息以及雷達基數(shù)據(jù)站級信息寫入省際共享監(jiān)控庫. 通過Web展現(xiàn)國家級自動站正點資料、區(qū)域自動站正點資料和雷達基數(shù)據(jù)接收與發(fā)送情況. 基于數(shù)據(jù)庫實現(xiàn)各省資料日、月和年統(tǒng)計分析,為資料應用部門和管理部門提供實時的省際資料傳輸情況. 系統(tǒng)自動生成省際共享日志并定時上報. 業(yè)務應用證明,該系統(tǒng)運行穩(wěn)定可靠,體現(xiàn)了氣象資料省際共享實時業(yè)務質量監(jiān)控的優(yōu)勢.
省際共享; 三層架構; CTS; 多線程并行; 分區(qū)表
數(shù)據(jù)共享業(yè)務在短時臨近預報、突發(fā)災害性天氣預報預警和決策氣象服務工作中的作用十分顯著. 之前,各省只能通過中國氣象局衛(wèi)星廣播系統(tǒng)(CMACast[1])下行通道獲取鄰省資料,從CMACast系統(tǒng)下發(fā)的全國站點打包文件中逐個查找所需的站點,由于全國站點數(shù)目大,下發(fā)報文數(shù)量多,導致每時次數(shù)據(jù)處理耗時長,不能滿足預報預測以及氣象服務對資料及時性的需求[2]. 2012年5月中國氣象局組織實施了全國省際氣象數(shù)據(jù)共享工作,在全國范圍開展雷達基數(shù)據(jù)、國家級和區(qū)域氣象自動站觀測數(shù)據(jù)的省際數(shù)據(jù)共享傳輸業(yè)務. 各省陸續(xù)開通了新一代國內通信系統(tǒng)共享服務,實現(xiàn)雷達基數(shù)據(jù)和自動站資料在省際間快速共享和傳輸,極大地提高了各省市(區(qū))獲取周邊省氣象資料的時效.
國家氣象信息中心負責按照共享氣象資料傳輸時限要求按月統(tǒng)計省際共享氣象資料傳輸質量,通過國家級氣象業(yè)務內網(wǎng)發(fā)布統(tǒng)計結果,各省信息中心每天將前一天的站級記錄日志文件通過省級CTS系統(tǒng)上傳至國家氣象信息中心[3]. 目前,國內對氣象資料省際共享實時監(jiān)控方法的研究尚待完善.
本系統(tǒng)按照省際共享氣象資料傳輸時效要求,對省際共享做實時監(jiān)控,及時發(fā)現(xiàn)收發(fā)雙向中斷問題,保障氣象資料省際共享業(yè)務質量,并向資料用戶和管理部門提供實時的省際傳輸狀況.
按照中國氣象局規(guī)定,安徽省與江蘇、浙江、上海、江西、湖北、湖南、河南和山東8個省進行氣象資料交換共享. 中國氣象局建設了CMANet(全國氣象寬帶網(wǎng)絡)和新一代國內通信系統(tǒng)以及后續(xù)的CTS,省際之間以CMANet為支撐,共享資料,如圖1所示.
圖1 系統(tǒng)架構
CTS是全國綜合氣象信息共享平臺(CIMISS)的數(shù)據(jù)收集與分發(fā)子系統(tǒng),是新一代國內通信系統(tǒng)的升級[4,5]. 目前,安徽省新一代系統(tǒng)主要運行CMACast下行業(yè)務,省際共享收發(fā)Server作為新一代系統(tǒng)的單機備份,專門承載省際共享業(yè)務.
省際共享的資料包括國家級自動站資料、區(qū)域自動站資料和多普勒雷達基數(shù)據(jù),本文將國家級自動站、區(qū)域自動站統(tǒng)稱為自動站資料.
安徽省氣象局省際共享業(yè)務流程為: 資料通過CTS分發(fā)至省際共享收發(fā)Server,省際共享收發(fā)Server將收集的資料放進各省傳輸隊列,分發(fā)進程采用并行方式將各隊列資料推送至各省服務器并將發(fā)送日志入庫. 省際共享收發(fā)Server接收外省的資料后也通過隊列方式推送至全省資料共享Server(主機別名:SHARES)省氣象臺資料 Server(主機別名: SQXT)兩個本地存儲服務器并將接收日志入庫.
省際監(jiān)控子系統(tǒng)通過查詢省際共享收發(fā)Server的MySQL數(shù)據(jù)庫xxshj_db實時接收表(TR_FILE_RCV)和實時發(fā)送表(TR_FILE_SEND),逐行讀取記錄集,根據(jù)文件名字段調用.NET FTP API函數(shù)訪問資料存儲路徑中的自動站打包文件,逐個文件解碼得到區(qū)站號和觀測時間等信息后批量插入省際監(jiān)控子系統(tǒng)數(shù)據(jù)庫.
省際監(jiān)控子系統(tǒng)包括接收信息入庫模塊、發(fā)送信息入庫模塊、省際共享日志文件生成模塊、收發(fā)信息補入庫模塊、監(jiān)控告警模塊和統(tǒng)計分析模塊,如圖2.根據(jù)中國局要求,每日生成省際共享日志文件并上傳,省際共享日志生成模塊基于省際監(jiān)控子系統(tǒng)數(shù)據(jù)庫(數(shù)據(jù)庫 ID: sjgx,基于 SQL Server2008 R2),定時生成日志文件.
省際共享收發(fā)Server接收外省的自動站資料后解碼入庫得到站級信息(包括區(qū)站號Iiiii和觀測時間),而雷達基數(shù)據(jù)是命名規(guī)范的二進制文件,不作解碼,解析其文件名即可得到雷達站區(qū)站號和觀測時間. 由資料類型、區(qū)站號、觀測時間、接收時間等即可批量插入sjgx庫自動站接收信息表(dbo.RcvRealInfo)和雷達接收信息表(dbo. RadRcvRealInfo).
發(fā)送信息包括兩個類型目的地:
(1) 8 個外省;
(2) 兩個本地資料服務器SHARES及SQXT.
對于(1),本監(jiān)控系統(tǒng)需解碼省際共享收發(fā)Server上本省發(fā)送外省成功后轉移至備份目錄中的自動站資料并入庫; 對于(2),由于“接收信息入庫”模塊是解碼SHARES和SQXT資料存儲服務器中的文件,接收信息入庫的同時,也根據(jù)發(fā)送信息表結構生成DataTable對象批量寫入發(fā)送信息表(dbo.SndRealInfo和dbo.RadSndRealInfo).
圖2 監(jiān)控系統(tǒng)功能模塊
按照《省際共享氣象資料日志文件傳輸規(guī)范》要求,每天由sjgx數(shù)據(jù)庫的作業(yè)調用存儲過程dbo.Create DataShareProvinceDayLogFile定時生成前一天的站級記錄日志文件并壓縮成一個文件后通過CTS系統(tǒng)上傳至國家氣象信息中心.
文件名模板為: Z_NOTES_C_CCCC_YYYYMMDD HHmmss_L_SHARE-sType.TXT,其中sType規(guī)定見表1.
表1 日志文件
鄰省自動站正點資料、雷達基數(shù)據(jù)收發(fā)時效監(jiān)測.通過檢測策略指定第幾分鐘采集sjgx數(shù)據(jù)庫接收信息表和發(fā)送信息表,某省缺報站點總數(shù)超過閾值(或缺報率超過閾值,因為接收外省的考核站點每年均有不同數(shù)量的調整,因此各省缺報閾值隨之調整)則發(fā)出聲音提示.
實現(xiàn)各省共享資料的接收和發(fā)送日統(tǒng)計、月統(tǒng)計和年統(tǒng)計及報表功能,統(tǒng)計對象為各省自動站逐小時資料和雷達基數(shù)據(jù)及時率.
系統(tǒng)解碼入庫程序執(zhí)行異常中斷時,需要將中斷時段內的收發(fā)信息補入庫,補入庫流程與正常流程一致,只是從異常起始時間執(zhí)行至恢復時間.
系統(tǒng)采用三層架構[6]設計和實現(xiàn),分為表示層、業(yè)務邏輯層、資源訪問層,如圖3所示. 各層邏輯分離,降低了耦合度,增加了系統(tǒng)的可擴展性.
圖3 軟件架構
監(jiān)控信息展示和參數(shù)配置UI.
監(jiān)控信息顯示: 資料接收和發(fā)送信息實時顯示(各省每小時應收、實收、接收及時率)、傳輸統(tǒng)計(按資料類型、省份、統(tǒng)計時間)顯示、日數(shù)據(jù)統(tǒng)計分析、月數(shù)據(jù)統(tǒng)計分析、年數(shù)據(jù)統(tǒng)計分析,如圖4所示.
參數(shù)配置UI: 省際告警配置,即資料類型、啟用接收告警、啟用發(fā)送告警和告警頻次設置接口.
業(yè)務邏輯層的主要功能: 定時從省際共享收發(fā)Server數(shù)據(jù)庫xxshj_db查詢資料接收與發(fā)送信息,解碼各省自動站文件得到站級記錄集后批量寫入sjgx庫、解析雷達基數(shù)據(jù)文件名得到雷達站級信息并寫入sjgx庫; 基于sjgx庫定時生成省際共享氣象資料日志文件; 根據(jù)檢測策略定時采集省際傳輸異常信息并告警.
圖4 省際共享實時監(jiān)測
本文主要介紹外省資料解碼入庫過程. 應用多線程技術和.NET Framework FTP 類庫 API[7]. 針對 8 個外省,在SHARES服務器上按省名創(chuàng)建8個資料存儲目錄,每個省名目錄分別包含國家自動站目錄、區(qū)域自動站目錄和雷達基數(shù)據(jù)目錄. 除雷達基數(shù)據(jù)外,各類自動站報文均需解碼.
系統(tǒng)解碼入庫程序共創(chuàng)建8個工作線程并行執(zhí)行,并且使用C# ADO.NET數(shù)據(jù)庫連接池技術[8],各線程執(zhí)行時訪問不同的目錄、打開連接池中不同的連接資源,因此基本不存在線程同步問題.
解碼入庫進程通過.NET定時器每2分鐘執(zhí)行數(shù)據(jù)訪問步驟:
(1) 查詢省際共享服務器的MySQL文件級實時接收表(TR_FILE_RCV)和文件級實時發(fā)送表(TR_FILE_SEND),并返回記錄集.
(2) 主線程暫停 N 秒鐘 (N=1,2,…),等待記錄集各數(shù)據(jù)行(DataRow)的文件名字段對應的文件完整寫入SHARES.
(3) 逐行讀取記錄集,獲取資料類型 (DTYPE)、資料子類型(CTYPE)、省份代碼(CCCC)、文件名(FNAME)、接收時間(ARR_TIME)和入庫時間(LOG_TIME)等字段值. C#項目的App.config文件配置了SHARES等資料存儲服務器的FTP登錄賬戶、省際資料主目錄以及各省CCCC對應的資料相對路徑. 應用.NET FTP API訪問 SHARES 目錄下匹配的文件FNAME,從字節(jié)流中解碼得到站級信息,包括區(qū)站號、觀測時間等,將其存入表變量(DataTable對象),記錄遍歷結束后,將表變量作為參數(shù)傳入存儲過程批量插入sjgx庫的dbo.RcvRealInfo.
在第(3)步,各省自動站資料均是打包后的Z文件,其中包含多站記錄,因此解碼子程序采用正則表達式(Regex)來匹配測站基本信息行,國家級自動站報文、區(qū)域自動站報文的測站基本信息行格式不一樣,分別為:
i. 國家級自動站 Regex: [A-Z0-9]d{4}sd{14}sd{6}sd{7}sd{5}.*;
ii. 區(qū)域自動站 Regex: [A-Z0-9]d{4}sd{6}sd{7}sd{5}.*.
設置不同的高效正則表達式來匹配報頭,保證了解碼效率.
外省自動站資料解碼入庫流程圖如圖5所示.
圖5 外省自動站解碼與入庫流程
本省發(fā)送至外省的自動站資料解碼入庫流程基本與圖5相同,主要區(qū)別是資料所在服務器為省際共享收發(fā)Server,其FTP連接及存儲目錄結構同樣在App.config文件中配置.
外省雷達基數(shù)據(jù)接收無解碼步驟,如圖6所示.
圖6 外省雷達基數(shù)據(jù)入庫流程
本省雷達基數(shù)據(jù)發(fā)送入庫流程與圖6相同.
(1) 入庫子程序中表變量的定義.
(2) 數(shù)據(jù)庫端設計.
資料入庫子程序使用SQL Server 2008支持的表值參數(shù) (Table-valued parameters)特性,作為入庫存儲過程的參數(shù),接收傳入的表變量(DataTable)實現(xiàn)批量插入sjgx庫收發(fā)信息表,從而提高了入庫效率,存儲過程定義如下:
包括數(shù)據(jù)訪問子層(Data access)、配置文件訪問子層 (Config access)和服務訪問子層 (Service access).
基于ADO.NET數(shù)據(jù)庫訪問技術建立適應MySQL和SQL Server兩種數(shù)據(jù)庫的數(shù)據(jù)訪問子層接口. 向業(yè)務邏輯層提供MySQL數(shù)據(jù)庫的收發(fā)數(shù)據(jù)集(DataSet);將業(yè)務邏輯層獲取的站級收發(fā)信息通過調用存儲過程的方式持久化到SQL Server數(shù)據(jù)庫.
sjgx庫主要數(shù)據(jù)表有資料類型字典表(見表2)、資料-省名配置表、外省臺站基本信息表(見表3)、外省自動站接收節(jié)目表、自動站接收信息表(見表4)、自動站發(fā)送信息表(見表5)、雷達基數(shù)據(jù)接收信息表、雷達基數(shù)據(jù)發(fā)送信息表、日統(tǒng)計表(見表6)、月統(tǒng)計表等.
主要存儲過程: 解碼數(shù)據(jù)批量入庫存儲過程、統(tǒng)計分析存儲過程、日志文件生成存儲過程和Web顯示存儲過程.
為優(yōu)化sjgx庫表讀寫性能,提高數(shù)據(jù)查詢速度,利用分區(qū)表技術,對接收信息表和發(fā)送信息表按觀測時間做分區(qū),具體為每月一個分區(qū)[9,10]. 主要數(shù)據(jù)表均創(chuàng)建了主鍵,例如 RcvRealInfo 表選取 (MTime,Ctype,Dtype,Iiiii)作為復合主鍵,也提高了數(shù)據(jù)檢索效率.
表2 資料類型字典表(DataDescDic)
表3 外省臺站基本信息表(StationRcvDic)
表4 自動站站級接收表(RcvRealInfo)
表5 自動站站級發(fā)送表(SndRealInfo)
雷達基數(shù)據(jù)接收表和自動站站級接收表結構相同,而雷達基數(shù)據(jù)發(fā)送表和自動站站級發(fā)送表結構相同,不再贅述.
雷達基數(shù)據(jù)日統(tǒng)計表與之相同,不再贅述.
選取國家級自動站資料作為評估對象,具體為2013年11月份的省際共享監(jiān)控數(shù)據(jù)庫自動站站級接收表中8個鄰省的國家級自動站資料和CMACast下發(fā)的全國自動站打包文件所包含的8省的國家站級自動站資料,在站點和觀測時間相同條件下,資料接收的時效性、解碼入庫效率作評估.
表6 自動站日統(tǒng)計表
省際共享與CMACast下行兩種途徑的資料接收時效對比,接收時間對比結果: 省際共享接收資料的時效要比CMACast下行平均快11.5秒鐘,可見省際共享在資料及時性方面有優(yōu)勢.
解碼時間由每次從FTP服務器中采集的自動站文件數(shù)和文件大小決定,解碼過程最大耗時25.4 S,平均耗時 14.7 S; 入庫過程平均耗時 2.2 S. 基本能夠在 2 分鐘內(系統(tǒng)工作周期)完成外省資料解碼入庫和本省發(fā)外省資料解碼入庫過程.
本文針對氣象資料省際共享實時監(jiān)控需求設計和實現(xiàn)了安徽省省際共享監(jiān)控系統(tǒng). 具體功能如下.
(1) 定時采集MySQL實時收發(fā)表得到文件名,再運用.NET FTP API獲取相應文件的字節(jié)流并解碼自動站信息、批量寫入sjgx庫自動站收發(fā)信息表; 通過解析雷達基數(shù)據(jù)文件名得到站級信息并寫入雷達基數(shù)據(jù)收發(fā)信息表.
(2) 按照監(jiān)控告警策略,定時采集sjgx收發(fā)信息表中各省缺報信息并及時告警.
(3) 基于sjgx庫統(tǒng)計各省日傳輸、月傳輸和年傳輸及時率.
(4) 運用SQL Server存儲過程定時生成省際共享上傳日志.
(5) 補入庫功能,保障收發(fā)信息的完整性.
系統(tǒng)運行穩(wěn)定,基本在2分鐘內完成外省資料解碼入庫和本省發(fā)外省資料解碼入庫過程.
省際共享資料實時監(jiān)測和統(tǒng)計信息為資料用戶、業(yè)務管理部門提供了可靠的依據(jù),體現(xiàn)了氣象資料省際共享實時業(yè)務質量監(jiān)控的優(yōu)勢.
1王春芳,李湘,陳永濤,等. 中國氣象局衛(wèi)星廣播系統(tǒng)(CMACast)設計. 應用氣象學報,2012,23(1): 113–120.
2李顯風,鄒海燕. 基于省際共享的外省自動站報文入庫系統(tǒng)研究. 第 31 屆中國氣象學會年會. 北京,中國. 2015.
3中國氣象局. 預報司關于下發(fā)2014年全國氣象資料傳輸質量檢查工作要求的通知. 氣預函[2014]13號,2014.
4楊潤芝,馬強,李德泉,等. 內存轉發(fā)模型在 CIMISS 數(shù)據(jù)收發(fā)系統(tǒng)中的應用. 應用氣象學報,2012,23(3): 377–384.
5熊安元,趙芳,王穎,等. 全國綜合氣象信息共享系統(tǒng)的設計與實現(xiàn). 應用氣象學報,2015,26(4): 500–512. [doi:10.11898/1001-7313.20150412]
6華連生,王建榮,金素文,等. 基于 IMS 的氣象信息傳輸智能語音通知系統(tǒng)設計與實現(xiàn). 氣象科技,2015,43(6):1040–1045.
7Liberty J,Xie D. Programming C# 3.0 中文版. 李愈勝,劉衛(wèi)衛(wèi),汪泳,譯. 第 5 版. 北京: 電子工業(yè)出版社,2009.
8帕特里克. ADO.NET 4 從入門到精通. 賈洪峰,譯. 北京:清華大學出版社,2012: 113–116.
9Walters RE,Coles M,Ferracchiati F,等. 深入 SQL Server 2008. 任斌,劉芳芳,譯. 北京: 人民郵電出版社,2011.
10吳東麗,梁海河,曹婷婷,等. 中國自動土壤水分觀測網(wǎng)運行監(jiān)控系統(tǒng)建設. 氣象科技,2014,42(2): 278–282.
Monitoring System for Meteorological Data Interprovincial Sharing Service
WANG Jian-Rong,TANG Huai-Ou,KONG Qin-Qin,JIN Su-Wen
(Anhui Meteorological Information Centre,Hefei 230031,China)
Meteorological data interprovincial sharing service provides the weather prediction and meteorological service of timely data for neighboring provinces. The National Meteorological Information Center now gets statistics and publishes the transmission quality of interprovincial sharing service by month. It is not easy to find out the abnormality during data transmission timely. We design and implement a real-time monitoring system for interprovincial data sharing service using the monitoring method for data upload transmission. Firstly,the system above decodes AWS-data and then shows the receiving and sending status of the hourly national and regional automatic station data and radar data. This system provides data application department and management department of the daily,monthly and annual statistics results based on SQL Server database and it also generates interprovincial sharing log files. The application result shows that the real-time monitoring system of meteorological data interprovincial sharing service is stable and reliable.
interprovincial sharing; three-tier architecture; CTS; multi-threaded parallel; partition table
王建榮,唐懷甌,孔芹芹,金素文.氣象資料省際共享監(jiān)控系統(tǒng).計算機系統(tǒng)應用,2017,26(12):71–77. http://www.c-s-a.org.cn/1003-3254/6085.html
中國氣象局關鍵技術集成項目(CMAGJ2015M29); 安徽省氣象局科技發(fā)展基金項目(KM201306)
2017-03-09; 修改時間: 2017-03-27; 采用時間: 2017-03-29