熊金蓮 劉 豐 郭藝峰 陳艷云 王曉瑞 吳文婷 芮 龍
1(國家海洋信息中心 天津 300171) 2(杭州藍昌科技有限公司 浙江 杭州 310007) 3(中國地質大學(武漢)計算機學院 湖北 武漢 430074)
原有的海洋觀測數據傳輸由東海、南海和北海三個海區各個海洋站向所屬的各中心站傳輸,各中心站向各自所屬的海區預報中心傳輸。三個海區預報中心分別向國家海洋預報中心和各海區所屬的海區信息中心傳輸,三個海區信息中心同時再向國家海洋信息中心傳輸。近年來,按照自然資源部海洋信息化整合的要求,海洋觀測數據傳輸業務流程相應作出調整。現要求海洋觀測數據傳輸由東海、南海和北海三個海區各個海洋站向所屬的各中心站傳輸,各中心站向各自所屬的海區信息中心傳輸。三個海區信息中心分別向各自所屬的海區預報中心和國家海洋信息中心傳輸,國家海洋信息中心再向國家海洋預報中心傳輸。
海洋觀測數據傳輸業務流程變更后,原有的傳輸軟件已不能完全滿足數據傳輸時效性和吞吐量明顯提高的要求。
為更好地了解不斷變化的海洋狀態,需要對觀測數據進行實時處理以及高速實時的傳輸[1],特別是部分監測裝備獲得的重要數據信息需要實時傳回處理等實時性要求高的應用場景[2-3]。目前全國海洋觀測數據龐大,考慮信息的及時性和穩定性,能夠快速地提交、存儲、處理、發送數據,減少信息滯留,提高數據傳輸的實時性尤為重要[4-5]。為滿足海洋觀測數據傳輸的實時性要求,在數據傳輸時效性方面,如進行分鐘數據的傳輸,新的傳輸流程要求定時完成全部節點的傳輸,對各中間節點的數據實時接收、實時存儲、實時轉發性能提出了更高的要求。原有的輪詢模式與FTP傳輸協議會在本級節點產生較大延遲,導致整個傳輸流程形成無法接受的延遲。
在數據傳輸吞吐量方面,新的傳輸流程不再分布處理數據文件,要求核心節點統一處理全部數據文件。隨著海洋站數量以及觀測要素的增加,為應對未來的業務發展,海洋觀測數據傳輸軟件需要更高的數據吞吐量和性能余量。
同時,由于原來使用的海洋觀測數據傳輸軟件技術體制不完全一樣,不同節點間只能通過數據文件進行交互。若采用文件方式進行數據傳輸交換[6],則無法進行統一的指令發布和軟件管理。另外,不同技術手段對軟硬件環境的需求不完全一致,如Remoting方式只能應用在Windows XP以下版本,部分軟件采用與數據庫直連的機制,不方便大量部署,給海洋信息化整合帶來不利影響。
為了滿足海洋信息化整合要求,進一步統一全國海洋數據傳輸管理,促進我國海洋事業的發展,研制了海洋觀測數據傳輸系統。該系統提高了全國海洋數據傳輸的運行管理效率,對于提高海洋觀測預報和海洋災害預警能力具有重要意義。
海洋觀測數據傳輸系統的設計目標是實現全國海洋觀測數據的分級實時發現與傳輸,提供毫秒級的本地數據文件的發現能力,并傳輸所有以文件形式存儲的數據。同時,該系統應具備可靠性和可擴展性,在國家級、海區級、中心站級和海洋站級節點上,海洋觀測數據傳輸系統應滿足24小時運行要求,并支持新增節點的快速聯網部署。
(1) 系統功能。海洋觀測數據傳輸系統應該具備的系統功能如下:① 具備數據文件的主動發現能力,包括本級節點產生的數據文件和其他節點傳輸過來的數據文件;② 檢驗數據文件的寫入完成狀態,進行提取并按通信接口實現定向傳輸;③ 校驗傳輸的準確性,判斷是否傳輸成功;④ 具備待傳數據的緩存能力,以應對網絡故障;⑤ 按照業務需求,實現數據文件的規范化存儲;⑥ 具備日志記錄功能,記錄系統運行狀態、數據傳輸狀態以及網絡故障等信息。
(2) 性能指標。海洋觀測數據傳輸系統應該具備的性能指標如下:① 滿足24小時不間斷運行的需求;② 數據傳輸到報率高于98%;③ 文件發現時間低于100毫秒;④ 系統年均故障次數低于4次;⑤ 具備數據傳輸的并發能力,同時發送或接收的節點數均不低于5個;⑥ 能夠全網部署,分級接力運行。
海洋觀測數據傳輸系統結構主要包含主界面功能模塊、任務管理模塊、接收模塊和文件發現模塊四大功能模塊,其系統結構設計圖如圖1所示。

圖1 海洋觀測數據傳輸系統結構總設計圖
(1) 主界面模塊。主界面模塊包括任務管理界面、文件接收與發送狀態界面和其他功能設置界面。用戶可以通過主界面進行系統運行參數的設置、傳輸任務管理設置等,并且可以查看傳輸狀態、鏈路狀態和文件接收狀態等信息。
任務管理界面主要包含數據接收設置、傳輸任務管理、傳輸站點管理、管理員登錄以及退出系統等功能菜單。數據接收設置包括端口設置,開機自啟動設置以及文件存儲目錄設置等。開機自啟動選項主要是為了應對全國各海洋站、中心站、海區信息中心、海區預報中心等可能出現的機器斷電重啟后傳輸軟件無法自啟動,導致的數據傳輸中斷、數據大量積壓等故障。傳輸站點管理主要是用于對遠程服務器的管理及傳輸配置,該功能主要開放給具有管理權限的管理員登錄使用。傳輸任務管理模塊的功能后文會詳細介紹。
文件接收模塊主要包含文件接收狀態和接收鏈路狀態兩部分。其中文件接收狀態部分顯示當前接收文件列表,包括接收時間、類型、站點名稱、來源地址、文件類型、文件名、存儲目錄及狀態等信息。對于文件接收異常的情形,則會單獨顯示在文件接收異常狀態欄。接收鏈路狀態部分則顯示類型、站點名稱、地址、端口、連接數、接收文件數及最后活動時間等信息。
發送任務模塊主要包含文件發送狀態和傳輸鏈路狀態兩部分。其中文件發送狀態顯示當前已發送文件列表,包括時間、名稱、傳輸類型、目標地址、文件名、狀態等信息。傳輸鏈路狀態則顯示當前傳輸文件的鏈路,包括名稱、傳輸類型、目標地址、端口、鏈路、連接數、待傳文件、已傳文件、狀態等信息。
(2) 傳輸任務管理模塊。傳輸任務管理主要包括任務模塊界面和任務通道線程兩部分。在傳輸任務模塊界面中,用戶可以建立多個傳輸任務,各個任務可獨立運行。根據用戶配置,任務通道線程自動生成多個獨立運行的線程,在此線程下生成文件傳輸模塊。為了利于以后海洋觀測數據傳輸方式的擴展,數據文件傳輸模塊的代碼是獨立的。根據緩存文件的數量,數據文件傳輸模塊自動生成多個傳輸線程同時傳輸,用戶可以通過配置文件設置該模塊同時傳輸的線程上限。由于該模塊可根據緩存文件數量自動生成多個線程同時傳輸,達到以最快速度上傳文件的目的,防止了大量文件的積壓。當無文件上傳時,數據文件傳輸模塊會自動釋放線程,節省了系統資源。
傳輸任務模塊界面包含任務列表和任務設置兩部分。任務列表包括任務序號和任務名稱信息,點擊增加按鈕,可以增加新的傳輸任務,選中想要刪除的任務,點擊刪除按鈕即可刪除該任務。具體的任務設置包括數據源目錄設置、傳輸規則設置、傳輸目的地設置和傳輸鏈路設置四個步驟。
數據源目錄設置模塊可以選擇需要傳輸的文件目錄,同時可以設置數據類型,選擇數據是否按規則整理目錄等。點擊保存按鈕,保存所設置的信息,點擊新增按鈕,新增一條數據源目錄。這里可設置一個或多個傳輸源目錄,同時也可選擇當前傳輸目錄進行修改后保存或直接刪除。
傳輸規則設置模塊主要包括上傳目錄選擇和文件黑白名單過濾兩部分,分別用于過濾部分文件夾或者文件。
傳輸目的地設置模塊可以設置名稱、傳輸類型、是否保持目錄結構、目標地址、端口號以及傳輸目的地目錄等信息,該模塊可以新增或刪除一條或多條目的地目錄記錄信息。
傳輸鏈路設置模塊應用在多路數據傳輸的情況下,兼容有線、無線等多條線路進行數據傳輸。可以設置線路的優先級別、名稱、IP地址以及網關等信息,也可以新增或刪除傳輸鏈路。該傳輸軟件根據鏈路的優先級別自動選擇傳輸鏈路,當高優先級的鏈路斷開后則自動切換至次一級的鏈路繼續傳輸,當斷開的高優先級傳輸鏈路恢復正常時,軟件自動切換至此鏈路。
(3) 接收模塊。接收模塊接收的類型包括文件、消息、狀態和參數等。該模塊采用獨立線程的接收模式,當終端連接建立時,系統自動加載線程模塊,等待數據接收。再根據協議判斷數據類型并分別進入處理過程,當接收成功時,向終端返回成功消息。
(4) 文件發現模塊。文件發現模塊為獨立的線程模塊,該模塊獲取新文件的方式有自動間隔時間查詢和系統消息獲取兩種。當獲取到新文件時,將新文件分配到傳輸緩存,判斷是否保持源目錄結構。若保持源目錄結構則須獲取相對應的目錄結構,然后在服務器端生成,接著判斷是否符合傳輸匹配規則,最后移動文件至發送緩存。
海洋觀測數據傳輸系統主要包括傳輸業務管理、文件發現、規范化存儲、文件發送與接收和狀態采集等功能。其中,傳輸業務管理主要功能是在管理其他各模塊運行的同時,讀取本地節點的傳輸任務信息以完成對應的傳輸業務。文件發現主要功能是實時監控本地存儲,獲取本地數據文件的更新消息,檢測文件傳輸情況以及提取相關信息。規范化存儲的主要功能是識別接收的數據文件,按照相關技術規程或者配置信息進行規范化的本地存儲。文件發送與接收的功能主要是完成各節點間可靠的點對點的數據文件的傳輸[7-8]以及節點間控制消息的傳遞。狀態采集的功能主要是收集文件傳輸過程的狀態信息,增加時間戳,形成傳輸狀態記錄信息,上傳到對應的管理節點。海洋觀測數據傳輸系統內部功能邏輯設計如圖2所示。

圖2 海洋觀測數據傳輸功能邏輯設計圖
(1) 傳輸業務管理功能技術路線。傳輸業務管理功能是海洋觀測數據傳輸系統的核心框架部分。它采用消息機制進行傳輸業務流程管理,管理著該傳輸系統其他各個模塊的運行,并根據各個模塊相對應的運行事件消息進行相應的啟動與終止操作,并為其傳遞消息。為了描述全部數據傳輸的業務,如本節點需將何種類型數據文件傳輸給哪個節點,這就需要采用自定義的數據結構來定義任務模型。配置文件管理部分則主要管理本地的配置文件,在該傳輸系統啟動時讀取本地配置文件信息并形成相應的任務模型,當接收到新的調度指令時則按照新的任務模型更新本地配置文件信息。
(2) 文件發現功能技術路線。文件發現部分主要通過監聽操作系統文件的變動消息,進而實現對本地磁盤文件進行實時監控。在高頻次海洋觀測數據文件生成的情況下,為了保證不丟失監控信息,該傳輸系統采用完成端口機制[9-12],綁定操作系統的消息至完成端口;為了避免讀取到“臟數據”,文件發現部分在監聽到傳輸文件的變動消息后,會進一步監控該文件的寫入完成狀態,以保證不讀取“臟數據”。然后文件信息提取功能部分會對相應消息進行解碼,提取變動文件的文件名、所在路徑、變動類型以及變動時間等信息。消息過濾功能則通過匹配提取到的文件信息和本地任務模型,進而過濾出需要處理的文件,最后以消息形式通知傳輸業務管理模塊進行處理。
(3) 規范化存儲功能技術路線。本節點在接收到來自其他節點傳輸的數據文件后,規范化存儲功能部分則根據任務模型識別該文件,并形成相應的本地存儲路徑。以海洋觀測數據為例,按照《海洋觀測資料傳輸技術規程》的要求,海洋站分鐘數據規范化存儲形式為…/ZZZ/SSS/realtime/YYYY/MM/DD/HH/,海洋站整點數據規范化存儲形式為…/ZZZ/SSS/perclock/YYYY/MM/DD/,海洋站正點數據規范化存儲形式為…/ZZZ/SSS/punctual/YYYY/MM/DD/。其中ZZZ代表三位中心站代碼,SSS代表三位海洋站代碼,中心站和海洋站代碼根據HY/T023設置。YYYY則表示數據生成的年份,MM表示數據生成的月份,DD表示數據生成的日期,HH表示數據生成在哪一小時。當時間代碼不足兩位數時,則一律在前一位用0補齊。
由于本海洋觀測數據傳輸系統采用多線程處理技術,同一時刻不同來源的數據文件在寫入時可能出現文件夾生成沖突,因此需要存儲管理將并行來源的數據文件寫入操作串行化后執行。
(4) 文件發送與接收功能技術路線。文件發送與接收功能部分采用多線程的socket通信[13-16]模式,通過鏈路管理部分管理多個數據發送與接收線程。一旦系統啟動,端口監聽線程即刻開啟,等待其他節點的接入。由于本系統采用完成端口機制管理線程,當有節點接入時,鏈路管理將空閑的數據接收線程與之綁定,并啟動數據接收;當有數據發送時,鏈路管理啟動空閑的數據發送線程,連接遠程的數據接收節點。從而達到最大化利用硬件資源的目的,并且避免了軟件空轉引起的“假死”現象。通過自定義數據傳輸協議[17],依據鏈路條件將數據文件或調度指令封裝成特定格式的數據包并進行分包、分組,發送方按照接收方IP和對應端口,依序集中發送數據包和反饋重傳包,接收方解析并反饋重傳統計結果,直到接收完成,從而提高傳輸的準確性和傳輸效率。當系統啟動后,即刻創建數據發送和數據接收隊列,支持按照數據或指令的優先級進行隊列管理,從而實現有序的文件傳輸。文件發送與接收設計如圖3所示。

圖3 文件發送與接收設計圖
(5) 狀態采集功能技術路線。狀態采集功能部分采集傳輸過程中由其他模塊在運行中同步獲取的文件屬性、關聯的傳輸任務及傳輸操作結果等狀態信息。通過調用操作系統時間,時間戳處理為數據文件生成、接收及發送的時間生成時間戳,再由狀態記錄生成部分按消息-時間格式形成狀態記錄。
海洋觀測數據傳輸系統已經開發完成,并且在國家海洋信息中心、東海海區信息中心、東海7個中心站以及東海71個海洋站部署并正常業務化運行。下一步將繼續推廣部署到南海海區信息中心、北海海區信息中心、南海各個中心站、北海各個中心站、南海各個海洋站以及北海各個海洋站。海洋觀測數據傳輸業務流程如圖4所示,以東海信息中心為例,東海各海洋站將數據傳輸至其對應的中心站,各中心站將數據傳輸至東海信息中心,東海信息中心再將數據同時傳至國家海洋信息中心和東海預報中心。

圖4 海洋觀測數據傳輸業務流程
海洋觀測數據傳輸系統在各信息中心、中心站及海洋站部署時,需先設置端口、文件存儲目錄以及是否開機自啟動等數據接收設置信息。各信息中心、中心站及海洋站向外發送數據時,須設置發送任務的數據目錄、傳輸規則、傳輸目的地以及傳輸鏈路等信息。以東海信息中心為例,其接收端口應與下級節點東海各中心站的發送端口一致,其發送端口應與上級節點國家海洋信息中心、東海預報中心的接收端口一致。配置完成后,海洋觀測數據傳輸系統運行界面如圖5所示。
此外,海洋觀測數據傳輸系統用戶還可以通過該系統的傳輸站點管理模塊對下一級節點進行遠程配置管理。例如在東海信息中心這一節點上,可以通過該系統對東海各中心站進行配置操作。如增加站點、刪除站點,或選中某站點記錄,點擊右鍵選擇遠程傳輸任務管理,進入與該IP地址對應的遠程服務器的傳輸任務管理界面,進行遠程配置操作。設置完成后,遠端的傳輸會立即生效,終端系統將根據用戶所設置的參數運行。
本文依據海洋觀測數據傳輸業務流程變更特點以及新的業務需求,設計開發了一套海洋觀測數據傳輸系統。經過反復測試,該海洋觀測數據傳輸系統滿足相應的系統功能和性能指標。目前,該系統已經部署到東海海區各中心站、各海洋站,進入穩定可靠的業務化運行階段。后期會將該系統繼續部署到南海海區以及北海海區各中心站以及各海洋站,實現全國海洋觀測數據傳輸技術的統一和規范化,提升我國海洋觀測數據傳輸的運行管理效率。