APP下载

高性能地震预警信息分发系统研究与开发

2020-06-08张盼盼

现代信息科技 2020年19期
关键词:预警系统客户端预警

摘  要:地震会造成巨大的人员伤亡和财产损失,对灾区群众而言,每提前一秒接收到地震预警信息,就可以减少群众财产损失。为了以最小的延时和最高性能的方式向用户提供地震预警信息,采用ZeroMQ的订阅发布模式、事件驱动模式和Protocol Buffers数据格式等软件开发技术,实现了地震预警信息发布系统总体架构设计和程序开发。预警信息分发系统解决了手机APP应用接收延时长的问题,在实时性、高性能等方面具有明显的优势。

关键词:地震预警;高性能;ZeroMQ;事件驱动;Protobuf

Abstract:Earthquakes can cause huge casualties and property losses. For people in the disaster areas,the earthquake early warning information received every second in advance can reduce the loss of peoples property. In order to provide users with earthquake early warning information with the smallest delay and the highest performance,the ZeroMQ subscription publishing model,event-driven model and Protocol Buffers data format and other software development technologies are used to realize the overall architecture design and program development of the earthquake early warning information publishing system. The early warning information distribution system solves the problem of long reception delay in mobile APP applications,and has obvious advantages in real-time and high-performance.

Keywords:earthquake early warning;high-performance;ZeroMQ;event-driven;Protobuf

0  引  言

地震預报一直是地震行业研究人员研究攻关的重要课题,一直以来没有取得重大突破。地震预警系统是世界上公认的能够有效减轻地震灾害的新技术手段之一[1,2]。

地震预警的实现思路是通过设立在地震多发区或者潜在震源区的地震台网以及实时通信传输线路对地震进行实时监测,利用地震P波传播速度大于破坏性S波(速度约快3倍)和面波,以及地震波波速远小于电磁波传播速度的原理,在尽可能短的时间内确定地震震源位置、发震时刻、地震震级等基本参数,在S波对震中造成破坏之前,启动预警,提醒人们紧急避险[3-5]。地震预警时间计算公式为:

其中,Teew为理论预警时间,Ts和Tp分别为S波和P波走时,△Td为位于预警目标区台站P波到达后,包含了仪器记录、处理和传输延时等用时。从公式可知,为了提高预警时间,必须从Ts、Tp、△Td三个参数入手,其中,在特定的地点Ts和Tp是固定值。缩短△Td时间是一种可行的方案,能够有效提高理论预警时间。

针对手机APP用户,本人设计了一套高性能解决方案,采用ZeroMQ消息中间订阅发布高性能特点,提出一种高可用低延时的地震预警信息推送架构,并且完成了地震预警信息发布系统的软件开发。同时,给需要二次开发的用户提供客户端SDK,可满足业务扩展需要,提供个性化的服务。

1  系统总体架构

地震预警是一套复杂的系统,其中的地震预警信息分发系统由服务端与客户端的SDK组成。服务端部分主要包括两大系统,地震预警系统算法服务程序和地震预警系统信息分发系统,地震预警系统算法服务程序主要是利用算法模块生成地震信息,地震预警系统信息分发完成预警信息实时推送;客户端SDK负责提供用户登录服务端的接口,并提供通过订阅方式获取服务端推送的预警信息的接口。客户端的SDK可以应用在微信公众号后台系统、Web浏览器后台服务、邮件后台服务程序,也可以根据需要集成到各服务程序中,实现定制化服务。该服务采用了分层的架构设计模式,架构层级清晰,可实现数据资源与业务逻辑的解耦。系统架构如图1所示。

地震预警系统算法服务程序由多个应用程序组成,属于多进程的应用程序。主要由P波拾取模块、震级计算模块、震源定位模块、XML结果生成模块和日志模块。

地震预警信息分发系统是地震预警系统的主要组成部分,主要负责预警消息的分发和用户的管理。地震预警信息分发系统作为TCP协议客户端,地震预警系统算法服务程序作为TCP协议服务端,地震预警信息分发系统从地震预警系统算法服务程序获取XML格式的计算结果消息,再通过一系列的逻辑处理,最终发送给订阅的用户。

从物理位置和用户类别的角度,可以将功能划分为三大部分,分别为服务端、客户端和综合管理。服务端由五个子模块构成,综合管理包含了五个子模块,客户端包含的功能模块最多,有二十个功能模块。系统功能模块如图2所示。

2  处理流程

地震预警信息分发系统启动后首先进行初始化应用程序,主要是读取配置文件、连接数据库和连接业务服务器,紧接着会启动线程1(数据接收线程)和线程2(数据处理线程)。数据接收线程会不间断的查询是否有退出命令,如果有退出消息,会退出循环,如果没有会一直处理接收到的地震预警信息,并会根据预警信息分类存入到对应的MySQL数据库表中,然后将消息PUSH到消息队列中,等待数据处理线程的操作。数据处理线程是以阻塞方式等待消息队列中的地震预警消息,如果发现队列中有数据,就会从队列中将数据取出,根据消息类型调用ZeroMQ的订阅发布模式,将消息推送到消息客户端。具体的业务处理流程如图3所示。

根据以往程序开发的经验,因内存泄漏或系统架构缺陷,不少类似的系统经过长时间运行后,会出现系统性能下降,严重的会造成系统崩溃。预警系统对稳定性和性能有极高的要求,针对其特点设计了一套测试方案,并使用Python编写了一套测试脚本。测试的方法在5台测试电脑上运行测试脚本,模拟地震预警信息发布的客户端,并根据测试需要模拟运行不同数量的客户端,而服务端程序向各个客户端发送地震预警消息,统计所有客户端接收到数据时间与发送数据时间的时间差,同时进行持续3个月的稳定性测试。测试结果如图9所示。

单台服务器接收上万台客户端的订阅,随着客户端数量的增加,耗时有所增加,但仍能够保证客户端在1秒内接收到数据。单台服务器支持的客户端数量完全可以满足设计的需要。在3个月的测试过程中,消耗的处理器和内存等系统资源占比平稳,程序运行稳定可靠。如果要向更多的用户提供预警服务,需要扩充预警后台服务器,形成服务器集群,提升服务能力。

4.4  网络环境测试

对社会公众的发布方式应该尽量多渠道,实现高覆盖、高时效的推送[10]。随着社会发展,智能手机的普及,手机具备GPS定位,移动基站定位,Wi-Fi辅助定位三种常见的定位方式。手机定位丰富,有利于预警软件的精确定位。一般情况下,用户会随身携带手机,地震发生时用户可以及时收到预警消息。只要网络正常,就可以全天候任何时间段接收预警信息[11]。从这个角度上看,手机预警实用价值比Web端的大。Android端地震预警界面如图10和图11所示。

用户的网络环境包括Wi-Fi、4G无线网络和5G无线网络环境,在Wi-Fi网络环境下,从日志系统获知,系统的平均响应时间为210毫秒,客户端可以100%接收到预警信息;在4G无线网络环境下,因网络波动较大,系统的平均响应时间为850毫秒,查阅日志记录会发现不少预警信息需要通过二次推送才能完成,某种程度上增加了系统的响应时间。

5  结  论

本文基于ZeroMQ中间件、事件驱动和Protobuf数据格式化等编程方法或技巧,根据业务需要,设计并实现了核心逻辑处理流程。经过大量测试,与已有的地震预警信息系统相比,在数据处理速度方面可以提高1秒以上,并发用户数提高了25%。在网络传输方面也有较大的优势。

该地震预警信息分发系统具有如下特点:(1)实时性,利用事件驱动和Protobuf数据格式化技术,提高了预警消息分发的速度,预警信息发布的时效性得以保证。(2)灵活性,信息发布系统发布的消息跟消息类型无关,比较容易将此消息扩展,并应用在实时性要求较高的应用场景中,如消防报警系统。(3)高性能,本系统在单台服务器中可以接收上万个用户的订阅,并能够及时发布预警消息。经过综合测试验证,因本系统的设计方案与消息类型无关,仅需将数据采集模块替换成其他业务场景,本系统就可以分发其他对时效性要求高的业务消息,因此本系统不仅仅局限在地震预警方面,对消防、气象等应急领域具备一定的借鉴价值。

系统也存在一些不足,如测试场景单一、客户端APP操作界面不够友好、缺少统一的后台管理界面,此类不足会在今后继续完善和优化。

参考文献:

[1] FESTA G,PICOZZI M,CARUSO A,et al. Performance of Earthquake Early Warning Systems during the 2016–2017 Mw 5-6.5 Central Italy Sequence [J]. Seismological research letters,2018,89(1):1-12.

[2] 蔡寅,张明,赵瑞,等.地震预警信息快速发布系统研究 [J].震灾防御技术,2019,14(1):247-258.

[3] 马強.地震预警技术研究及应用 [D].哈尔滨:中国地震局工程力学研究所,2008.

[4] 殷海涛,刘希强,李杰,等.现今地震预警技术及其在国内发展状况的探讨 [J].中国地震,2012,28(1):1-9.

[5] 张红才,金星,李军,等.地震预警系统研究及应用进展 [J].地球物理学进展,2013,28(2):706-719.

[6] 蒲凤平,陈建政.基于ZeroMQ的分布式系统 [J].电子测试,2012(7):24-29+33.

[7] 殷昊,沈奇威,王纯.Protocol Buffer在Android企业云通讯录中的应用 [J].电信科学,2012,28(9):148-151.

[8] 史栋杰.五种快速序列化框架的性能比较 [J].电脑知识与技术,2010,6(34):9710-9711+9722.

[9] 李纪欣,王康,周立发,等.Google Protobuf在Linux Socket通讯中的应用 [J].电脑开发与应用,2013,26(4):1-5.

[10] 张红才,金星.地震预警信息可靠度研究 [J].地震学报,2014,36(4):615-630+2.

[11] 陈会忠,侯燕燕,何加勇,等.日本地震预警系统日趋完善 [J].国际地震动态,2011(4):10-15.

作者简介:张盼盼(1988—),男,汉族,江苏涟水人,工程师,硕士,主要研究方向:地震信息网络、地震预警技术等。

猜你喜欢

预警系统客户端预警
超级秀场 大风预警
学校肺结核流行趋势控制及预警系统监测分析
金融系统中的早期预警信号及其统计物理性质
俄太空预警系统探测到64枚导弹发射
虚拟专用网络访问保护机制研究
新闻客户端差异化发展策略
交通流量增长下的空管安全预警系统研究
卷烟工业企业产品质量预警机制的建立
浅析IEEE 802.1x及其客户端软件