王甫棣姜立鵬 姚 燕
(國家氣象信息中心,北京100081)
北京全球信息系統中心的數據緩存功能優(yōu)化
王甫棣*姜立鵬 姚 燕
(國家氣象信息中心,北京100081)
世界氣象組織信息系統(WMO Information System,WIS)是一個支撐全球氣象數據交換共享的通用信息服務平臺,北京全球信息系統中心作為WIS的核心功能中心之一,必須緩存最近24 h內的WMO全球交換數據以提供高效的數據訪問服務。為了檢查收集到的全球交換數據的合法性,需要校驗每條數據是否存在與之匹配的元數據,這些元數據信息以關系型數據庫方式存儲在北京全球信息系統中心中。由于每日接收到的WMO全球交換數據文件個數多且收集時間分布不均,大量頻繁的數據庫查詢操作導致處理性能下降,特別在數據密集收集的情況下容易產生較大延遲,直接影響業(yè)務的實時性。設計并實現一種基于內存對象緩存的應用優(yōu)化現有通過數據庫查詢的校驗方式,實現在內存中一次性載入元數據信息,并在內存中完成緩存數據校驗的操作,以此來減少磁盤的讀寫訪問,提升處理效率。此外,還通過多線程方法實現與緩存數據相關的功能,使該方案具有良好的擴展性。實際應用表明:數據緩存功能優(yōu)化后能滿足實時業(yè)務性能要求。
數據緩存;內存對象;北京全球信息系統中心
世界氣象組織信息系統(WMO Information System,WIS)是世界氣象組織(WMO)正在組織開發(fā)的綜合、通用的信息服務平臺,用以支撐WMO各項計劃以及相關國際組織和計劃的數據交換和共享[1]。全球信息系統中心(GISC)是WIS的核心功能中心[2],承擔全球交換資料的收集和分發(fā),提供對WIS全部數據的發(fā)現和訪問服務。中國氣象局國家氣象信息中心(NMIC)目前是全球電信系統(GTS)主干通信網的亞洲區(qū)域通信樞紐(RTH),建成北京GISC是中國氣象局的既定目標,也是鞏固和提升中國氣象局在WMO通信網絡及信息系統中的地位和影響力的重要舉措[3]。
北京GISC是全球首批業(yè)務運行的GISC之一,其服務系統可收集責任區(qū)內提供全球交換的數據和產品,與其他GISC交換全球數據,提供責任區(qū)內的數據收集或產品中心(DCPC)和國家中心(NC)對WIS全部數據的發(fā)現和訪問服務。包括國家氣象中心、國家衛(wèi)星氣象中心、國家氣候中心在內的中國氣象局內部DCPC于2012年獲得第64屆WMO執(zhí)行理事會批準投入業(yè)務試運行,所有提供的數據和產品都可以通過北京GISC進行發(fā)現、訪問和檢索服務。
按照WIS/GISC要求,每個GISC須至少緩存24 h內的全球交換數據,若授權用戶通過元數據瀏覽或者檢索發(fā)現到某些關心的數據條目,可以鏈接形式顯示出這些緩存的本地數據。此外,所有這些數據資料均需要進行文件名和傳輸格式的規(guī)范化處理。
1.1 數據發(fā)現、訪問和檢索服務
當前,WIS分兩部分并行實施[4]:一部分將繼續(xù)發(fā)展GTS,基于實時推送機制,進一步改進高時效和關鍵業(yè)務的資料、產品的服務提供,包括警報;另一部分則是通過Internet提供數據發(fā)現、訪問和檢索(DAR)服務,并基于請求/應答的拉取機制提供靈活及時的數據獲取。GISC中的緩存數據下載是DAR服務的一部分內容,它是DAR服務對于24 h全球交換數據訪問的具體實施。
每個GISC需要維護包括全球交換資料在內的WIS服務數據的元數據目錄并提供訪問,以支持DAR功能,包括上傳、修改和刪除元數據,用戶發(fā)現和訪問元數據,元數據同步[5]等功能。
1.2 DAR元數據
參考國際所公認的空間信息元數據標準[6]引入氣象元數據[7-8],使用元數據來描述氣象數據是解決氣象數據共享的理想辦法[9]。目前WMO各GISC發(fā)布的氣象元數據均須遵循WMO核心元數據標準,但由于不同WMO成員對元數據描述內容的需求和利用元數據提供應用服務方面存在差異,各成員各自創(chuàng)建滿足自身需求的氣象元數據,但所有在WIS中注明來源的資料均將根據ISO標準由相關元數據定義。北京GISC系統中的元數據采用XML格式記錄元數據,目前已遵循WMO最新的核心元數據標準(1.2版本),主要由文件標識、語言、字符集等15個主要元素組成,可以描述產品和數據的名稱、時間、地理位置等屬性以及數據格式和數據獲取方式、地址等數據服務信息,是北京GISC系統提供數據發(fā)現和訪問服務的基礎。對于WMO全球交換數據的元數據描述中,使用固定的文件標識“urn:x-wmo:md:int.wmo.wis:T1T2A1A2iiCC CC”,其中,T1T2A1A2iiCCCC是簡式報頭項,其余部分為固定字符串。通過文件標識中簡式報頭項可以匹配到一個時間序列的某類WMO全球交換數據。
根據不同使用目的,北京GISC中元數據以3種形式進行存儲:①將GISC數據應用相關的元數據抽取其中部分信息存儲在關系型數據庫中,為GISC數據應用提供便利,如緩存數據是否存在對應元數據的檢查;②為支持元數據文件的訪問,提供元數據的XML文件存儲;③為支持GISC全文檢索功能,以BLOB(二進制大對象)數據類型將元數據存儲于數據庫中。
1.3 數據緩存
北京GISC緩存數據有兩部分數據來源:一是直接通過GTS接收到的全球交換數據,二是通過網頁數據收集收集的數據[10]。二者雖然數據來源不同,但通過統一的文件名格式保證數據緩存功能可以進行統一處理。對于GTS接收到的全球交換數據,為了保證用戶下載緩存數據的效率,由GTS直接將WMO全球交換數據送至北京GISC系統指定目錄結構進行緩存,當用戶請求這些數據下載時,系統可直接將數據文件返回給用戶,減少因通過從中國氣象局本地實時數據庫進行數據檢索的耗時。
根據WIS/GISC的要求,對于進入GISC數據緩存中但不存在元數據文件的數據文件,系統能夠進行識別和告警提示,并允許120 s的非法校驗時間延遲[11-12]。如果120 s內收到數據文件的元數據文件,系統將在GISC數據緩存中提供該數據文件的訪問服務,否則標識其為非法文件不提供服務。由于檢查緩存數據合法性是通過判定系統中是否存在與之對應的元數據,需要進行數據庫檢索操作。
GISC數據緩存的物理存儲結構設計如圖1所示。所有緩存數據根據處理邏輯結果的不同被存儲在不同目錄中,如未知格式文件(unknown)、重復文件(repeat)、非法文件(error)、過期文件(outdate)、120 s時間延遲待校驗文件(wait)等。所有通過檢查的合法數據將根據文件名中簡式報頭T1T2A1-A2iiCCCC項存儲在指定的子目錄(entry)中,子目錄分為CCCC(指WMO成員)和TT(指資料類型)兩級。
圖1 數據緩存的物理存儲結構Fig.1 Physical storage structure of data cache
2.1 處理性能低
為了滿足緩存數據檢查需求,必須循環(huán)掃描緩存入口文件目錄,在處理掉重復文件和非法格式文件后,提取正確文件名中簡式報頭信息進行元數據匹配檢索操作,如果判定數據合法則將數據拷貝到entry的指定子目錄,否則進入wait目錄等待120 s的時間延遲校驗。隨著北京GISC系統投入業(yè)務試運行,系統中以關系型數據庫表形式存儲的元數據記錄已超過100000條,并且不斷增多,而每天WMO全球交換數據文件總數超過50000個。圖2記錄了2012年2月29日00:00—05:59(世界時,下同)時間段內緩存數據入口目錄每秒接收文件數統計趨勢圖,可以明顯看出數據進入目錄時間分布不均勻,如在00:36:20,有504個文件進入入口目錄;大約在02:40—03:50,國外數值預報產品資料會非常密集地進入入口目錄。由于GTS每日例行進行數據交換,特定某日某時段的數據接收情況具備普遍性,在其他時間段里,也存在時間分布不均的情況。
圖2 2012年2月29日00:00—05:59緩存入口目錄文件接收個數統計Fig.2 The number of receiving files from data cache entry directory from 0000 UTC to 0559 UTC on 29 Feb 2012
系統為了判斷該條數據是否有效,現有的技術方案要求每條數據都需要進行數據庫表查找操作,選擇2012年2月29日00:25—00:35 10 min內59個文件的通過數據庫進行查找的時間延遲統計,如圖3所示。為提高效率,系統開啟5個多線程并行處理,元數據信息表也添加索引進行優(yōu)化,但處理性能仍然不理想,并且性能也可能隨時因系統負載增大而降低。盡管不在數據密集到達時間段,但檢索耗時平均時間大約是500 ms。通過在多個其他不同時間段的反復測試結果顯示,檢索耗時平均超過500 ms。在同時開啟5個處理線程情況下,500份文件僅數據檢索操作就需要50 s,這對于120 s時間延遲校驗會導致較大誤差,若遇到數據密集到達時甚至會出現1條數據等待120 s還未進行校驗就已標記為非法的情況。
圖3 2012年2月29日00:25—00:35原有技術方案中元數據文件檢索耗時Fig.3 The metadata files retrieval consuming time in the original technical solutions from 0025 UTC to 0035 UTC on 29 Feb 2012
2.2 擴展能力弱
除數據緩存服務外,GISC系統還有其他功能需要依托緩存處理實現,例如:①數據緩存日志信息記錄,為了提供緩存數據監(jiān)視功能,所有數據緩存的處理結果需要實時記錄;②緩存數據訂閱處理,在判斷緩存數據合法后檢查是否有用戶進行訂閱,一旦是用戶訂閱的數據則將數據鏈接到訂閱用戶分發(fā)目錄。由于原有緩存處理性能低,為了盡可能保證效率,系統不能在該功能上進行擴展以支持相關功能的實現,否則會因為額外的處理邏輯加劇緩存處理效率下降。
3.1 問題分析
傳統的建立數據庫索引,啟用多線程方法能一定程度提高處理效率,但無法從根本上避免頻繁讀寫操作帶來的耗時,而其中大量讀寫操作來自對數據庫的訪問,因此需要對處理方式進行優(yōu)化,減少數據庫訪問。
近年來,內存容量不斷提高,價格不斷下跌,操作系統已經可以支持更大的地址空間,充分利用內存技術提升系統性能成為一個熱點[13-14]。較為普遍的做法是使用內存數據庫技術(也叫主存數據庫技術),對查詢處理、并發(fā)控制和恢復的算法和數據結構進行重新設計,以便更有效地使用內存。相對于磁盤訪問,內存數據讀寫速度要高出幾個數量級。這種做法實現復雜度較高,即使利用已有的中間件產品,由于不了解其中的實現算法,其運行穩(wěn)定性和可靠性存在風險。常見的開源內存數據庫產品包括Memcached和Redis[15]。
Memcached是一款基于事件處理的分布式內存數據庫產品。Memcached沒有過多考慮數據的持久化問題,一旦重新啟動操作系統會導致全部數據消失,如果使用Memcached來解決數據緩存的校驗功能,需要通過二次開發(fā)解決處理日志信息的持久化問題。Memcached按照固定的塊大小分割內存來解決內存碎片問題,若存儲長度不一的元數據信息表時無法充分利用內存。
Redis在很多方面與Memcached具有相同的特征,不同在于Redis增加了持久化的功能,Redis定期通過異步操作將數據庫內容拷貝到硬盤。但Redis需要通過額外的數據裁剪功能來保證合理的內存使用空間,使得應用復雜度增加。
數據緩存處理功能僅針對獨立的元數據數據表進行操作,考慮一種簡單方案是使用內存對象緩存技術[16-17],將某些量小、使用次數多的數據以鍵(key)/值(value)對的方式保存在內存對象緩存系統中,合理增大內存緩沖,優(yōu)化數據結構,改進查詢訪問的命中率,提升整體效率。這種方法實現復雜度小,通過自主開發(fā)相應的程序,有針對性地解決GISC緩存處理的業(yè)務邏輯。
3.2 技術實現
如圖4所示,基于內存緩存技術的應用定期更新抽取元數據信息表中的信息,封裝成元數據信息對象后載入內存,進行數據的合法性檢查、延遲處理以及訂閱等業(yè)務邏輯。
圖4 數據緩存功能處理流程圖Fig.4 Workflow of data cache functionality
由于元數據列表不是鏈表或者樹形結構的序列,不能直接使用任何排序方法來提高查找效率。采用哈希表存儲這種離散的對象數據[18]后,可通過建立哈希索引來提高檢索效率。哈希表(Hash Map)是將鍵通過固定的哈希函數轉換成一個整型數字,然后將該數字對數組長度進行哈希散列運算,運算的結果被當作數組的下標,然后將值存儲在以該數字為下標的數組空間里。當使用哈希表進行查詢的時候,再次使用哈希函數將鍵(key)轉換為對應的數組下標,并定位到該空間獲取值(value)。
如圖5所示,元數據通過簡式報頭哈希索引來管理:抽取元數據標識中簡式報頭T1T2A1A2iiCCCC項作為哈希表的key項,對應的元數據信息作為value項,每個對象包含元數據校驗、更新必須的屬性信息。
圖5 基于哈希表的內存對象組織Fig.5 Structure of the memory objects based on Hash Map
為了滿足數據訂閱、延遲處理等功能,采用多線程機制,封裝其他的功能對象進行并發(fā)處理(如圖6所示)。
①守護進程對象:監(jiān)視和控制各個線程的運行狀態(tài)。
②入口文件檢查對象:當檢測到緩存入口目錄數據到達時,通過查找內存對象緩存是否有對應的報頭T1T2A1A2iiCCCC來檢查入口數據有效性,未找到匹配信息的數據放入延遲檢查目錄。
③等待文件檢查對象:等待120 s非法校驗延遲目錄中的數據文件的元數據文件是否存在,仍然沒有則判定該數據非法。
④元數據更新對象:初始運行時元數據庫中元數據列表一次性導入內存,此后內存對象緩存將定期增量更新,同步頻率可以進行配置。
⑤訂單更新對象:判斷合法的緩存數據是否為用戶訂閱的數據,如果是,則將數據文件鏈接到用戶訂閱分發(fā)目錄[19]。
⑥日志記錄對象:為提供緩存日志信息功能,系統采取日志信息異步更新方法,當內存中保存的日志信息超過配置限額時,一次性將日志持久化寫入磁盤,減少磁盤操作。
圖6 多線程緩存處理類圖Fig.6 Class diagram of multi-threaded cache processing
優(yōu)化的數據緩存應用處理效率高,還可以擴展進行訂閱處理操作,使得數據處理耗時平均小于5 ms,能保證緩存數據高效率的處理需求,并提供緩存日志記錄以及訂閱數據處理等擴展功能。圖7是通過內存對象緩存應用進行緩存數據檢查的優(yōu)化效果,選擇2012年2月29日13:00—13:40緩存數據文件處理延遲情況。
圖7 2012年2月29日13:00—13:40優(yōu)化后緩存數據文件處理時間延遲Fig.7 The data cache file processing delay in optimized technical solution from 1300 UTC to 1340 UTC on 29 Feb 2012
分析現有數據緩存處理的性能瓶頸主要在于頻繁訪問數據庫的磁盤讀寫耗時,通過建立一個內存對象緩存應用優(yōu)化傳統數據庫檢索處理方式,將需要使用的數據一次性組織在內存中,有效減少了數據庫查詢訪問帶來的性能下降。該方案也為其他海量數據處理應用提供了一種新的解決思路,特別是針對數據具備動態(tài)變化特性以及高時效要求的場景。傳統的關系型數據庫在應對高時效的數據處理時受制于磁盤讀寫性能,而廣泛采用的內存數據庫中間件產品則復雜度太高,很難滿足特殊的氣象資料復雜的處理邏輯。因此,采用內存對象緩存應用是介于二者的一種方案,既能與關系性數據庫較好銜接,又能減少關鍵的核心處理的磁盤讀寫操作,可以有效降低數據庫的負載,提高處理性能。
隨著WIS進一步發(fā)展,GISC緩存數據的范圍可能不限于WMO全球交換數據,為了保證7×24 h業(yè)務的高效、可靠運行,提供分布式的緩存應用,需要研究多機內存緩存機制并構建一種分布式的緩存應用。
[1] 劉華,周崢嶸.WIS-WMO未來信息系統.氣象軟科學,2007,83:143-150.
[2] Geoff L.The birth of WMO Information System.Bulletin of WMO,2003,55(4):232-238.
[3] 李湘,王甫棣,姜立鵬,等.WIS的實現技術研究及應用.氣象,2011,37(10):1301-1308.
[4] 祝婷,李湘.WMO信息系統中氣象元數據的設計與實現.應用氣象學報,2012,23(2):238-244.
[5] 姜立鵬,李湘.基于OAI-PMH協議的WMO信息系統元數據同步功能設計與實現.氣象科技,2012,40(2):185-188.
[6] 曹衛(wèi).基于XML的空間元數據系統的思考.計算機技術與發(fā)展,2010,20(7):32-35.
[7] 周崢嶸,王琤,何文春.分布式氣象元數據同步系統的探索研究.應用氣象學報,2010,21(1):121-128.
[8] 高峰,王國復,喻雯,等.氣象數據文件快速下載服務系統的設計與實現.應用氣象學報,2010,21(2):243-249.
[9] 王國復,徐楓,吳增祥.氣象元數據標準與信息發(fā)布技術研究.應用氣象學報,2005,16(1):114-121.
[10] Wang Fudi,Yao Yan,Li Xiang,et al.Establishment of WMO Information System in Beijing.Lecture Notes in Electrical Engineering,2012,100:520-527.
[11] Robert H,David T,Eliot C.WMO Information System Functional Architecture.[2012-07-30].http:∥www.wmo.int/pages/prog/www/TEM/ET-WISC-III/documents/WIS-Func Arch_current.doc.
[12] Thomas D,Christian E,Husband R.WMO Information System Compliance Specifications of GISC,DCPC,and NC.[2012-07-30].http:∥www.wmo.int/pages/prog/www/WIS/documents/TechnicalSpecification1-2.doc.
[13] 劉云生,李國徽.實時內存數據庫的裝入.軟件學報,2000,26(4):829-835.
[14] 楊潤芝,馬強,李德泉,等.內存轉發(fā)模型在CIMISS數據收發(fā)系統中的應用.應用氣象學報,2012,23(3):377-384.
[15] 楊艷,李煒,王純.內存數據庫在高速緩存方面的應用.現代電信科技,2011(12):59-64.
[16] 趙玉偉,趙小雨,喬木.緩存技術在B/S架構信息系統中的應用.計算機工程,2008,34(1):233-235.
[17] 張震波,楊鶴標,馬振華.基于LRU算法的Web系統緩存機制.計算機工程,2006,32(19):68-70.
[18] 楊燕明,魯志軍,陳煜,等.一種基于哈希索引的內存表模型.計算機應用與軟件,2012,29(1):215-216.
[19] 王甫棣,姚燕,李湘.基于XML的氣象數據訂閱系統設計.氣象科技,2012,40(4):591-595.
Optimization of Data Cache Function in Beijing Global Information System Center
Wang Fudi Jiang Lipeng Yao Yan
(National Meteorological Information Center,Beijing 100081)
WMO Information System(WIS)is a coordinated,distributed,global infrastructure for the collection and sharing of information for all WMO and related international programs.As the core center of WIS,each Global Information System Center(GISC)is responsible for the collection and distribution of global exchanging data,and providing data discovery and access service.As a GISC of WIS,a scalable and flexible system is designed and established to satisfy WIS/GISC functionalities in Beijing.Beijing Global Information System Center should hold at least 24-hour WMO global exchanging data files,which could be accessed by authorized users through DAR(data discovery,access and retrieval)services.
GISC Beijing has to do validation check for all the global exchanging data files,and only files matching the corresponding metadata could be brought into data cache.The existing approach for the validation is based on database retrieval operation.Currently,there are more than 100000 metadata records stored in the relational database GISC Beijing,while the system receives more than 50000 global exchanging data files in an uneven distribution of collection time.The disadvantage of this way is that frequent database I/O operation would lead to a sharp decline of the system performance,especially when a large number of data entering.Therefore,the approach could not satisfy the requirement of real-time data cache service.Although establishing the table index and multi-threaded mechanism could solve the efficiency of data processing to some extent,it is inevitable that frequent database I/O operation would bring about the performance bottleneck.Therefore,the operation treatment should be optimized.
It is a possible way making full use of memory technology to reduce disk I/O cache data and improve the efficiency significantly.Considering the complexity of the mature memory database,a more targeted approach is adopted which is suitable for the scenario of dynamic nature of data with the timeliness requirements.An application is designed and implemented based on the memory object caching technology.When initializing the application,the system loads metadata into memory as a hash table from the database based on stored key/value pairs,organized by the unique bulletin head information of global exchanging data.In this way,the metadata contents are encapsulated as memory objects,thereby providing fast data memory retrieval method.In addition,parallel processing is implemented to extend the functionalities,including data cache logging function and data subscription services.
As a result,effects of the optimized function can satisfy the real-time business requirements,reducing the data processing time to an average of less than 5 ms.It also provides an easier way to do extensions by adding memory object using parallel processing.
data cache;memory object;GISC Beijing
王甫棣,姜立鵬,姚燕.北京全球信息系統中心的數據緩存功能優(yōu)化.應用氣象學報,2014,25(2):242-248.
2012-11-05收到,2013-11-22收到再改稿。
公益性行業(yè)(氣象)科研專項(GYHY200906057)
*email:wangfd@cma.gov.cn