郝禹 牟宗琦
1. 吉林省氣象局氣象信息網絡中心運行監控科 吉林 長春 130000;
2. 長春工業大學經濟管理系工商管理專業 吉林 長春 130000
極端天氣災害會給人們的生活帶來巨大的損失,以吉林為例,自今年九月份以來吉林省相繼受到三個臺風的影響,人們的生活都收到了不同程度的影響,所以目前氣象預報業務逐步得到了社會的廣大認可。但是與預報相關的氣象數據,例如氣溫、降水、衛星等資料,每日的積累量是非常大的。一般日積累量達到PB級。氣象數據內容豐富,涉及廣泛,實時性要求較高,這就給氣象數據的傳輸、查詢以及使用帶來了一定的挑戰。一般氣象數據的傳輸流程是,基本臺站采集,經由省級數據傳輸系統,傳輸到國家。每一級可對所擁有的數據進行使用。但在傳輸是用過程中,會產生網絡延遲,同一個氣象數據集,在頁面端不停地查詢、加載使用會造成資源浪費,考慮到時效性,所以對于一些熱點數據,可以結合緩存方面的相關技術,將更有價值的數據進行緩存存儲,在用戶使用時可以做到響應迅速,提高數據的可用性。
目前在服務器端或者在web端使用緩存,一般是建立緩存數據庫或者是激勵緩存策略[1],本文主要是針對緩存策略進行使用說明。緩存策略大多數情況是調整緩存方式的算法,對算法進行優化,從而達到最大限度的利用現有的固定資源,提高使用效率[2]。將氣象數據進行緩存處理,可以快速動態的加載氣象數據集,做到預報及時、服務準確。查詢會先去進行數據庫訪問,一般情況下,每一種數據庫都會有并發性要求,過多的重復檢索會造成系統的查詢效率降低,不利于數據使用以及系統開發的長遠發展。因此,對緩存技術的應用進行研究極具價值意義。
緩存模塊的對讀寫速度要求較高,所以在系統建設過程中所需成本也很大,這就造成了我們不可能按照數據庫的容量去建立web緩存模塊,當web段或者服務器端的緩存容量被占滿之后,緩存模塊就不可以在進行使用了。之后必須按照某一種緩存策略對緩存中的數據進行規劃,將長時間存于緩存系統中的數據去除,存進新的數據。現有的緩存技術主要有以下幾個方法:
這種算法的核心思想是,將時間因素認定為緩存對象是否被刪除出緩存空間的判斷依據。這類算法主要的判斷依據是緩存數據在緩存模塊中的存放時間,如果一個數據塊在緩存中是新建立的,那么系統會認為這個數據進一步被請求的概率要大于存放時間更久的數據,當緩存中的內容需要替換時,會優先刪除存放時間較長的數據[3]。
這種算法的核心思想是,以緩存中數據的被請求次數多為替換的判斷依據。它主要對緩存中的每一個緩存數據的使用次數進行統計并記錄,并認為一個數據如果訪問次數多,那么接下來被使用的概率要大于其他的數據。當緩存空間不足時,系統會查詢記錄表,找出使用次數最少的文件進行刪除。
這種算法的核心思想是,按照緩存中數據的大小來決定是否刪除數據[4],這一算法的好處是可以減少大文件長期占用緩存空間,緩存會對每一個緩存文件的大小進行記錄,并定期將容量較大的文件進行替換,以保證緩存空間的使用效率。
這類算法相對復雜,不是以單一的要素來判斷緩存對象的價值,而是綜合考慮各種要素,對每一種要素設置不同的權重值,通過整合計算,形成判斷標準。這種算法會動態更新每一個緩存數據的數值,它將權重與成本相結合,命中率高。
緩存的主要目的就是減少用戶的查詢時間,提高用戶的查詢命中率。對于氣象數據而言,他的數值模式等資料一般是文本文件形式的,并且數據量大,大多數情況是通過網頁將文件加載,并通過js等技術進行數據解析,將格點數據通過插值等方法動態地顯示在頁面上,反復查詢解析數據會占用過多的系統資源。結合了氣象數據的特點,與緩存機制相結合,可以更好地利用資源,減少查詢成本。
緩存技術與氣象數據查詢結合的方法,其主要思想就是每當讀取氣象文檔數據或者頁面數據時就會對這些數據的內容進行是否緩存判斷,然后利用現有的緩存技術對這些數據進行緩存,接下來會對具體的流程做一個詳細的說明。
用戶查詢使用數據的顯示方式就是通過客戶端在頁面上將數據動態的展現反饋出來,當用戶需要下載某一個數據的時候,需求就是能夠迅速地在本地得到數據。一般而言,網絡端的緩存主要就是通過html頁面或者jsp頁面對數據進行加載并展示,主要是針對解析并處理了的數據集以及jpg等圖片進行顯示。本文是面向氣象解析數據集數據與網頁端所需加載的數據做緩存處理。氣象數據在網頁上的顯示主要是提前進行處理,形成以氣溫、降水、空氣濕度、能見度等數據集合的數據集,然后再加載進行使用。加入用戶想查詢某一時刻的一種氣象要素信息并顯示在所看的頁面上,首先,要去數據庫中查看,是否已經有了滿足用戶需求的數據集,如果找到了,就在顯示端加載展示,同時將氣象數據存儲在緩存里。在實際的應用過程中,我們發現,氣象數據種類繁多,文件所占用的存儲空間也不盡相同,例如衛星資料與雷帶資料,往往需要較大的存儲空間進行存儲,但是時效性要求較高,這些資料反復讀取,會增加系統的負擔,造成系統的運行緩慢等問題,另外對于一些模式數據,解析加載時間過長,反復解析同樣會使系統的響應時間變長。
對于上述存在的問題,在數據處理過程中,我們結合了分布式編程模型Map Reduce,對所需要處理的數據進行相關的操作。這一編程模型可以更快速的處理數據,通過多節點并行的方式,極大地提升了數據處理速度。同時集群的處理形式相比于單機版處理數據更加安全,如果某一個節點出現故障不會影響到整個集群的數據處理。另外,氣象數據的特點也比較適合用Map Reduce編程模型進行解析,主要是氣象數據集很多情況下是按行存儲,而Map Reduce編程模型可以將文件進行分塊讀取,每一塊是按照行來進行數據讀取。
上述內容我們對現有的緩存方法進行了介紹,并針對不同格式的數據集可以使用不同的緩存方法,這些可根據實際情況進行合理確定,接下來我們會說明緩存是如何建立的。首先系統會建立緩存模塊用于存儲緩存數據,其次系統會對緩存模塊的內容建立緩存表,用于記錄目前緩存的數據內容以及數據大小。當用戶第一次查詢數據的時候,系統會直接訪問數據庫,將獲取到的數據向客戶端進行反饋,并解析加載出結果,在頁面上顯示。同時,將查詢到的數據存入緩存中,并在緩存記錄表中進行記錄。對于緩存中存儲的數據,可以是原始數據集,也可以是解析過的格點數據集,這種數據集可以直接使用,不需要在頁面上解析。當用戶再進行訪問的時候,系統會優先查詢緩存表,根據用戶請求的信息進行檢索,如果找到數據,即將數據返回,若找不到,即訪問數據庫,并將數據進行緩存存儲。緩存的建設目的主要是為了降低客戶端與數據庫服務器之間的查詢次數,同時通過之前的緩存方法,對緩存數據進行管理,可以最大化的進行緩存空間的利用。同時結合了網絡緩存的特點,數據不可能無限制的存儲在網絡服務器中,這就需要技術人員結合氣象數據的查詢需要,自行調整緩存策略,從而實現對現有資源的更好利用。
本文目的是提高氣象數據在網頁端加載并顯示的時效性,在存儲端結合了緩存技術,在數據處理端采用了分布式的變成處理模型,對氣象數據從查詢到展示,如何做到提高實效性,保證系統的可用性做了相關的說明。通過預處理技術,將氣象數據形成可用的數據集,并將原始數據以及解析之后的格點數據進行自主緩存。提高了緩存的文件命中率與字節命中率,增強了系統的時效性。