• 
    

    
    

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

      ?

      基于Redis的氣象數(shù)據(jù)分發(fā)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2019-05-29 11:18林紅華韻子
      軟件工程 2019年3期
      關(guān)鍵詞:短信

      林紅 華韻子

      摘? 要:針對(duì)預(yù)報(bào)服務(wù)產(chǎn)品一鍵式發(fā)布的迫切需求,通過(guò)對(duì)Redis內(nèi)存數(shù)據(jù)庫(kù)的應(yīng)用研究,基于Spring框架搭建了上海中心氣象臺(tái)數(shù)據(jù)分發(fā)管理系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)產(chǎn)品分發(fā)和分發(fā)配置管理功能,發(fā)送方式包括FTP、短信、郵件、傳真、語(yǔ)音。系統(tǒng)運(yùn)行穩(wěn)定可靠,發(fā)布效率提升90%。

      關(guān)鍵詞:數(shù)據(jù)分發(fā);Redis;傳真;短信

      中圖分類號(hào):TP399? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

      Abstract:Aiming at the urgent need of one-click publishing of forecast service products,through the application research of Redis in-memory database,the data distribution management system of Shanghai Central Meteorological Observatory is built based on the Spring framework,realizing data product distribution and distribution configuration management.The means of distribution include FTP,SMS,email,fax and voice message.The system runs stably and reliably,increasing the distribution efficiency by 90%.

      Keywords:data distribution;Redis;fax;SMS

      1? ?引言(Introduction)

      隨著上海社會(huì)經(jīng)濟(jì)的發(fā)展,政府部門、公眾、媒體、專業(yè)用戶等對(duì)氣象保障服務(wù)在精細(xì)化程度、預(yù)報(bào)時(shí)效、需求范圍等方面的要求不斷提高。當(dāng)前上海中心氣象臺(tái)每天發(fā)送數(shù)據(jù)文件數(shù)量在25000個(gè)左右,數(shù)據(jù)量達(dá)到30GB。預(yù)報(bào)服務(wù)產(chǎn)品發(fā)布數(shù)量的激增和高時(shí)效要求,使得目前單一的FTP發(fā)送、人工發(fā)送傳真和逐一打電話通知相關(guān)部門的現(xiàn)狀已經(jīng)不能滿足業(yè)務(wù)需求。本文從實(shí)際分發(fā)需求出發(fā),基于Redis內(nèi)存數(shù)據(jù)庫(kù)的高性能優(yōu)勢(shì),借鑒其在多個(gè)領(lǐng)域中的應(yīng)用經(jīng)驗(yàn)[1-3],設(shè)計(jì)研發(fā)了集FTP、短信、郵件、傳真、語(yǔ)音電話于一體的數(shù)據(jù)分發(fā)管理系統(tǒng),將預(yù)報(bào)員從繁雜的事務(wù)性工作中解脫出來(lái),有更多的時(shí)間專注于預(yù)報(bào)過(guò)程的分析,進(jìn)而提高預(yù)報(bào)質(zhì)量。

      2? 系統(tǒng)架構(gòu)及關(guān)鍵技術(shù)(System framework and key technology)

      2.1? ?系統(tǒng)架構(gòu)設(shè)計(jì)

      系統(tǒng)采用B/S架構(gòu)設(shè)計(jì),系統(tǒng)由存儲(chǔ)層、數(shù)據(jù)層、服務(wù)層、業(yè)務(wù)功能層組成。各層設(shè)計(jì)及主要功能:

      存儲(chǔ)層:存儲(chǔ)業(yè)務(wù)層、采集、發(fā)送過(guò)程中產(chǎn)生的所有數(shù)據(jù)。本層主要使用Redis數(shù)據(jù)庫(kù)和MySql為主,以Redis緩存數(shù)據(jù)庫(kù)作為任務(wù)隊(duì)列進(jìn)行任務(wù)控制,并緩存一段時(shí)間內(nèi)的數(shù)據(jù)信息。

      數(shù)據(jù)層:數(shù)據(jù)層是采集和發(fā)送數(shù)據(jù)的核心模塊,自動(dòng)管理服務(wù)連接、采集、發(fā)送、存儲(chǔ)、上報(bào)等任務(wù)。數(shù)據(jù)層的所有數(shù)據(jù)來(lái)源與任務(wù)隊(duì)列和業(yè)務(wù)層產(chǎn)生的數(shù)據(jù)。數(shù)據(jù)層控制流量主要是依賴于緩存隊(duì)列。數(shù)據(jù)層主要功能包括任務(wù)監(jiān)控、任務(wù)控制、任務(wù)隊(duì)列、連接池、數(shù)據(jù)傳輸、信息上報(bào)、數(shù)據(jù)存儲(chǔ)等。

      服務(wù)層:為業(yè)務(wù)層提供對(duì)應(yīng)的服務(wù)支撐,包含F(xiàn)TP發(fā)送、傳真發(fā)送、郵件發(fā)送、短信發(fā)送、語(yǔ)音呼叫、告警信息推送等接口。服務(wù)層主要是連接業(yè)務(wù)層和存儲(chǔ)層的中間橋梁,處理業(yè)務(wù)層的邏輯和數(shù)據(jù)操作,通過(guò)連接數(shù)據(jù)庫(kù),對(duì)服務(wù)器配置、分發(fā)策略配置、數(shù)據(jù)存儲(chǔ)等進(jìn)行查詢和存儲(chǔ),查詢?nèi)蝿?wù)、告警等信息。

      業(yè)務(wù)功能層:是以Web頁(yè)面的方式供用戶操作,功能主要包括配置中心(服務(wù)器配置、分發(fā)策略配置、發(fā)送用戶管理、發(fā)送用戶組管理、產(chǎn)品管理)、任務(wù)監(jiān)控(分發(fā)統(tǒng)計(jì)、數(shù)據(jù)下載、告警信息)、系統(tǒng)管理(用戶管理、數(shù)據(jù)字典)、權(quán)限管理四大功能。

      2.2? ?關(guān)鍵技術(shù)

      (1) 內(nèi)存數(shù)據(jù)庫(kù)技術(shù)

      在本項(xiàng)目中,待分發(fā)的數(shù)據(jù)文件數(shù)量、數(shù)據(jù)量和用戶數(shù)量眾多,多產(chǎn)品多用戶的并發(fā)需求,以及用戶對(duì)時(shí)效性的需求,特別是預(yù)警產(chǎn)品的超高時(shí)效性要求,所有的操作都針對(duì)關(guān)系型數(shù)據(jù)庫(kù)[4](Database,DB)是不現(xiàn)實(shí)的,DB雖然提供了數(shù)據(jù)的訪問(wèn),但每一次的數(shù)據(jù)訪問(wèn)都是一次I/O(Input/Output)操作,頻繁的I/O操作對(duì)系統(tǒng)性能來(lái)講是一種災(zāi)難[5,6],傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)方案已不能滿足海量數(shù)據(jù)發(fā)送的需求。系統(tǒng)選型在分布式內(nèi)存數(shù)據(jù)庫(kù)上[7],通過(guò)理論分析及試驗(yàn)分析,最終確定了實(shí)時(shí)處理能力更強(qiáng)的Redis內(nèi)存數(shù)據(jù)庫(kù)作為數(shù)據(jù)層支撐。

      Redis是開(kāi)源的、高性能的、鍵值(key-value)對(duì)存儲(chǔ)數(shù)據(jù)的NOSQL數(shù)據(jù)庫(kù),適合被用于數(shù)據(jù)庫(kù)、緩存和消息中間件[8]。作為一個(gè)內(nèi)存數(shù)據(jù)庫(kù),Redis讀寫數(shù)據(jù)的時(shí)候不會(huì)受到硬盤

      I/O速度的限制,讀取速度可以達(dá)到110000次/秒,寫入速度達(dá)到81000次/秒,遠(yuǎn)遠(yuǎn)優(yōu)于常規(guī)DB數(shù)據(jù)庫(kù)的讀取速度,具有對(duì)數(shù)據(jù)高并發(fā)讀寫和高效率存儲(chǔ)訪問(wèn)的性能[9]。與同樣是內(nèi)存數(shù)據(jù)庫(kù)的Memcached相比,Redis支持更多的數(shù)據(jù)類型,除支持字符串類型之外,還支持hash、鏈表、集合及有序集合等數(shù)據(jù)結(jié)構(gòu)[10],可以方便地添加和刪除元素[11]。并且Redis支持?jǐn)?shù)據(jù)的持久化,可以周期性地將內(nèi)存中的數(shù)據(jù)保存到磁盤中,重啟的時(shí)候可以再次加載到內(nèi)存中使用,數(shù)據(jù)可以從主服務(wù)器向任意數(shù)量的從服務(wù)器上同步,而從服務(wù)器又可以作為主服務(wù)器關(guān)聯(lián)其他的從服務(wù)器,以此實(shí)現(xiàn)主從同步的數(shù)據(jù)備份[12]。

      在本項(xiàng)目系統(tǒng)數(shù)據(jù)存儲(chǔ)的設(shè)計(jì)中,DB數(shù)據(jù)庫(kù)采用開(kāi)源的MySql數(shù)據(jù)庫(kù),而Redis作為DB與業(yè)務(wù)應(yīng)用之間的橋梁,整個(gè)內(nèi)存庫(kù)的設(shè)計(jì)除了緩存分發(fā)用戶的配置信息外,一段時(shí)間內(nèi)的數(shù)據(jù)信息也保存在緩存中,避免同一文件每發(fā)送一個(gè)用戶就進(jìn)行一次I/O讀取,大幅度提高分發(fā)效率。如圖2所示,Redis作為擋在其前的一道快速讀取數(shù)據(jù)的屏障,有效緩解了MySql數(shù)據(jù)庫(kù)壓力,對(duì)提高整個(gè)系統(tǒng)性能起到了關(guān)鍵作用。

      (2)傳真服務(wù)

      傳真是為上海市政府、防汛部門傳送氣象服務(wù)產(chǎn)品的重要渠道,目前是手動(dòng)發(fā)送,效率低下。本項(xiàng)目中部署了一部傳真服務(wù)器FS(Fax Server),搭載四路的Modem卡。建立基于WSDL的傳真接口協(xié)議FWI(Fax WebService Interface),其利用WebService進(jìn)行通信,數(shù)據(jù)分發(fā)模塊通過(guò)調(diào)用FWI向傳真服務(wù)器發(fā)送請(qǐng)求,F(xiàn)WI直接返回需要的數(shù)據(jù),并提供狀態(tài)信息。

      整個(gè)傳真服務(wù)流程為:數(shù)據(jù)分發(fā)模塊根據(jù)用戶名/密碼調(diào)用SignIn登錄FS;如果登錄成功,獲取令牌TokenID,將令牌TokenID作為參數(shù)調(diào)用發(fā)送傳真,獲取傳真狀態(tài)的服務(wù);操作完成,調(diào)用SignOut退出登錄。流程圖如圖3所示。

      待發(fā)送的文件傳送到傳真服務(wù)器后,通過(guò)文件格式轉(zhuǎn)換的功能,將文本或WORD等格式的文件轉(zhuǎn)成TIFF格式的文件后經(jīng)過(guò)base64加密封裝,調(diào)用傳真接口自動(dòng)發(fā)送。

      (3)短信服務(wù)

      預(yù)報(bào)服務(wù)產(chǎn)品的短信發(fā)送是為公眾、領(lǐng)導(dǎo)決策服務(wù)的主要手段之一,而短信發(fā)送涉及中國(guó)移動(dòng)、中國(guó)電信、中國(guó)聯(lián)通三大運(yùn)營(yíng)商的網(wǎng)關(guān),為此與移動(dòng)、聯(lián)通、電信建立合作渠道。短信服務(wù)器內(nèi)部集成統(tǒng)一的數(shù)據(jù)庫(kù)接口、API接口,與上海中心氣象臺(tái)業(yè)務(wù)系統(tǒng)融合,其服務(wù)器部署在上海市氣象局內(nèi)網(wǎng)DMZ區(qū),短信服務(wù)通過(guò)固定公網(wǎng)IP連接至中國(guó)移動(dòng)、中國(guó)聯(lián)通、中國(guó)電信三大運(yùn)營(yíng)商的行業(yè)短信網(wǎng)關(guān),數(shù)據(jù)分發(fā)模塊通過(guò)內(nèi)網(wǎng)直接調(diào)用短信服務(wù)器數(shù)據(jù)庫(kù)接口,實(shí)現(xiàn)全網(wǎng)手機(jī)用戶的短信發(fā)送、接收、查詢、統(tǒng)計(jì)等功能,支持移動(dòng)、聯(lián)通、電信的子賬號(hào)功能,滿足中心臺(tái)多業(yè)務(wù)、多維度的業(yè)務(wù)需求。如圖4所示。

      (4)語(yǔ)音電話服務(wù)

      語(yǔ)音分發(fā)是指向指定號(hào)碼撥打電話,目前是通過(guò)預(yù)報(bào)員人工操作完成的。通過(guò)調(diào)研選定了阿里語(yǔ)音服務(wù)。通過(guò)調(diào)用阿里云語(yǔ)音呼叫的API,從運(yùn)營(yíng)商網(wǎng)絡(luò)向指定號(hào)碼發(fā)起一通呼叫,呼叫被應(yīng)答后,播放一段指定的音頻,支持將一個(gè)音頻文件同時(shí)撥打給多個(gè)用戶。支持兩種形式的音頻調(diào)用:①播放的音頻為固定內(nèi)容的音頻文件(mp3/wav),可以直接外呼。②播放的音頻為帶有變量的文本模板,每次調(diào)用時(shí)先根據(jù)變量替換值從文本模板轉(zhuǎn)化為音頻文件,再進(jìn)行外呼。阿里語(yǔ)音服務(wù)通過(guò)先進(jìn)的深度學(xué)習(xí)技術(shù),提供了語(yǔ)音合成功能,可以將文本轉(zhuǎn)換成自然流暢的語(yǔ)音,同時(shí)能夠根據(jù)需求調(diào)節(jié)語(yǔ)速、語(yǔ)調(diào)、音量等。

      3? ?系統(tǒng)實(shí)現(xiàn)(System implementation)

      3.1? ?開(kāi)發(fā)環(huán)境

      系統(tǒng)后臺(tái)采用SpringBoot框架,前臺(tái)基于SpringMVC框架,采用JAVA和HTML5作為開(kāi)發(fā)工具。

      3.2? ?功能模塊

      根據(jù)系統(tǒng)架構(gòu)設(shè)計(jì),氣象數(shù)據(jù)分發(fā)管理系統(tǒng)主要包括:監(jiān)控模塊、分發(fā)模塊、管理模塊三大模塊。

      (1)監(jiān)控模塊

      監(jiān)控服務(wù)對(duì)指定的數(shù)據(jù)文件目錄進(jìn)行監(jiān)控,若該目錄下有文件新增,即通過(guò)socket發(fā)送文件的相關(guān)信息到收發(fā)核心模塊文件采集任務(wù)隊(duì)列。為避免有文件遺漏未被消費(fèi),設(shè)計(jì)了監(jiān)控重發(fā)模塊,每隔2分鐘執(zhí)行一個(gè)定時(shí)任務(wù)遞歸掃描文件夾下所有未消費(fèi)的文件,發(fā)送相關(guān)信息至核心模塊。

      為防止因其他原因造成的系統(tǒng)停止運(yùn)行,通過(guò)運(yùn)行獨(dú)立于整個(gè)系統(tǒng)的監(jiān)控腳本,每10分鐘檢查Redis、監(jiān)控模塊、收發(fā)核心模塊、web模塊的運(yùn)行情況,若停止運(yùn)行自動(dòng)重啟。

      (2)分發(fā)模塊

      分發(fā)模塊是整個(gè)系統(tǒng)的核心模塊,消費(fèi)文件采集隊(duì)列獲取文件名,通過(guò)正則表達(dá)式和文件名進(jìn)行匹配,若匹配成功則在數(shù)據(jù)歸檔根目錄下按照“產(chǎn)品名稱/年/月/日/時(shí)/”建立文件夾,對(duì)文件進(jìn)行歸檔;歸檔后將該條信息加入Redis發(fā)送任務(wù)隊(duì)列,發(fā)送隊(duì)列的消費(fèi)者根據(jù)產(chǎn)品內(nèi)容ID,查詢數(shù)據(jù)庫(kù)的FTP分發(fā)配置、短信分發(fā)配置、郵箱分發(fā)配置、傳真分發(fā)配置、語(yǔ)音分發(fā)配置。根據(jù)獲取的配置信息,進(jìn)行相應(yīng)的分發(fā)操作。分發(fā)模塊提供重發(fā)功能。

      FTP分發(fā):查詢到分發(fā)的用戶和配置信息,從FTP連接池中獲取連接,進(jìn)行文件的上傳操作。

      短信分發(fā):讀取文件內(nèi)容后,根據(jù)分發(fā)的用戶手機(jī)號(hào)組裝成規(guī)定的txt文件格式,上傳至短信發(fā)送服務(wù)器。

      郵箱分發(fā):查詢發(fā)送用戶的郵箱地址,如待發(fā)送的文件為文本文件,則將讀取到文件內(nèi)容作為正文發(fā)送,其余格式的文件將作為附件發(fā)送。

      傳真分發(fā):文件先轉(zhuǎn)換tiff格式后經(jīng)過(guò)base64轉(zhuǎn)換封裝并調(diào)用傳真接口發(fā)送。

      語(yǔ)音分發(fā):讀取文本文件內(nèi)容并查詢?nèi)〕鱿嚓P(guān)的用戶號(hào)碼,阿里云語(yǔ)音呼叫的API接口將文字自動(dòng)轉(zhuǎn)換為語(yǔ)音,撥打電話給用戶。

      FTP分發(fā)、短信分發(fā)、語(yǔ)音分發(fā)為同步,可以立即獲得分發(fā)結(jié)果;郵箱分發(fā)為異步,需等待回調(diào)的結(jié)果;傳真發(fā)送后,任務(wù)監(jiān)控隊(duì)列消費(fèi)者根據(jù)ID通過(guò)接口查詢傳真發(fā)送的結(jié)果。

      (3)管理模塊

      管理模塊實(shí)現(xiàn)發(fā)送配置、用戶管理、系統(tǒng)發(fā)送情況查詢等功能。

      系統(tǒng)提供靈活的分發(fā)統(tǒng)計(jì)功能,便于用戶查詢不同時(shí)間段、不同產(chǎn)品、不同用戶、不同文件名的分發(fā)統(tǒng)計(jì)情況,提供對(duì)每個(gè)統(tǒng)計(jì)情況詳細(xì)信息的查看功能,提供對(duì)分發(fā)文件的下載功能。

      4? ?結(jié)論(Conclusion)

      本項(xiàng)目投入業(yè)務(wù)化運(yùn)行后,有效減少手工操作,預(yù)報(bào)員用于產(chǎn)品發(fā)布的時(shí)間縮減了90%,大幅度提高工作效率。系統(tǒng)提供了監(jiān)控發(fā)布內(nèi)容的窗口,預(yù)報(bào)發(fā)布人員可以很直觀地看到發(fā)布情況,如果有發(fā)布失敗的產(chǎn)品,通過(guò)簡(jiǎn)單操作就可以進(jìn)行補(bǔ)發(fā)。管理人員方便對(duì)發(fā)布信息進(jìn)行查詢、統(tǒng)計(jì),便于預(yù)報(bào)產(chǎn)品、服務(wù)產(chǎn)品發(fā)布狀況的管理。短消息提醒功能,使得重要路徑發(fā)布失敗時(shí),相關(guān)人員可以在第一時(shí)間得到消息,便于及時(shí)處理,確保不漏發(fā)。統(tǒng)一的數(shù)據(jù)分發(fā)接口,其他業(yè)務(wù)系統(tǒng)不再需要單獨(dú)開(kāi)發(fā)分發(fā)功能,只需簡(jiǎn)單調(diào)用接口,或是將產(chǎn)品文件發(fā)送到指定目錄下,就可實(shí)現(xiàn)一鍵分發(fā)功能;減少重復(fù)開(kāi)發(fā),提高發(fā)布的穩(wěn)定性。語(yǔ)音呼叫功能,使得原來(lái)發(fā)布預(yù)警時(shí)逐一給各區(qū)氣象局和上海市預(yù)警聯(lián)動(dòng)部門人工撥打電話變得簡(jiǎn)單易行,傳真亦是如此。在以后的工作中,根據(jù)業(yè)務(wù)需求的變化進(jìn)一步完善系統(tǒng),提供更優(yōu)質(zhì)地服務(wù)。

      參考文獻(xiàn)(References)

      [1] Gade AN,Larsen TS,Nissen SB,et al.REDIS:A value-based decision support tool for renovation of building portfolios[J].BUILDING AND ENVIRONMENT,2018,142(9):107-108.

      [2] Sumba Xavier,Segarra Jos,Ortiz Jos,et al.REDI:A linked data-powered research networking platform[C].Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics),2018,v 11155 LNCS:121-125.

      [3] Leea Taeyoung,Kim Yongsung,Hwang Eenjun.Abnormal Payment Transaction Detection Scheme Based on Scalable Architecture and Redis Cluster[C].2018 International Conference on Platform Technology and Service,2018.

      [4] 華韻子,林紅.華東區(qū)域自動(dòng)站數(shù)據(jù)實(shí)時(shí)融合顯示與多級(jí)警示技術(shù)[J].軟件工程,2016,19(5):26-29.

      [5] 孫超.Redis內(nèi)存數(shù)據(jù)庫(kù)在智慧消防系統(tǒng)設(shè)計(jì)中的應(yīng)用[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2018(8):103-105.

      [6] 熊肖磊,王春偉,趙炯,等.基于Redis與SSM的大型設(shè)備數(shù)據(jù)運(yùn)用系統(tǒng)設(shè)計(jì)[J].現(xiàn)代機(jī)械,2018(6):29-34.

      [7] 鄧萬(wàn)宇,劉光達(dá),董瑩瑩.一種基于Scrapy-Redis的分布式微博數(shù)據(jù)采集方案[J].信息技術(shù),2018(11):59-62.

      [8] 崔夢(mèng)天,吳倩.基于Redis緩存的數(shù)字化圖書館應(yīng)用[J].吉林師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2018(2):123-127.

      [9] Paul Nicole,Lee Ji Su,Mieler Michael.et al.Improving Estimates of Earthquake-Induced Downtime in Individual Buildings Using the REDi Methodology[C].Structures Congress 2018,2018(4):77-86.

      [10] Kimm Haklin,Li Zuqing,Kimm Hanke.SCADIS:Supporting Reliable Scalability in Redis Replication on Demand[C].Proceedings-2nd IEEE International Conference on Smart Cloud,2017:7-12.

      [11] Josiah,L.Carlson.黃健宏,譯.Redis實(shí)戰(zhàn)[M].北京:人民郵電出版,2015.

      [12] Jeremy Nelson.汪佳南,譯.深入理解Redis[M].北京:電子工業(yè)出版社,2017.

      作者簡(jiǎn)介:

      林? 紅(1966-),女,碩士,高級(jí)工程師.研究領(lǐng)域:氣象行業(yè)軟件研發(fā).

      華韻子(1981-),女,碩士,高級(jí)工程師.研究領(lǐng)域:氣象行業(yè)軟件研發(fā).

      猜你喜歡
      短信
      道歉短信
      代發(fā)短信
      短信笑壇
      短信笑壇
      短信笑壇
      短信笑壇
      “八一”節(jié)日短信之一
      萍乡市| 中西区| 双桥区| 浮梁县| 定西市| 彭水| 陕西省| 郸城县| 苍溪县| 依安县| 横山县| 雷山县| 云浮市| 云和县| 洛阳市| 鸡西市| 塘沽区| 桂东县| 阿拉善右旗| 且末县| 句容市| 舞钢市| 静宁县| 宁河县| 株洲市| 剑川县| 南部县| 兴安县| 武鸣县| 江陵县| 潞西市| 宜宾县| 辽中县| 元氏县| 明光市| 灵宝市| 浙江省| 碌曲县| 城口县| 荣成市| 馆陶县|