■ 徐擁軍 何文春 倪學磊 王琦 郭曉軍
從氣象數據服務的層面,分析了全國綜合氣象信息共享系統(CIMISS)應急切換需求和場景,根據數據環境故障的范圍,設計了系統設備級故障切換和功能級故障切換的應急流程,實現了應急切換的功能模塊并集成到氣象數據統一服務接口(MUSIC)軟件中。
為滿足對海量氣象數據管理和服務的需求,國家氣象信息中心設計開發了全國綜合氣象信息共享系統(China Integrated Meteorological Information Sharing System,CIMISS)。目前該系統運行于國家氣象信息中心和31個省級氣象數據中心,集氣象數據收集、加工處理、存儲管理和共享服務于一體,管理國家級或省級數據中心全部可收集的國內外氣象資料和業務產品,為氣象部門及相關行業用戶快捷便利地獲取氣象數據提供數據使用環境。
由于服務器硬件設備老舊以及CIMISS系統模塊繁多,每個環節都會出現一定的故障隱患。當故障出現后,如何保障本地核心業務系統的穩定運行,是CIMISS數據環境能否直接支撐業務系統的關鍵。備份系統的建設是進行故障恢復和服務切換的最佳方式,國家級以前的MDSS(氣象資料存儲檢索系統)和現有的CIMISS數據環境都建設了備份系統。省級數據環境沒有建設備份系統,且需要支撐省、市、地縣三級業務,應用量多,數據訪問頻繁,存在極大的系統故障隱患,業務影響范圍大。省級CIMISS數據環境面臨故障時,如何依據現有軟硬件條件,建立應急手段和實施措施,保障省級核心業務系統的數據服務成為了急需解決的問題。
本文提出了基于氣象數據統一服務接口的數據服務應急切換方案,對應急切換的需求和場景進行了分析,并在此基礎上設計了快速切換流程,編寫了切換功能模塊,集成到了MUSIC服務接口軟件中,為CIMISS數據環境故障時提供了一種有效的應急保障方式。
CIMISS平臺依托全國氣象寬帶網絡系統,連接國家級中心和全國31個省級中心,以實現國家級和各省級之間的互聯互通,保障氣象信息傳輸、共享的時效性和可靠性,氣象通信網絡布局見圖1。CIMISS平臺各級中心包括核心業務區、寬帶網雙向DMZ區(demilitarized zone,隔離區)、互聯網單向DMZ區、行業單向DMZ區4 個網絡區域,其中,核心業務區由業務網(LAN)、管理私網、IB網和存域網(SAN)組成。國家級接入速率450 Mbps,區域中心級20 Mbps,省級16 Mbps。CIMISS采用網狀結構,國家級中心與31個省級中心之間采用MPLS VPN(MPLS為多協議標記轉換)方式相連,各省級網絡系統在各自現有網絡系統架構基礎上進行合理部署以滿足信息共享平臺建設的需要。

圖1 氣象通信網絡布局圖
氣象數據統一服務接口(簡稱MUSIC)屬于數據共享服務系統,是基于CIMISS數據環境,面向氣象業務和科研,提供全國統一、標準、豐富的數據訪問服務和應用編程接口(API),為國、省、地、縣各級應用系統提供唯一權威的數據接入服務,包括:站點資料的檢索、統計,格點資料的解析、裁剪和抽取,文件產品的查詢、下載,臺站信息的檢索等。通過服務接口,將前端應用與后端復雜、異構的數據管理技術分離,解決應用系統需要根據后端數據組織方式甚至格式的變化而頻繁升級改造的問題。詳細功能結構見圖2。

圖2 MUSIC功能結構圖
MUSIC由服務端和客戶端開發包組成,服務端提供多樣服務方式,支持REST(Representational State Transfer)、WebServices(是指用于架構Web service的整體技術框架,而Web Service則是使用Web Services技術而創建的應用實例)、RPC(Remote Procedure Call Protocol,遠程過程調用協議)等多種服務協議,包含數據緩存、RPC服務容器、Tomcat(Tomcat是Apache軟件基金會的Jakarta項目中的一個核心項目)服務以及JVM(Java Virtual Machine,Java虛擬機)等組件組成,主要用JAVA語言開發,實現數據檢索、統計計算、格點解析等服務,利用Tomcat容器實現REST、WebServices服務,利用高效ZeroC開源服務框架,實現多語言版本開發包RPC數據傳輸交換協議。客戶端支持Linux、Windows等多種操作系統平臺,支持JAVA、C#、C/C++、PHP、Python、Fortran等多種開發語言,技術架構見圖3。

圖3 MUSIC技術架構
CIMISS通過MUSIC提供用戶訪問數據,每個節點(指國家級或某省,全網共32個節點)有4臺MUSIC服務器,通過負載均衡設備發布一個服務地址(SLB)。負載均衡采用路由模式進行部署,所有流量都經過負載均衡,可均衡任何下行流量,并盡量小的影響原有網絡結構。
CIMISS系統龐大,環節流程多,雖然在各個系統設計時都進行了高可用設計,但是業務運行中,難免會出現各種異常,導致業務系統中斷。為了減少用戶對數據使用的影響,在數據服務時,需要考慮進行服務應急切換。MUSIC建立了“國省接口元數據審核同步”流程,保障每類資料、每個接口,面向全國的用戶都是唯一的、統一的。因此,當一個節點的CIMISS出現故障時,基于MUSIC相應的配置策略,可將本地數據請求切換到備份的省份進行數據服務,保障數據服務不中斷。
應急切換方案是面向應用的,即當本地CIMISS出現故障時,保障本地的核心應用不受影響,不承擔本地數據的恢復等功能。
本地的服務請求切換到備份節點(一般為區域中心或國家級中心)后,節點之間網絡負載變大,備份節點的服務壓力也會增大。因此,切換方案只適用于CIMISS短期故障的應急切換,不能作為長期的業務一直處于應急服務的狀態。
省級CIMISS一般選擇區域中心或國家級CIMISS作為備份節點。備份的前提條件如下:
1)應急備份節點擁有本地節點應用所需的數據。梳理本地為支撐應用要備份的數據清單,將本省的常規資料、本地特色數據,通過省際共享等系統,同步到備份節點的CIMISS進行管理。
2)應急備份節點的接口元數據與本地相同。使用MUSIC“國省接口元數據審核同步”流程,保證備份節點與本地節點的接口一致。
3)保障本地MUSIC系統涉及的節點之間的網絡互通。
4)應急備份節點能在異地節點應急請求時開通用戶訪問許可。
5)應急備份節點在服務能力、網絡上,保障異地應急請求時的訪問需求。
基于MUSIC的應急服務切換根據系統故障范圍,可進行兩種方式的切換:設備級切換和功能級切換,切換方式見圖4,箭頭方向表示數據流向。

圖4 應急服務切換方式
設備級切換是當本地數據環境出現模塊或硬件故障,導致CIMISS數據環境服務中斷,此時,需要將本地所有的應用完全切換到應急備份節點,本地CIMISS系統不再進行數據服務。比如當本地節點基礎庫、支撐庫出現宕機或MUSIC服務器宕機時,可臨時采用整體切換,保障關鍵氣象應用的運行。該方式將給應急備份節點造成數據資源與系統資源的雙重壓力,不宜長時間進行。
功能級切換是根據資料使用需求,當本地某類資料出現異常或者本地未存儲該類資料,但業務急需,可通過選擇對應的資料切換到備份節點或存儲該類數據的節點進行數據服務。使用功能級切換時本地MUSIC服務必須正常運行,從備份節點獲取數據以后,數據的封裝服務都在本地進行。
當操作員進行應急切換時,系統根據配置信息將數據服務切換到提供應急備份的服務節點。應用或用戶的數據請求通過MUSIC負載均衡路由到提供應急服務的節點,數據通過負載均衡返回給請求的應用或用戶。設備級切換通過MUSIC負載均衡的配置信息實現服務路由切換,功能級切換通過改變MUSIC服務數據源配置進行請求切換。應急備份服務節點通過MUSIC負載均衡接收請求,MUSIC服務讀取配置信息并判斷請求賬戶的類別,如果為應急賬戶,給予開通應急訪問權限,進入數據服務功能模塊,將封裝的數據返回。為了便于識別應急節點訪問的用戶,MUSIC對API賬戶的命名設計了強制性約定,須以省級編報中心的代碼開頭(CCCC碼,見標準QX/T 129-2011)。應急切換流程見圖5。

圖5 應急切換流程示意圖
3.1.1設備級切換
設備級切換流程比較簡單,預先在本地MUSIC負載均衡服務上配置應急備份節點的MUSIC服務地址。當開展切換服務時,登陸本地MUSIC負載均衡管理界面,關閉本地4個MUSIC系統節點的服務,并啟用應急備份節點的MUSIC服務,本地的所有數據服務由異地服務節點提供。切換過程中,應急備份節點的MUSIC服務后臺需要開通對應急請求節點所有API賬戶的訪問權限。為了提高切換時效,切換配置準備在前期進行。切換后數據流程見圖6(注:虛框表示應急備份端MUSIC部署結構)。

圖6 設備級切換流程
3.1.2功能級切換
功能級切換是將特定的資料切換到應急備份節點提供服務。資料切換方式有多種備選方案,比如直接切換到異地數據庫和切換到異地MUSIC服務。雖然CIMISS統一了數據存儲規范,但并不約束數據庫存儲技術,每個數據節點可采用不同的數據庫,從而采用異地數據庫切換導致切換流程復雜,需要了解每個節點的存儲技術;同時異地數據庫切換不便于進行數據訪問權限控制和用戶行為限制,造成提供備份節點的數據庫安全風險。加之,數值模式格點解析服務需要讀取本地存儲文件,異地數據庫切換不能拷貝文件到本地。綜上分析,本文采用基于異地MUSIC服務開展按資料切換方案,應急切換數據服務流程如圖7。

圖7 應急切換數據服務流程
當本地MUSIC接收用戶請求后,進行相關驗證,判斷資料服務提供方,如果為本地資料,則進入本地服務流程中。如果為異地服務,則根據接收到的請求參數,轉換為異地服務請求(REST),請求異地MUSIC數據服務。應急節點MUSIC服務接收請求后,根據配置,判斷是否具有資料檢索應急訪問權限,如果有,則進行資料獲取,并將結果利用protostuff(一個開源的、基于Java語言的序列化庫)工具進行高效序列化,然后通過gzip工具(gzip是GNUzip的縮寫,它是一個GNU自由軟件的文件壓縮程序)快速壓縮,利用http協議將結果返回給請求端MUSIC節點。本地接收數據后,進行gzip解壓,然后反序列化為MUSIC數據結構,并進行數據格式化,然后返回給用戶。
由于應急省份網絡帶寬等限制,需要對結果數據進行必要的處理后進行傳輸。數據處理包含數據的序列化與數據壓縮,由于Protostuff工具具有較好的序列化與反序列化效率,并且向下版本兼容,項目中采用其作為數據交換格式處理工具。通過對相同的對象多種序列化與反序列化工具的總耗時、序列化結果大小進行測試,測試結果表明Protostuff具有較高的時效。
當應急服務為服務產品(文件格式)檢索時,用戶通過上述流程獲取到遠程文件存儲地址,然后根據文件存儲的URL地址請求下載。為了區分本地文件服務與應急文件服務,利用不同的端口號進行服務區分,比如本地采用80端口,應急服務文件下載采用8010端口。本地MUSIC負載均衡服務端接收到下載請求后,進行端口判斷,如果為應急切換后的文件下載服務,則進行路由轉換,通過MUSIC負載均衡向遠程應急備份節點發起下載服務,數據通過本地MUSIC負載均衡返回給用戶。文件下載應急服務流程如圖8。

圖8 文件下載應急切換服務流程
當本地節點資料恢復正常,能提供數據服務后,應及時切回到本地服務,以免給應急備份節點造成服務壓力。
元數據是關于數據的結構化的數據,不僅對信息對象進行描述,還能夠描述資源的使用環境、管理、加工、保存和使用等方面的情況。應急切換元數據主要是對切換過程中需要用到的數據進行描述和結構設計,主要包含API賬號元數據設計、切換配置元數據設計和切換資料元數據設計三部分。
3.2.1API賬戶兀數據設計
MUSIC是CIMISS數據服務接入唯一方式,必須通過申請API賬戶,并通過審核后才能使用。API賬戶設計時根據相關規范采用省級標準CCCC碼作為前綴,用于判斷API賬戶所屬于的數據中心,便于進行用戶行為記錄分析。API賬戶元數據設計表見表1。
3.2.2MUSIC應急切換配置兀數據設計
應急切換配置元數據表包含應急切換請求表和應急切換響應配置表。應急切換請求表用來可進行應急切換遠程備份節點的信息,包含數據服務切換到備份中心的節點ID,節點名稱,服務提供地址等,詳細設計見表2。應急切換響應配置表記錄了本中心提供給請求切換數據中心的信息,包含是否提供應急數據服務的“綠色通道”,文件下載服務的地址信息等,結構設計見表3。

表1 賬戶信息表結構

表2 應急切換請求配置

表3 應急切換響應配置
3.2.3切換資料兀數據設計
記錄氣象資料服務的應急備份數據中心位置,MUSIC服務將數據服務導向該資料設定的數據中心,可實現不同的資料切換到不同的數據中心提高應急服務,結構設計見表4。

表4 應急切換資料配置
根據應急切換方案和切換流程,在MUSIC中添加應急切換服務模塊,該模塊包含以下幾個方面的組件:應急切換人工操作模塊,應急請求切換模塊,應急賬戶識別模塊,應急請求數據封裝模塊,應急請求數據解析模塊,具體框架圖見圖9。

圖9 應急切換模塊框架圖
應急切換操作。提供應急切換各種信息的配置操作,包含添加、編輯、刪除應急服務節點信息;配置選擇需要開展應急切換服務的資料清單,執行應急切換操作;開通應急切換用戶申請等功能。
應急數據請求功能。主要用于讀取應急切換配置信息,識別應用應急請求,并將應用對本地的數據服務轉換為異地應急請求服務功能。
應急賬戶識別功能。當接收到賬戶請求后,讀取配置信息,識別用戶的權限,當用戶為開通訪問權限應急用戶時,給予數據服務權限。
數據封裝功能。應急賬戶訪問獲取結果后,需要進行數據對象的封裝,包含序列化、壓縮、生成校驗碼等步驟,以便數據能快速、安全、無損的傳輸到請求端。采用高效的Protostuff工具進行數據對象序列化,壓縮比高的gzip工具進行數據壓縮,從而節約網絡帶寬和提供傳輸效率。
數據解析功能。當應急請求接收到數據結果后,需要對封裝的數據進行解析,包含數據校驗碼識別、解壓、反序列化為請求對象。解析后的數據返回給請求應用端,實現整個數據的服務。
應急切換配置服務界面主要分為兩部分:負載均衡服務器配置,MUSIC服務切換配置。負載均衡服務器提供的配置界面,主要用于進行設備級應急切換操作。
基于MUSIC服務的切換界面包含三部分內容:備份切換準備界面,切換到備份省級節點和訪問許可設置。
1)備份切換準備界面,主要為應急備份節點選取和提供應急訪問等信息設置,為應急時快速切換做前期準備。選擇備份節點,可添加、刪除我的備份節點信息。提供應急訪問節點,可添加刪除本地為異地節點提供訪問的配置信息。
2)切換到備份省級節點界面,主要用于將本地服務的資料切換到備份節點上去,使用異地節點提供數據服務。提供資料的切換異地和從異地切回功能,支持多個資料一起切換。
3)訪問許可設置界面,用于開通異地節點應急請求服務,只有開通免認證后,應急請求才能正常訪問數據服務。
應急切換模塊集成在氣象數據統一服務接口中,在國家級和31個省級節點進行部署。在網絡連通的情況下,切換在MUSIC的服務端進行,實現一鍵式切換,對于用戶完全透明。選取MUSIC數據服務的三種主要場景,以山西為例,對比本地數據服務與應急切換到國家級后數據服務效果,測試結果數據見表5。測試應用服務器到本地與應急節點MUSIC服務的網絡延時,其中TIME值越大表示網絡延時高,數據傳輸路徑長耗時多,對比見表6。

表5 應急切換前后數據檢索性能對比

表6 網絡延時對比
測試結果表明,應急切換可實現CIMISS存儲數據的異地應急服務,由于國家級與省級節點網絡帶寬限制,數據延時是本地的200多倍,導致切換后的檢索性能具有比較大的差距,由于MUSIC在數據傳輸過程中采用了高效數據壓縮技術,有效提高了檢索數據量的傳輸效率,服務性能基本在可控范圍內。
為了保障CIMISS省級數據環境支撐應用服務的穩定性和可靠性,本文提出了省級節點故障時服務應急切換的方案,根據節點內系統故障的范圍,設計了設備級故障切換和功能級故障切換兩種流程,并在此基礎上,升級了氣象數據統一服務接口軟件,集成了應急切換服務模塊,具體結論如下:
1)介紹了MUSIC的整體結構,闡述了利用MUSIC實現應急切換的充要條件,并對應急切換使用的場景和前提條件進行了描述。應急切換只提供短期數據應急服務,不承擔數據恢復功能,應急省份一般選擇擁有本省數據的區域中心或國家級CIMISS作為應急切換的數據源,并且保障兩地網絡互通,應急切換時通知提供應急服務方開通訪問許可。
2)對應急切換的流程進行了詳細的、利于操作的設計。包含整體切換和按功能級切換的操作方式,前期準備以及采取的技術手段等。 整體切換主要利用兩地的負載均衡進行服務路由轉換實現MUSIC服務端的整體切換,按功能級切換主要利用MUSIC服務接口的REST服務能力,對切換的資料進行遠程訪問,并進行本地格式封裝,提供本地用戶請求服務。
3)根據設計的切換流程方案,采用protostuff數據序列化和反序列化和gzip高壓縮技術對數據進行封裝,然后利用http協議進行數據高效交換,實現了應急切換服務軟件模塊,并集成到MUSIC軟件中。利用省級負載均衡設備的配置界面,實現了CIMISS設備級故障時一鍵式服務切換功能,并開發了一套氣象資料在線切換頁面,實現了CIMISS系統功能故障時的快速切換。
4)應急切換服務測試結果表明,在目前的網絡帶寬條件限制下,CIMISS故障省份的數據服務性能有很大的降低,不能支撐大并發的數據請求,后續需要從網絡帶寬、數據壓縮等多方面進行優化。
目前,切換流程不僅可用于CIMISS系統故障時進行應急切換,也應用在其他省級未存儲的數據服務業務中,比如災害管理數據的省級服務,A省通過MUSIC的在線資料切換功能,實現省、市、地縣三級業務系統通過省級MUSIC提供國家級存儲的災害數據服務。隨著云技術的發展,氣象部門正在開展基于云架構的氣象專有云設計和建設,基于MUSIC數據服務切換的設計與實現,在未來氣象專有云國省數據服務中將發揮更大的作用,使得氣象數據存儲更集約、服務更高效。
深入閱讀
熊安元, 趙芳, 王穎, 等, 2015. 全國綜合氣象信息共享系統的設計與實現. 應用氣象學報, 26(4): 500-512.
李坤, 王百杰, 2009. 服務器集群負載均衡技術研究及算法比較.計算機與現代化, (8): 7-10.
高攀, 林荔, 2008. 負載均衡技術的三種實現方法. 福建氣象, (6):45-47.
聶曉旭, 于鳳芹, 欽道理, 2015. 基于Protobuf的數據傳輸協議. 計算機系統應用, (8): 112-116.
Advances in Meteorological Science and Technology2018年1期