国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MQTT協(xié)議研發(fā)安卓手機地震預(yù)警應(yīng)用

2017-04-03 07:28:22周施文
華南地震 2017年4期
關(guān)鍵詞:速報安卓消息

周施文,鄭 超,程 志

(福建省地震局,福州 350003)

0 引言

我國是世界上地震災(zāi)害最為嚴重的國家之一。隨著移動通信和智能手機的普及和全民防震減災(zāi)意識的提高,國內(nèi)手機應(yīng)用市場上出現(xiàn)了相應(yīng)的地震信息類應(yīng)用。此類應(yīng)用絕大多數(shù)以提供地震三要素(震時、震中、震級)信息為主,官方應(yīng)用以中國地震臺網(wǎng)的 “地震速報”為代表,第三方應(yīng)用以成都高新減災(zāi)研究所的 “地震預(yù)警”為代表。在應(yīng)用介紹里提到具有地震預(yù)警功能的國內(nèi)手機應(yīng)用,僅有成都高新減災(zāi)研究所的 “地震預(yù)警”應(yīng)用,但是該應(yīng)用的地震預(yù)警數(shù)據(jù)來源是基于較為簡易的地震監(jiān)測儀器和該所自主研發(fā)的地震監(jiān)測系統(tǒng),誤報風(fēng)險較大,并不具備官方權(quán)威性;而在日本,地震預(yù)警信息只有政府授權(quán)的組織和部門,如日本氣象廳,才可發(fā)布地震預(yù)警信息。因此,研發(fā)一個基于官方地震數(shù)據(jù)來源、具備官方權(quán)威性的手機地震預(yù)警應(yīng)用已不僅僅是市場所需,更是地震系統(tǒng)為大眾提供地震預(yù)警服務(wù)的當(dāng)務(wù)之急[1-2]。

實現(xiàn)手機地震預(yù)警應(yīng)用需要采用高效、可靠、低耗的消息傳輸機制。目前主流的面向消息中間件協(xié)議有Java消息服務(wù)(JMS)、高級消息隊列協(xié)議(AMQP)、流文本定向消息協(xié)議(STOMP)、可擴展通訊和表示協(xié)議(XMPP)、消息隊列遙測傳輸(MQTT)等。基于上述各協(xié)議的中間件產(chǎn)品 (如Apache Qpid、ActiveMQ、RabbitMQ等)均能提供高效、可靠的消息傳輸服務(wù)。因此,各協(xié)議的功耗差別成為了本文選擇的重要依據(jù)。經(jīng)調(diào)研,MQTT協(xié)議 “體積”小、功能 “專一”,成為市面上手機APP的主要選擇,代表應(yīng)用為Facebook Messenger App。因此,MQTT協(xié)議成為本文搭建手機預(yù)警應(yīng)用的選擇。另一方面,目前主流的手機操作系統(tǒng)有安卓、蘋果、微軟和黑莓等。據(jù)統(tǒng)計,截至2015年,全球安卓操作系統(tǒng)份額達81%;2015年度中國手機市場上,搭載安卓系統(tǒng)的手機獲得82.02%的關(guān)注比例,占據(jù)絕對主流。

基于上述兩點,本文以安卓系統(tǒng)為目標,首先簡略介紹MQTT相關(guān)資料,然后詳細介紹基于MQTT協(xié)議開發(fā)安卓手機地震預(yù)警應(yīng)用,并給出相關(guān)的測試評估結(jié)果。

1 MQTT協(xié)議簡介

MQTT協(xié)議全稱是消息隊列遙測傳輸協(xié)議(Message Queuing Telemetry Transport), 由 IBM 公司主導(dǎo)開發(fā),提供開源的實現(xiàn)。MQTT協(xié)議是面向消息中間件(Message-Oriented Middleware,MOM)的一種協(xié)議。MOM是一種異步、無阻塞、基于消息的通信技術(shù),能夠屏蔽操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議的差異,具有良好的可靠性和靈活性,特別適用于邏輯關(guān)系松散的分布式環(huán)境[3?;诖?,MQTT協(xié)議具有以下幾點特性:

(1)采用發(fā)布-訂閱消息通信協(xié)議,提供一對多的消息發(fā)布模式。

(2)基于TCP/IP協(xié)議,提供3種消息服務(wù)質(zhì)量 (Quality of Service, QoS):

①At Most Once,用0標識,消息最多被傳遞一次;在基于TCP/IP協(xié)議的網(wǎng)絡(luò)中,消息可能會丟失或重復(fù)。

②At Least Once,用1標識,確保消息到達,但可能會重復(fù)傳遞消息。

③Once and Exactly Once,用2標識,消息保證傳遞且僅有一次傳遞。

(3)開銷小,固定長度的消息頭部是2字節(jié),利于大數(shù)據(jù)并發(fā)時節(jié)省數(shù)據(jù)流量。

(4)支持處理客戶端和服務(wù)器之間的連接丟失,如果客戶端意外掉線,可使用 “遺愿和遺囑”(Last Will和 Testament特性) 向服務(wù)器發(fā)布一條消息。

(5)支持絕大多數(shù)平臺和編程語言,實現(xiàn)程序松耦合。

(6)易于實現(xiàn),語法采用簡單的動詞集合,如connect、subscribe等。

1.1 MQTT協(xié)議基礎(chǔ)模型

MQTT協(xié)議的基礎(chǔ)模型中定義了3種角色:消息發(fā)布者Publisher、消息代理Broker和消息訂閱者Subscriber,如圖1所示。其中,消息代理即為消息代理服務(wù)端,負責(zé)管理消息發(fā)布者的注冊和主題登記、消息訂閱者的注冊和主題訂閱、消息的存儲和轉(zhuǎn)發(fā)。消息訂閱者和消息發(fā)布者的角色可以根據(jù)場景的不同而互相轉(zhuǎn)換。比如說,一個消息發(fā)布者可以同時向消息代理訂閱主題并接收消息推送,從而成為消息訂閱者,反之亦然。

MQTT協(xié)議屏蔽了具體的消息內(nèi)容,以主題(Topic)為標識對發(fā)布的數(shù)據(jù)進行轉(zhuǎn)發(fā)。發(fā)布者可以通過向不同主題發(fā)布不同的信息,提高信息發(fā)布的效率;訂閱者可根據(jù)需要訂閱相關(guān)的主題,減少冗余信息,提高信息的利用率。

圖1 MQTT協(xié)議原理基礎(chǔ)模型Fig.1 The fundamental model of MQTT

1.2 基于MQTT協(xié)議的消息代理軟件

實現(xiàn)MQTT v3.1.1協(xié)議功能的消息代理軟件有很多,其中開源的以Mosquitto、EMQTT(Erlang MQTT Broker)、VerneMQ為代表,閉源的以IBM公司的Websphere MQ和MessageSight為代表。其中,EMQTT和MessageSight突出了高并發(fā)功能,可支持百萬級連接和消息并發(fā)。本文選擇IBM MessageSight(虛擬機版)作為消息代理服務(wù)器,原因有3點:第一,便于安裝,在虛擬機上導(dǎo)入MessageSight程序后配置,即可開始使用;第二,便于操作,MessageSight除了支持命令行配置之外,還帶有可視化管理界面;第三,可以得到IBM的專業(yè)技術(shù)支持。

2 技術(shù)要素框架和應(yīng)用模塊

2.1 地震數(shù)據(jù)流

數(shù)據(jù)處理服務(wù)器接收到地震數(shù)據(jù)源發(fā)送的地震信息數(shù)據(jù)后,根據(jù)不同的信息,生成符合預(yù)定格式的地震預(yù)警數(shù)據(jù)和地震速報數(shù)據(jù),通過不同的主題發(fā)送至消息代理服務(wù)器。安卓手機地震預(yù)警應(yīng)用(以下簡稱預(yù)警應(yīng)用)在連接MessageSight的時候會訂閱相關(guān)主題,MessageSight會記錄此信息,當(dāng)接收到數(shù)據(jù)處理服務(wù)器發(fā)送的數(shù)據(jù)時,即時按主題推送至預(yù)警應(yīng)用(圖2)。預(yù)警應(yīng)用根據(jù)接收到的數(shù)據(jù)和其所在的主題進行相關(guān)操作。本文的重點在實現(xiàn)預(yù)警應(yīng)用與MessageSight的連接、主題訂閱、消息接收和響應(yīng)。

圖2 地震數(shù)據(jù)流示意圖Fig.2 The earthquake dataflow diagram

2.2 主題與數(shù)據(jù)格式

本文使用 “eewdata”和 “eqrdata”主題分別推送/接收地震預(yù)警數(shù)據(jù)和地震速報數(shù)據(jù)。兩個主題的數(shù)據(jù)格式均采用JSON數(shù)據(jù)格式。地震預(yù)警數(shù)據(jù)包括發(fā)震時刻、震中經(jīng)度、震中緯度、震中地名、震級和消息發(fā)送時刻等信息;地震速報數(shù)據(jù)包括自動/人工速報標識、震中地名、震中經(jīng)度、震中緯度、震級、震源深度和發(fā)震時刻等信息。

2.3 預(yù)警時間和預(yù)估烈度

2.3.1 預(yù)警時間計算方法

本文采用的預(yù)警時間計算方法如圖3所示。

設(shè)tw為用戶所在位置的預(yù)警時間,TS為S波到達用戶所在位置的時刻,T2為預(yù)警應(yīng)用接收到預(yù)警數(shù)據(jù)的時刻(由預(yù)警應(yīng)用即時獲取),Tθ為地震發(fā)生時刻(由預(yù)警數(shù)據(jù)提供),Distance為用戶所在位置到震中的距離(用戶所在位置信息由預(yù)警應(yīng)用獲取,震中位置由預(yù)警數(shù)據(jù)提供,根據(jù)球面兩點間距公式計算得出),VS為S波傳播速度 (3.55 km/s)。假設(shè)服務(wù)器時間與終端系統(tǒng)時間均與因特網(wǎng)時間同步,預(yù)警時間計算公式如下所示:

2.3.2 用戶所在地預(yù)估烈度計算方法

本文所使用的預(yù)估烈度計算方法如(2)所示。設(shè)m為震級(由預(yù)警數(shù)據(jù)提供),Intensity為用戶所在地預(yù)估烈度。

2.4 安卓手機地震預(yù)警應(yīng)用模塊設(shè)計

安卓手機地震預(yù)警應(yīng)用模塊包括核心功能模塊和輔助模塊,核心功能模塊包括連接模塊、數(shù)據(jù)接收處理模塊、信息展示模塊;輔助模塊包括數(shù)據(jù)庫模塊、定位模塊、應(yīng)用參數(shù)設(shè)置模塊、地圖模塊、科普模塊。本文主要介紹核心功能模塊。

2.4.1 連接模塊

預(yù)警應(yīng)用通過MQTT協(xié)議連接MessageSight服務(wù)器,并訂閱eewdata和eqrdata兩個主題。應(yīng)用安卓Service類在后臺維持預(yù)警應(yīng)用與MessageSight服務(wù)器的連接,包括斷線重連等。

2.4.2 數(shù)據(jù)接收處理模塊

當(dāng)接收到MessageSight推送的數(shù)據(jù)包時,數(shù)據(jù)接收處理模塊先提取主題名字,再從數(shù)據(jù)中提取各個參數(shù)值,生成可讀性文本,對于地震預(yù)警,還需要計算用戶所在地到震中的距離、預(yù)警時間和預(yù)估烈度,再激活相應(yīng)的信息展示模塊。

2.4.3 信息展示模塊

信息展示模塊有文本展示和地圖展示,主要介紹文本展示部分。當(dāng)接收到eewdata主題的信息時,將激活預(yù)警框。預(yù)警框中包含的信息有避震建議、預(yù)警倒計時、地震三要素、用戶所在地預(yù)估烈度和與震中的距離,如圖4所示;接收到eqrdata主題的信息時,將彈出速報通知。速報通知包含的信息有地震三要素、震中經(jīng)緯度和震源深度,如圖5所示。

每一條接收到的信息將以列表的形式展示,用戶進入程序后可瀏覽信息。預(yù)警歷史記錄包含的信息有地震三要素、預(yù)警數(shù)據(jù)推送時刻和預(yù)警應(yīng)用接收時刻,如圖6所示。地震速報記錄包含的信息有地震三要素、人工/自動速報標簽、震源深度,如圖7所示 (“[測試]”標簽表示該條信息是測試數(shù)據(jù)。)

圖3 預(yù)警時間計算示意圖Fig.3 The schematic diagram of EEW time calculation

圖4 預(yù)警框示例Fig.4 EEW alert example

圖5 速報通知示例Fig.5 EQR notification example

圖6 預(yù)警列表Fig.6 EEW list

圖7 速報列表Fig.7 EQR list

3 測試評估

3.1 測試環(huán)境配置

3.1.1 測試服務(wù)器

測試服務(wù)器的操作系統(tǒng)是Windows Server 2008 R2 Enterprise x64,MessageSight所在虛擬機分配內(nèi)存4GB。

3.1.2 測試用安卓真機

本文使用華為P6-T00(移動版)進行真機測試。該手機的基本參數(shù)是:安卓版本4.4.2,系統(tǒng)版本號Emotion系統(tǒng) 2.0,RAM 2.0GB,四核 1.5 GHz處理器。

3.1.3 測試用電腦

本文使用聯(lián)想T440模擬批量客戶端測試。該電腦的基本參數(shù)是:Intel Core i5-4200U@1.6GHz,RAM 4.00GB,Windows 7專業(yè)版 SP1 x 64。

3.2 測試方案及結(jié)果

(1)將安卓程序封裝成安裝程序(.apk文件),在華為手機上安裝運行。

(2)聯(lián)想T440模擬99個預(yù)警信息接收客戶端。

(3)內(nèi)網(wǎng)測試:100個客戶端通過局域網(wǎng)同時連接上處在同一網(wǎng)絡(luò)的MessageSight,發(fā)送端測試程序向MessageSight發(fā)布一條預(yù)警信息,分別在MessageSight連接負載數(shù)為1 000、2 000、3 000、4 000、5 000個的情況下,統(tǒng)計100個客戶端接收到預(yù)警信息的時刻,計算與發(fā)送時刻之間的時間差(即耗時)并分析。

(4)外網(wǎng)測試:100個客戶端通過因特網(wǎng)同時連接上MessageSight,發(fā)送端測試程序向MessageSight發(fā)布一條預(yù)警信息,分別在MessageSight連接負載數(shù)為1 000、2 000、3 000、4 000、5 000個的情況下,統(tǒng)計100個客戶端接收到預(yù)警信息的時刻,計算與發(fā)送時刻之間的時間差(耗時)并分析。

(5)測試結(jié)果:內(nèi)網(wǎng)、外網(wǎng)測試結(jié)果分別如圖8、圖9所示。基于此次測試,可以得出以下結(jié)論:

①在兩種網(wǎng)絡(luò)環(huán)境下,平均耗時均隨著服務(wù)器連接負載量的增多而增高,但均不超過0.5 s。

②在內(nèi)網(wǎng)環(huán)境下,數(shù)據(jù)接收耗時受服務(wù)器連接負載量影響大;在外網(wǎng)環(huán)境下,數(shù)據(jù)接收耗時受網(wǎng)絡(luò)傳輸影響大。

4 結(jié)語

本文基于MQTT協(xié)議研發(fā)了安卓手機地震預(yù)警應(yīng)用。該應(yīng)用可實時接收消息代理服務(wù)器(IBM MessageSight)推送的地震預(yù)警數(shù)據(jù)和地震速報數(shù)據(jù)并進行相應(yīng)的操作。模擬測試結(jié)果顯示在網(wǎng)絡(luò)較為穩(wěn)定的情況下,接收服務(wù)器推送數(shù)據(jù)的平均耗時在0.5 s以內(nèi),可以滿足地震預(yù)警對時效性的要求。MQTT協(xié)議提供的輕量級信息傳遞、低能耗也可以滿足手機應(yīng)用在數(shù)據(jù)流量、電池續(xù)航等方面的要求。

由于硬件條件的限制,本文無法實現(xiàn)更大樣本數(shù)量的評估測試,將在后續(xù)的研究工作中進行更全面的評估測試和程序優(yōu)化。

圖8 內(nèi)網(wǎng)測試結(jié)果Fig.8 Intranet experiment results

圖9 外網(wǎng)測試結(jié)果Fig.9 External experiment results

參考文獻:

[1]王 挺,陳修吾,葉佳寧.基于自動地震速報的地震應(yīng)急基礎(chǔ)信息快速提取模塊的研究與實現(xiàn)[J].華南地震,2016,36(1):16-23.

[2]黃文輝,沈玉松,呂作勇,等.地震超快速報系統(tǒng)試運行結(jié)果評估[J].華南地震,2016,36(4):1-7.

[3]徐晶,許煒.消息中間件綜述 [J].計算機工程,2005,31(16):73-76.

猜你喜歡
速報安卓消息
一張圖看5G消息
文物表情包
每月速報
空中之家(2018年1期)2018-01-31 01:50:30
每月速報
空中之家(2017年11期)2017-11-28 05:27:41
一種基于安卓系統(tǒng)的手機側(cè)抓包分析方法
每月速報
空中之家(2016年1期)2016-05-17 04:47:41
消息
消息
消息
安卓L未至安卓M來了!安卓首泄漏M系統(tǒng)
昌乐县| 洛阳市| 江口县| 微博| 温宿县| 曲阳县| 广灵县| 南丰县| 芒康县| 白城市| 湘阴县| 特克斯县| 卓尼县| 镇平县| 玉门市| 通河县| 西峡县| 宁德市| 忻城县| 武宣县| 营山县| 屯昌县| 西峡县| 招远市| 浙江省| 河北区| 山丹县| 九龙县| 彰武县| 正安县| 德惠市| 灌阳县| 诸城市| 渭源县| 浏阳市| 扎鲁特旗| 特克斯县| 安丘市| 万安县| 东平县| 湘潭县|