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