• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      大數(shù)據(jù)平臺的測震數(shù)據(jù)流實(shí)時可視化系統(tǒng)設(shè)計與實(shí)現(xiàn)

      2022-09-06 03:13:48李勝樂
      測繪地理信息 2022年4期
      關(guān)鍵詞:接收數(shù)據(jù)測震服務(wù)器端

      劉 禹 李勝樂 李 力

      1中國地震局地震研究所,湖北 武漢,430071

      測震數(shù)據(jù)流的實(shí)時傳輸和可視化技術(shù)是研發(fā)地震監(jiān)測系統(tǒng)的基礎(chǔ),目前國內(nèi)地震行業(yè)常用的監(jiān)測軟件系統(tǒng)有地震速報信息共享服務(wù)系統(tǒng)EQIM(earthquake instant message)[1],該系統(tǒng)功能包括地震系統(tǒng)內(nèi)部速報信息的快速通報、匯集與共享;基于NetSeis/IP協(xié)議的實(shí)時數(shù)據(jù)監(jiān)控平臺jopens[2],該系統(tǒng)可對臺站實(shí)時數(shù)據(jù)流進(jìn)行實(shí)時監(jiān)控以及狀態(tài)發(fā)布;國外有監(jiān)測世界地震活動性的IRIS網(wǎng)絡(luò)[3,4]。這些系統(tǒng)均運(yùn)行于單節(jié)點(diǎn)服務(wù)器之上,有能力實(shí)時處理當(dāng)前1 100個國家和區(qū)域臺所產(chǎn)生的測震數(shù)據(jù)流。然而隨著寬頻帶臺網(wǎng)和地震預(yù)警臺網(wǎng)的建設(shè),未來需要實(shí)時處理的數(shù)據(jù)量將增加數(shù)倍[5],遠(yuǎn)超過任何傳統(tǒng)計算平臺的處理能力。因此,地震行業(yè)正在逐步建設(shè)基于hadoop和spark等分布架構(gòu)的大數(shù)據(jù)系統(tǒng),以解決了海量數(shù)據(jù)的存儲和處理問題[6-10]。如何對大數(shù)據(jù)系統(tǒng)中的海量測震相關(guān)流數(shù)據(jù)進(jìn)行實(shí)時、高效的傳輸和顯示仍然需要探索。為此,本文基于最新的HTML 5(hyper text markup language 5)標(biāo)準(zhǔn),以Kafka為數(shù)據(jù)接口,Websocket為通信協(xié)議,Echarts為前端渲染組件,設(shè)計和實(shí)現(xiàn)了一套B/S(browser/server)架構(gòu)的測震數(shù)據(jù)流實(shí)時可視化系統(tǒng)。

      1 系統(tǒng)設(shè)計

      系統(tǒng)采用B/S架構(gòu),用戶可在任意平臺通過瀏覽器訪問。B/S架構(gòu)下的應(yīng)用程序通常由3部分組成,即數(shù)據(jù)層、服務(wù)層和表示層。數(shù)據(jù)層中數(shù)據(jù)來源于Kafka分布式緩存數(shù)據(jù)庫,服務(wù)層搭建采用SpringMVC框架,功能為實(shí)現(xiàn)對數(shù)據(jù)篩選統(tǒng)計和分析,MVC框架的模塊相互獨(dú)立的松耦合性特點(diǎn)便于后期代碼維護(hù)和重構(gòu),表示層由Echarts實(shí)現(xiàn)。系統(tǒng)架構(gòu)如圖1所示。三層結(jié)構(gòu)搭建的具體程序流程如圖2所示。

      圖1 系統(tǒng)技術(shù)架構(gòu)Fig.1 System Technical Architecture

      圖2 Web應(yīng)用程序流程Fig.2 Web Application Flow

      1.1 表示層設(shè)計

      表示層即瀏覽器端主要負(fù)責(zé)與后臺交互,將數(shù)據(jù)層封裝的數(shù)據(jù)渲染為HTML頁面,通過瀏覽器進(jìn)行展示。當(dāng)數(shù)據(jù)通過Websocket返回給瀏覽器后,可直接在Echarts中進(jìn)行實(shí)時顯示,通過散點(diǎn)圖變化和動態(tài)條形統(tǒng)計圖直觀表示實(shí)時數(shù)據(jù)變化趨勢。同時將數(shù)據(jù)按時間段保留,用戶可以選擇最近一段時間內(nèi)的數(shù)據(jù)通過Echarts統(tǒng)計圖查看數(shù)據(jù)整體變化趨勢,主要包括接收數(shù)據(jù)的值域分布統(tǒng)計;接收數(shù)據(jù)的差值統(tǒng)計;接收數(shù)據(jù)隨時間變化統(tǒng)計;接收數(shù)據(jù)的整體變化趨勢統(tǒng)計。

      與傳統(tǒng)B/S前后端”請求/響應(yīng)”模式類似,瀏覽器端發(fā)送至服務(wù)器的Websocket通道建立的”握手”請求實(shí)際屬于http請求,通過用戶點(diǎn)擊觸發(fā)Websocket通道建立請求函數(shù),后臺接收“握手”請求,通道建立后數(shù)據(jù)可持續(xù)發(fā)送至前端顯示。系統(tǒng)同時借助Jquary框架優(yōu)秀的跨平臺兼容性,有效解決瀏覽器兼容性問題。通過應(yīng)用Jquary插件的可擴(kuò)展開發(fā)的特點(diǎn),搭建出的前端框架代碼邏輯清晰,方便后續(xù)維護(hù),Web界面效果美觀。數(shù)據(jù)可視化顯示由Echarts完成,借助Echarts統(tǒng)計圖種類豐富,可交互式強(qiáng)的特點(diǎn),將數(shù)據(jù)關(guān)鍵信息采用多種形式直觀表達(dá),同時用戶可根據(jù)需求選擇性展示數(shù)據(jù)。

      1.2 服務(wù)層設(shè)計

      服務(wù)層是為表示層提供數(shù)據(jù)信息的核心架構(gòu)層,是客戶端訪問數(shù)據(jù)庫的主要途徑[11]。服務(wù)層收到前端Websocket請求后,返回響應(yīng),Websocket通道建立完成。服務(wù)層主要作用在于請求數(shù)據(jù)庫中數(shù)據(jù)并進(jìn)行處理。服務(wù)層對數(shù)據(jù)的處理包括篩選國內(nèi)臺站,提供國內(nèi)臺站經(jīng)緯度,剔除問題臺站數(shù)據(jù)等臺站數(shù)據(jù)處理。將處理結(jié)果通過Websocket通道主動發(fā)送至前端顯示。

      區(qū)別于傳統(tǒng)流數(shù)據(jù)處理輪詢方式中服務(wù)層單次前端請求-單次后端返回的模式,本系統(tǒng)采Websocket通信協(xié)議實(shí)現(xiàn)了一次“握手”,后續(xù)數(shù)據(jù)持續(xù)發(fā)送,瀏覽器端只需向服務(wù)器端發(fā)送一次Websocket“握手”請求便可實(shí)現(xiàn)數(shù)據(jù)的持久通信,后續(xù)無需再向服務(wù)器端發(fā)送新的http請求,服務(wù)器端可主動推送數(shù)據(jù)至前端。通道的建立大大降低了服務(wù)器負(fù)載,同時也提高了瀏覽器端的顯示效率。當(dāng)用戶關(guān)閉瀏覽器或者關(guān)閉Websocket通道,則瀏覽器與服務(wù)器端通信中斷。

      1.3 數(shù)據(jù)層設(shè)計

      數(shù)據(jù)層主要負(fù)責(zé)存儲管理實(shí)時流數(shù)據(jù)。系統(tǒng)中所用數(shù)據(jù)為臺站接收到的實(shí)時連續(xù)波形數(shù)據(jù)所提取出的特征值流數(shù)據(jù),該數(shù)據(jù)由各個臺站在接收到地震震相時通過算法程序計算處理產(chǎn)生,后續(xù)文中統(tǒng)一稱為臺站響應(yīng)數(shù)。各臺站作為消息的推送者(producer),會先將數(shù)據(jù)推送到Kafka集群中,Kafka集群則將這些數(shù)據(jù)以日志文件的形式發(fā)送并持久化到硬盤中,之后利用了磁盤的順序讀寫,提高讀寫效率。

      Kafka采用“發(fā)布-訂閱”消息處理模式,利用不同的“topic”對消息的歸納,類似于傳統(tǒng)數(shù)據(jù)庫中的表名[12-13]。本文所述系統(tǒng)中服務(wù)器通過訂閱Kafka中的特定topic,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時監(jiān)控讀取。Kafka作為緩存數(shù)據(jù)庫,定期更新接收到的臺站流數(shù)據(jù),Kafka緩存數(shù)據(jù)庫中只存放固定時間段內(nèi)數(shù)據(jù),數(shù)據(jù)存放格式為json格式。

      2 系統(tǒng)實(shí)現(xiàn)

      系統(tǒng)主要應(yīng)用于地震監(jiān)測業(yè)務(wù),系統(tǒng)通過服務(wù)器端對數(shù)據(jù)庫進(jìn)行實(shí)時監(jiān)控。當(dāng)接收到地震臺站發(fā)送的實(shí)時測震數(shù)據(jù)后,將數(shù)據(jù)存入測震信息數(shù)據(jù)庫中,并通過監(jiān)測平臺瀏覽器與服務(wù)器間已建立的Websocket通道,將數(shù)據(jù)主動發(fā)送瀏覽器并在Echarts中顯示。具體實(shí)現(xiàn)流程如圖3所示。

      圖3 測震數(shù)據(jù)接收顯示流程Fig.3 Flow of Receiving and Displaying Seismic Data

      系統(tǒng)主要通過前端部分的ECharts統(tǒng)計圖顯示,前端與服務(wù)器端的Webscoket通道建立和服務(wù)器端獲取Kafka緩存數(shù)據(jù)庫中的測震流數(shù)據(jù)3部分實(shí)現(xiàn)。

      2.1 前端搭建實(shí)現(xiàn)

      前端Echarts統(tǒng)計圖構(gòu)建無需復(fù)雜的環(huán)境搭建,引入JQuary和Echarts所需js腳本便可搭建Echarts運(yùn)行環(huán)境,實(shí)現(xiàn)Echarts統(tǒng)計圖的調(diào)用。通過修改Echarts內(nèi)置setoption配置項(xiàng)函數(shù)便可實(shí)現(xiàn)包括統(tǒng)計圖樣式的修改、統(tǒng)計圖種類的選擇、交互式插件的添加等相關(guān)功能。利用Echarts內(nèi)置dataset屬性特性,可將從服務(wù)器接收的key-value格式數(shù)據(jù),通過簡單設(shè)置其中的encode屬性完成從數(shù)據(jù)到圖形的映射。

      Echarts接收數(shù)據(jù)采用流式加載,與Websocket協(xié)議相結(jié)合后,數(shù)據(jù)加載后可立即實(shí)現(xiàn)Echarts圖表渲染。Echarts在兼容當(dāng)前主流瀏覽器的前提下,同時以VML(vector markup language)形式渲染圖表,實(shí)現(xiàn)與低版本IE瀏覽器的兼容。

      2.2 WebScoket通道建立實(shí)現(xiàn)

      WebScoket通道的建立主要通過通道啟動、通道構(gòu)建、通道調(diào)用3個步驟實(shí)現(xiàn)。

      1)通道啟動步驟主要通過系統(tǒng)創(chuàng)建WebSocke配置文件實(shí)現(xiàn),依賴WebSocke配置文件中的核心配置類ServerApplicationConfig,建立通道啟動入口函數(shù),系統(tǒng)啟動后會首先調(diào)用啟動入口函數(shù)完成通道啟動工作。

      2)通道構(gòu)建步驟在啟動完成后執(zhí)行,系統(tǒng)通過創(chuàng)建Websocket執(zhí)行文件,編寫Websocket執(zhí)行函數(shù),執(zhí)行函數(shù)包括連接建立函數(shù)onopen()、前端接收服務(wù)端數(shù)據(jù)函數(shù)onmessage()、連接關(guān)閉函數(shù)onclose()。

      3)通道調(diào)用步驟通過系統(tǒng)創(chuàng)建Websocke實(shí)例對象實(shí)現(xiàn),通過對象調(diào)用onopen()函數(shù)建立連接后調(diào)用Webscoket內(nèi)置函數(shù)send()發(fā)送前端請求。服務(wù)器端接收請求發(fā)送數(shù)據(jù)至前端onmessage()函數(shù)中,前后端通道建立完成,系統(tǒng)后續(xù)在通道建立的基礎(chǔ)上可實(shí)現(xiàn)前后端數(shù)據(jù)持續(xù)傳輸。

      2.3 服務(wù)器端搭建實(shí)現(xiàn)

      Kafka測震流數(shù)據(jù)獲取,主要通過java構(gòu)建Kafka消費(fèi)者程序,利用消費(fèi)者對象consumer.poll(long)函數(shù)拉取指定“topic”內(nèi)的數(shù)據(jù)并發(fā)送至服務(wù)器。消費(fèi)情況會同步記錄到Zookeeper服務(wù)器集群中,Zookeeper是一個高性能開源分布式應(yīng)用協(xié)調(diào)服務(wù),分布式應(yīng)用可以基于它實(shí)現(xiàn)同步配置管理,集群管理等更高級的服務(wù)。當(dāng)系統(tǒng)停止消費(fèi),Zookeeper會記錄消費(fèi)者最后消費(fèi)消息的偏移量offset,待系統(tǒng)再一次正常消費(fèi)后從此偏移量繼續(xù)消費(fèi)消息,從而確保每條消息被成功消費(fèi)。

      Kafka數(shù)據(jù)拉取操作在Websocket執(zhí)行代碼中的onopen()函數(shù)中執(zhí)行。系統(tǒng)全程對Kafka中數(shù)據(jù)拉取線程進(jìn)行實(shí)時監(jiān)控,監(jiān)測到數(shù)據(jù)產(chǎn)生時將線程休眠,休眠時間小于接收數(shù)據(jù)時間以保證接收數(shù)據(jù)完整,拋出該數(shù)據(jù)至Websocket執(zhí)行代碼中的onmessage()函數(shù)中,之后線程重啟,從而將該數(shù)據(jù)主動發(fā)送至前端Echarts統(tǒng)計圖顯示。

      3 系統(tǒng)運(yùn)行測試

      3.1 Websocket協(xié)議下的網(wǎng)絡(luò)消耗

      通過測試在相同時間內(nèi),分別使用Websocket協(xié)議和基于http協(xié)議的Ajax技術(shù)請求服務(wù)器端流數(shù)據(jù)并更新瀏覽器顯示。以谷歌瀏覽器為例,利用其開發(fā)者工具測試瀏覽器與服務(wù)器間的“請求/響應(yīng)”次數(shù),來比較Websocket協(xié)議和傳統(tǒng)Ajax輪詢技術(shù)的低網(wǎng)絡(luò)消耗差別。結(jié)果表明,Ajax技術(shù)處理流數(shù)據(jù)時需要瀏覽器向服務(wù)器逐條請求,流數(shù)據(jù)中的每一條數(shù)據(jù)需要完成“請求/響應(yīng)”操作,測試傳輸690條數(shù)據(jù),傳輸所用時間共計13 110 ms;通過Websocket協(xié)議處理流數(shù)據(jù)過程中只需瀏覽器與服務(wù)器間進(jìn)行一次Websocket通道建立的“請求/響應(yīng)”測試傳輸690條數(shù)據(jù),傳輸所用時間共計37 ms;大大減輕了服務(wù)器負(fù)擔(dān),降低了網(wǎng)絡(luò)消耗。

      3.2 臺站響應(yīng)顯示

      如圖4所示,系統(tǒng)所接收數(shù)據(jù)來自中國地震臺網(wǎng)中心2020-01-02—2020-01-09臺站響應(yīng)數(shù)據(jù),將響應(yīng)臺站通過經(jīng)緯度展示在地圖上,同時地圖右側(cè)條形統(tǒng)計圖可準(zhǔn)確表明對于臺站名和臺站響應(yīng)信息到達(dá)臺網(wǎng)的時間,所有統(tǒng)計圖均為動態(tài)顯示。本文所述系統(tǒng)在顯示流數(shù)據(jù)后同時可對數(shù)據(jù)進(jìn)行記錄,后期可對記錄結(jié)果進(jìn)行統(tǒng)計分析。系統(tǒng)頁面上方為時間選擇窗口,可依據(jù)需求顯示并下載自定義時間段內(nèi)數(shù)據(jù),同時可下載自定義時間段內(nèi)數(shù)據(jù)進(jìn)行統(tǒng)計分析。

      圖4 系統(tǒng)顯示臺站響應(yīng)數(shù)據(jù)Fig.4 Platform Displays Response Data of the Station

      3.3 臺站響應(yīng)統(tǒng)計展示

      系統(tǒng)可將任意時間段內(nèi)(時間段最大為7 d)內(nèi)各個臺站響應(yīng)信息記錄至本地json格式的文件中,通過Echarts統(tǒng)計圖可對7 d內(nèi)的數(shù)據(jù)進(jìn)行整體統(tǒng)計,如圖5所示。用戶可根據(jù)需求在地圖上交互式劃定選擇特定區(qū)域內(nèi)臺站,右側(cè)條形統(tǒng)計圖可統(tǒng)計所選臺站7 d內(nèi)總計響應(yīng)次數(shù),同時計算區(qū)域內(nèi)響應(yīng)次數(shù)的平均值,中位數(shù)和眾數(shù)。同時地圖上臺站響應(yīng)數(shù)值點(diǎn)的大小可根據(jù)最右側(cè)時間值的變化而變化,用戶可以通過左側(cè)數(shù)值軸設(shè)置閾值來顯示指定臺站響應(yīng)次數(shù)區(qū)間內(nèi)臺站。將臺站響應(yīng)次數(shù)通過點(diǎn)的半徑來表示其大小,使用戶可通過點(diǎn)大小變化快速發(fā)現(xiàn)臺站響應(yīng)數(shù)異常的臺站。

      圖5 臺站響應(yīng)數(shù)據(jù)整體頁面統(tǒng)計Fig.5 Overall Page Statistics of Response Data of Each Station

      借助Echarts統(tǒng)計圖圖表種類豐富的特點(diǎn),通過利用條形統(tǒng)計圖,折線統(tǒng)計圖以及餅圖表示臺站響應(yīng)數(shù)的變化趨勢以及值域分布。圖6(a)表示所選區(qū)域內(nèi)臺站響應(yīng)次數(shù)的值域分布以及各值域內(nèi)臺站所占比例便于用戶判斷所選區(qū)域內(nèi)在特定時間段內(nèi)的臺站地震波接收情況;圖6(b)表示所選區(qū)域內(nèi)各臺站間臺站響應(yīng)數(shù)的差值比對,通過統(tǒng)計圖用戶可直接獲得區(qū)域內(nèi)臺站響應(yīng)次數(shù)較多臺站,在一定區(qū)域內(nèi)個別臺站的臺站響應(yīng)次數(shù)較多一般為異常臺站;圖6(c)為動態(tài)變化條形統(tǒng)計圖,圖6(c)左側(cè)為每日各臺站響應(yīng)數(shù)變化,圖6(c)右側(cè)為每日每小時臺站響應(yīng)數(shù)變化,用戶可自行選擇日期查看當(dāng)天各小時內(nèi)臺站響應(yīng)數(shù)具體數(shù)據(jù)和變化情況;圖6(d)為折線統(tǒng)計圖表示所選區(qū)域內(nèi)各臺站7 d內(nèi)臺站響應(yīng)次數(shù)變化趨勢。通過圖6(c)和圖6(d)的臺站響應(yīng)次數(shù)變化統(tǒng)計圖便于用戶發(fā)現(xiàn)臺站響應(yīng)次數(shù)變化異常臺站,后續(xù)可對異常臺站進(jìn)行重點(diǎn)觀測研究。

      圖6 Echarts統(tǒng)計圖分析表示臺站響應(yīng)次數(shù)Fig.6 Echarts Statistical Graph Shows the Response Times of the Station

      Echarts統(tǒng)計圖表支持在線下載功能,圖7所示各個的統(tǒng)計結(jié)果均可單獨(dú)下載至本地,也可將所有統(tǒng)計結(jié)果制成統(tǒng)計報表下載。

      3.4 異常臺站自動標(biāo)記記錄

      系統(tǒng)在選取特定區(qū)域內(nèi)臺站后,會自動計算所選區(qū)域內(nèi)各個臺站響應(yīng)數(shù)的特征值,當(dāng)出現(xiàn)某臺站的響應(yīng)數(shù)遠(yuǎn)遠(yuǎn)大于所選區(qū)域內(nèi)臺站的響應(yīng)數(shù)的各個特征值時,則系統(tǒng)自動標(biāo)記該異常臺站為紅色,同時將問題臺站自動備份至本地數(shù)據(jù)庫方便用戶統(tǒng)計歷史數(shù)據(jù),并提供下載功能,用戶可將異常臺站信息下載為本地txt文件。例如框選山西地區(qū)部分臺站,如圖7(a)所示,系統(tǒng)自動計算山西地區(qū)內(nèi)各臺站臺站響應(yīng)數(shù)的特征值,根據(jù)統(tǒng)計圖所示,其中SX/HZH臺站數(shù)據(jù)出現(xiàn)異常,圖7(b)為導(dǎo)出該異常臺站的txt文件,其中picks值為臺站響應(yīng)數(shù)。

      圖7 異常臺站標(biāo)記Fig.7 Abnormal Station Markers

      4 結(jié)束語

      隨著國內(nèi)各省市地震臺站數(shù)量和密度的不斷增加所帶來的海量觀測數(shù)據(jù),本文提出了一種可適應(yīng)分布式大數(shù)據(jù)平臺的數(shù)據(jù)流處理系統(tǒng),該系統(tǒng)可將存于分布式緩存數(shù)據(jù)庫Kafka中的數(shù)據(jù)進(jìn)行實(shí)時讀取,同時借助Websocket全雙工實(shí)時通信和低網(wǎng)絡(luò)消耗優(yōu)勢,將服務(wù)器消息持續(xù)高效推送至前端Echarts中進(jìn)行分析和多種統(tǒng)計圖顯示,有效解決了大數(shù)據(jù)平臺下的測震數(shù)據(jù)流實(shí)時傳輸與可視化存在的問題。

      結(jié)合未來大數(shù)據(jù)時代下的海量測震數(shù)據(jù)流的可視化需求,進(jìn)一步提升數(shù)據(jù)流實(shí)時傳輸以及顯示能力,降低系統(tǒng)對海量數(shù)據(jù)分析所產(chǎn)生的高服務(wù)器負(fù)荷是今后相關(guān)可視化系統(tǒng)研發(fā)的重點(diǎn)。

      猜你喜歡
      接收數(shù)據(jù)測震服務(wù)器端
      基于信號精度分析的高速鐵路沿線測震井地震動力反應(yīng)研究
      沖激噪聲背景下基于幅度預(yù)處理的測向新方法*
      鐘祥臺測震觀測質(zhì)量影響淺析
      科技研究(2021年6期)2021-09-10 07:22:44
      低復(fù)雜度多輸入多輸出雷達(dá)目標(biāo)角度估計方法
      遼寧流動測震觀測系統(tǒng)現(xiàn)狀分析
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
      成功(2018年10期)2018-03-26 02:56:14
      單片機(jī)模擬串口數(shù)據(jù)接收程序的實(shí)現(xiàn)及優(yōu)化
      在Windows中安裝OpenVPN
      基于網(wǎng)絡(luò)技術(shù)的測震系統(tǒng)在市縣地震部門的應(yīng)用
      華南地震(2012年2期)2012-09-11 02:19:20
      網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
      华坪县| 赤壁市| 宣武区| 宁津县| 资中县| 吴堡县| 林西县| 连城县| 莒南县| 开平市| 攀枝花市| 礼泉县| 中卫市| 清苑县| 鄂伦春自治旗| 辽阳县| 阿拉善左旗| 天台县| 宜兴市| 大丰市| 石楼县| 南川市| 莱西市| 武义县| 博客| 吴旗县| 五河县| 灌云县| 虹口区| 大英县| 宁陕县| 临泉县| 葵青区| 化州市| 定州市| 江源县| 岐山县| 浦江县| 沾化县| 都江堰市| 永德县|