吴凌杰 陈吉锋 孟 真 严俊峰
(中国杭州 310013 浙江省地震局)
2004 年,全国地震速报信息共享服务系统(EQIM)正式投入使用,国家测震台网与各省级测震台网之间的地震速报信息得以快速通报、汇集和共享,为提升地震信息公共服务能力奠定了基础(杨陈等,2009)。为了及时报送震情信息和接收震情反馈,国家和各省市地震局均有震情值班人员24 小时在岗值班。在此基础上,大部分省地震台网中心研发了震情值班管理系统,如:蔡杏辉等(2020)设计的福建测震台网震情值班信息管理系统,实现了地震数据查询、报表产出和系统管理等功能;张孟怡等(2014)设计的天津市地震局震情值班信息自动化处理系统实现了地震报警和系统管理等功能。在“互联网+”的大背景下,微信公众平台、微博等为地震信息公共服务开辟了新的领域,如龚自禄等(2018)设计的湖北省震情速报微信公众平台,通过微信公众号产出权威地震信息,同时具有灾情上报等交互功能,为防震减灾工作带来便利。
浙江省属弱震少震区,但该省人口密度大,且邻近地区作为相对多震区,地震频率高,强度大,在一定程度上对其省内生产生活产生了较大的间接影响。地震事件发生后,政府、企业和社会公众对地震三要素(发震时间、经纬度、震级)、灾情等重要信息关注度高(马志江等,2006;李光科等,2020)。如何快速准确地发布震情信息并高效可靠地接收震情反馈关系到地震应急预案启动、余震趋势研判、后续抗震救灾等一系列工作的有序开展(徐胜等,2014)。因此,根据浙江省地震局震情值班的实际工作需求和当下网络安全的严峻形势(学峰,2020;戴丽金等,2021),基于Java 语言,开发震情值守信息服务平台。本平台借鉴了上述震情信息发布和值班系统建设经验,集成震情值班、钉钉机器人、微信公众平台、安全管理和系统管理等功能,拓宽震情信息发布和接收渠道,保障和优化震情值班工作模式,保证了地震数据的安全性。
社交行业领头产品微信、钉钉几乎占据了中国市场,成为各级政府和有关部门开展公共服务和社会管理的重要平台,其庞大的用户量及高效的信息发布手段,已然被各行业作为扩大影响力的重要宣传手段之一,自然也是地震部门拓展地震服务、信息发布和传播渠道的重要手段(贾宁等,2016;龚自禄等,2017;刘仲达等,2017)。基于上述情况,结合24 小时震情值班制度,设计震情值守信息服务平台,旨在为政府和社会公众提供及时、准确的地震信息。该平台将接收的地震信息,基于不同的发布策略分发至各接收端软件,由各接收端软件主动订阅筛选和获取所需地震信息,实现历史地震资料查询、灾情上报、信息定制化等多种类地震信息服务,为政府应急决策、灾情快速评估等提供紧急信息服务。
该平台采用B/S 架构,由数据层、业务层、数据处理层、应用层4 部分构成。项目的逻辑结构将数据存储、业务逻辑和服务应用分离,使其各部分结构清晰,降低了系统耦合性,增强了系统的扩展性和可维护性。该平台基于Spring Boot 框架建立,通过混合加密API 算法进行数据加密交互,Web 浏览器访问即可进行使用,用户体验好且数据安全性高。平台架构见图1。
图1 平台架构Fig.1 Platform architecture
数据层由EQIM 地震速报数据库和平台数据库2 部分组成,封装了各类数据的操作方法。数据层通过EQIM 数据库获取地震信息,将实时震情信息传输至业务层,进行震情判定、分发、传输和图表生成等操作。震情值守信息服务平台数据库部署在Docker 容器中,可实现数据库的快速部署,可利用率和可移植性较高。数据层从该平台数据库获取业务数据传输至业务层,用于平台整体业务运行。
业务层主要对EQIM 地震速报数据库获取的地震信息和平台业务数据进行处理。对获取的地震信息进行数据脱敏,基于震情值守、钉钉和微信用户的业务规则处理震情信息,并对获取的地震信息进行入库管理。同时,业务层具备接收用户灾情反馈信息入库和展示功能,可为后续应急抢险和抗震救灾提供决策依据。业务层的构建有利于快速产出震情服务产品和接收震情反馈信息,可多层次、多方面、多角度地拓展地震信息化服务思路和改进地震信息化服务方法。
数据处理层主要针对,在当下复杂的网络安全环境中,使用应用程序接口(Application Programming Interface,API)导致的用户账号密码被截获、表单数据被篡改和业务数据泄露等问题(崔喜萌等,2020)。数据处理层的作用是,对使用API 和应用层交互的数据。使用AES 和RSA 两种加密算法(雷敏等,2014;冷飞等,2017),并结合API 运行机制,进行加/解密运算,算法流程见图2。具体流程为:当应用层和业务层进行业务数据交互时,发送方根据AES 密钥规则生成明文密钥key,将明文P 和key 使用AES 算法生成密文C,使用接收方RSA 公钥对key 进行加密生成密文密钥keys,将keys 和P 通过网络传输给接收方;接收方收到后使用其RSA 私钥将keys 还原为key,并将密文C 还原为明文P。本算法根据B/S 架构和API 的运行机制,在应用层与业务层建立通信时,将各自的RSA 公钥互换,并在每次传输数据时随机生成新的明文密钥key,可有效保证数据传输的准确性和安全性。数据处理层在严峻的网络安全形势下,为平台数据安全提供了有力保障。
图2 数据处理层算法Fig.2 Algorithm of data processing
应用层主要提供专业震情服务、社会震情服务和震情值班服务。专业震情服务主要依托短信、传真、钉钉和B/S 架构数据服务等手段,主要包括提供震情速报信息、震情反馈和辅助决策等服务内容。其主要服务对象为行业内用户、应急管理部门和政府部门。社会震情服务主要依托钉钉、微信公众号和B/S 架构数据服务等手段,以按需提供震情速报信息和震情反馈为主要服务内容,以社会大众为主要服务对象。震情值班服务主要依托B/S架构数据服务,可实现地震报告的自动处置,提高了震情值守的工作效率,保障了震情报告的准确性,优化了震情值班的工作模式。
震情值守信息服务平台主要采用Java、html5、JavaScript语言和Spring Boot框架进行开发。平台被部署在Docker 容器中,整体部署方便且安全。该平台主要由震情值守模块、钉钉模块、微信公众号模块、安全管理模块和系统管理模块组成,各模块功能见图3。
图3 系统模块Fig.3 System module
震情值守模块主要为震情值班工作人员设计,旨在提高值班工作效率和震情报告的准确性。本模块下设4 个功能,分别为值班管理、通讯录管理、震情推送和值班大屏。值班管理主要功能为值班人员排班、值班次数统计以及值班绩效管理和值班信息提醒等。通讯录功能主要是将地震部门和应急部门人员信息分类保存,依托短信平台实现值班短信提醒和震情信息等各类信息的短信推送,其管理功能是对人员信息的增删查改和分类操作。震情推送功能包括震情简报和短信推送。平台会监听EQIM 地震速报数据库,当有地震事件发生时进行自动判断,当震情位置和震级达到相应条件时(根据震情值守手册规定),自动向通讯录里的相应人员发送震情短信,同时播放报警信息通知值班工作人员。如需对地震事件进行上报操作,工作人员只需点击地震事件就会自动生成震情简报,人工核对后即可快速上报,操作完成后平台将自动保存数据,以方便查阅。报送流程见图4。
图4 地震信息报送流程Fig.4 Flow chart of earthquake information reporting
值班大屏功能整合了html5、css、JavaScript 语言以及Ajax 和GIS 引擎等技术,具有震情信息展示、地震信息服务等功能,供震情值班人员使用。使用值班账号登录平台,自动跳转至值班大屏界面。值班大屏展示内容有:最新地震震中位置与浙江省各大城市的直线距离、各渠道震情信息推送情况、基于GIS 引擎技术构建的3D 地图展示的最新地震信息、值班人员排班表、地震信息列表、情短信列表和震情简报列表。值班大屏将最新震情信息通过可视化方式进行展示,并通过精确数据展示最新地震对浙江省各城市的影响,提高了震情值班工作效率,有利于地震应急工作的有序开展。值班大屏样式见图5。
图5 值班大屏界面Fig.5 On-duty screen interface
微信公众号是腾讯公司为政府、企业等推出的资讯和服务平台,凭借庞大的微信用户数量和超强的用户粘性,目前已经成为一种主流的微信互动和营销方式。公众平台的开发接入是提供服务的基础。开发者与微信公众平台接口对接后,按照微信公众平台开发规范,根据自身业务需求进行开发。微信公众号模块主要功能有震情接收设置、震情推送、震情反馈、历史地震查询和震情年月报推送。震情接收设置有接收震级、接收地区和夜间免打扰功能。免打扰功能开启后,夜间23 时至次日8 时发生的地震事件统一在8 时后补推。用户可自行设定地区、震情和接收时间。平台监听到地震事件后,按照公众平台关注用户的接收设置推送震情信息。用户也可在有震感时选择震情反馈功能进行上报,上报内容包括手机号、时间、位置、震动感受、现场图片和文字描述。若情况紧急,平台将通过内置百度地图自动获取用户位置。用户提交上报内容后,后台将提示震情值班人员查看处理。历史地震查询功能允许用户查询历史地震相关信息。震情年月报推送功能,即系统在每月1日、每年1 月1 日以模板消息向用户推送上月和去年的国内、国外各级地震统计数据。
钉钉作为智能化办公平台,目前被政府、学校和企业广泛使用。利用钉钉推送震情信息,拓宽了地震信息化服务的渠道。钉钉模块以钉钉机器人为基础,向用户提供震情信息推送、反馈和地震年月报服务。平台通过Webhook 地址与钉钉机器人通信,只需在平台增加用户提交的Webhook 地址,即可向用户提供震情信息服务。震情信息以模板消息为基础,通过百度地图静态API,将震中位置图嵌入模板消息,直观展示地震位置。
为应对当前复杂的网络环境,平台在使用混合加密API 算法保证数据传输安全的基础上,增加了安全管理模块。该模块功能包括实时环境监控、实时日志显示/记录和Druid 数据源监控。实时环境监控主要包括系统硬件环境以及JVM 运行内存监控,实时日志显示/记录是将平台后台运行产出的日志记录到服务器的同时实时显示到页面中。2个功能均由Websocket 协议实现,日志功能还整合了Logback 日志模块。Druid 是由阿里开源的一个高效数据查询系统,集合了开源和商业数据库连接池的优秀特性,同时加入日志监控,可以较好地监控数据池连接和SQL 语句的执行情况,并将监控数据可视化。安全模块针对平台进行了全方位监控,同时将运维数据可视化处理,为平台运维提供便利。
系统管理模块包括系统设置、用户管理和权限管理。系统设置包括是否开启API 加密功能设置、系统公告设置、系统初始密码设置等功能。系统公告使用UEditor 富文本编辑器组件编辑震情值守规章制度。用户管理主要管理平台登录用户信息,具有软删除、限制IP 登录和账号过期设置等功能。权限管理基于Spring Security,将用户分为主管理员、运维管理员和震情值班员3 类,主管理员具有平台所有管理权限,运维管理员仅有平台运维权限,震情值班员登录系统后页面跳转至值班大屏。用户权限由数据库动态加载,而非代码固定。
结合24 小时震情值班制度,基于B/S 架构和Spring Boot 框架,开发震情值守信息服务平台,通过微信、钉钉、传真、短信等方式,为地震部门、应急管理等部门和社会公众快速提供地震服务相关产品的同时,提供信息个性化定制、灾情上报、历史地震数据查询/展示等功能,满足不同群体的需求,进一步拓宽了地震信息的发布手段、渠道和服务覆盖范围,提升了震情服务能力和水平。随着平台的逐步推广,微信和钉钉用户量都将不断增加,今后需对平台并发处理数据能力做进一步提升,以保证用户接收和反馈震情信息的时效性。