基金项目:中国地震局原应急救援司“云南省地震局地震应急指挥系统改造试点项目”资助.
(Yunnan Earthquake Agency,Kunming 650224,Yunnan,China)
cloud environment; earthquake hazard assessment; Yunnan earthquake emergency and command; system optimization
备注
基金项目:中国地震局原应急救援司“云南省地震局地震应急指挥系统改造试点项目”资助.
基于云南地震应急指挥技术软件系统现状与使用中发现的问题,结合新的应急需求与应用技术,对其在弹性资源调用、空间算法、多线程并行运算等多个方面进行了优化,设计了云环境下的云南地震应急指挥技术软件系统,并对新旧软件系统的运行指标进行了对比分析。结果 表明:采用了微服务架构的新软件系统,在运算速度、资源使用效率、服务形式、运维难度等多方面均优于现用软件系统,更加适应目前云南省内地震应急的新需求。
Based on the current situation and problems in the application of Yunnan Emergency Command Technology Software System,combined with new emergency needs and new application technology,we designed the software system of Yunnan Earthquake Emergency Command Technology in cloud environment,which is optimized in many aspects,such as flexible resource invocation,spatial algorithm,multi-threaded parallel operation,etc. We compared and analyzed the operation indexes of new and old software systems,and found that the new software system based on micro-service architecture is superior to the existing software system in terms of operation speed,resource utilization efficiency,service form and operation and maintenance difficulty,which is more suitable for the new needs of earthquake emergency response in Yunnan Province.
引言
地震应急的损失评估与决策工作是地震应急救援的重要基础之一,它以应急基础数据为支撑,对地震可能造成的人员伤亡、经济损失等进行科学的预估,为地震应急救援决策提供支持(聂高众等,2011)。随着地震应急指挥体系开放性、共享性和互联程度的不断提高,应急快速评估工作逐渐成为各级地震应急技术平台体系应用、运维的核心业务。各省、自治区、直辖市地震局在应急指挥技术系统改造、新软件研发方面也进行了大量尝试。多数省局依托“十五”系统建设成果,通过硬件更替、模型替换、平台软件升级等方式进行了“十五”系统优化; 个别省局则以“十五”系统建设、使用经验为基础,重新研发了本地化的指挥系统,其研发重点主要集中在性能提升、评估模型本地化与丰富产出资料方面,并针对私有云进行了部署尝试。
本文就云南省地震局应急指挥技术系统在多年地震应急中的使用经验与本地化研究开发中发现的问题和不足进行分析探讨,结合新时期应急需求的变化以及当前新技术发展,从软件工程的角度,提出优化改进的云计算环境下的云南地震应急指挥技术软件系统(以下简称软件系统)设计方案。
1 应急指挥技术软件系统现状
云南省地震局应急指挥技术系统初建于2005年,依托中国地震局“十五”项目完成建设(以下简称“十五”系统)。“十五”系统主要基于C/S体系结构完成各功能的程序设计,依托B/S体系结构进行统一化的界面集成,使用数据服务总线技术完成各功能的总体应用集成,通过Oracle、ArcGIS等平台软件完成矢量数据存储与计算等功能(帅向华等,2009a,b)。
云南省地震局不断以需求为引领、问题为导向、技术发展为基础,经多年的本地化研究,在“十五”系统基础上,进行了多次系统重构与功能更新,发展出多个地震应急指挥技术系统的组成软件,以相对独立分散的多个软件逐步替代“十五”系统的多功能综合软件。这些组成软件在构架上相互独立,各自使用独立的数据库,完成相对独立的软件功能(曹彦波等,2015),其目的是使各功能软件可以独立部署互不影响,降低单个功能软件的更新维护难度,并满足极端情况下的特定功能需求。
云南省地震局目前使用的地震应急指挥技术系统(以下简称“现用系统”)包括评估软件4个,信息服务软件3个,市县协同平台1个。各软件间利用类外挂程序实现系统集成,如图1所示,可实现地震自动触发、应急资料自动化推送等功能,并历经云南地区近十次5.0级以上地震应急检验,在地震应急支撑材料产出、应急资料分发共享、数据信息移动推动等方面发挥了较大作用(李敏等,2018b)。
2 应急新需求及现有问题
随着互联网大潮的兴起与云计算技术的发展,使得海量信息数据的汇集、存储与集中处理成为可能,受历史破坏性地震多发与严峻震情形势的影响,云南省地震局、政府及民众提出第一时间获得震情、灾情、预评估等信息的需求。同时,随着行业信息化进程的不断深入,其他部门的软件、数据融合需求,也给对外的信息、数据加工处理、服务能力与服务方式提出了新的需求(李敏等,2017; 吴艳梅等,2018)。这些需求集中表现在科技支撑材料的超快速产出、实时数据互联网交换、差异化信息推送服务、软件系统功能快速灵活更新、降低运维部署难度等几个重要方面。
在2018年云南2次5.0级以上地震应急过程中,云南省地震局专家及省政府应急办、消防等部门均在震后10 min内,向云南省地震局应急指挥中心(软件系统实际使用单位)提出了地震快速评估结果、专题图件、震情灾情等信息的共享要求,并且对所需信息内容的表达形式、表述方式、传输方法提出了各具特点的要求,详见表1。
软件使用者在软件运行维护难度、系统稳定性、界面交互友好性等方面提出了新的要求。现用系统的集成方法虽在表象上解决了诸如单体功能更新、迁移部署、任务分发等方面的问题,但软件系统构架本质上并未发生改变,软件间的
功能互动、数据交换、消息通信、状态控制、数据库更新等核心问题仍然存在,运算效率较低,且在运行稳定性、可靠性以及后续软件系统的扩展、外部通信等方面仍存在较大问题,无法满足新的应急需求。
3 云环境下的云南地震应急指挥技术软件系统设计
3.1 云平台选择相对较简单的实体服务器与虚拟服务器间的选择,云平台的选择需要综合考虑云平台运维成本、资源使用灵活性、原生资源丰富性、网络、云平台稳定性、数据安全性等因素,其中,云平台安全性可粗分为机房安全、云平台安全、软件系统安全3个层面。相较企事业单位,互联网服务提供商在机房与云平台安全性方面的软件、硬件、技术投入更高,其保障能力也较高(软件系统安全性在于本身设计,与部署平台无关),在不考虑公有云提供商监守自盗的情况下,公有云安全性较高(吴翰清,2012)。在当前技术环境下,可供选择的云平台较多,除去阿里、腾讯、百度等商用公有云平台外,地震系统各家单位也都建设了私有云资源,云南省地震局于2016年初完成了私有云建设工作(表2)。就本软件系统设计而言,云南省地震局自有云平台或地震系统其他私有云平台均可提供基础硬件服务,同时利用第三方互联网地图资源、大数据展示平台服务接入,可达到完整功能部署要求,但在计算效率、数据交换灵活性、后期功能扩充等方面较公有云平台部署低。
经相关测试,综合考虑数据安全、评估结果敏感性等问题,云环境下的云南地震应急指挥技术软件系统计划在中国地震台网中心云平台进行主体功能部署,在阿里云平台进行全功能测试、演示平台部署(本文仅就阿里云平台部署方案进行讨论)。
3.2 系统构架基于在地震应急工作中积累的软件使用与多次软件研发经验,对表1所示问题需求进行分析,云环境下的云南地震应急指挥技术软件系统在设计时需要综合考虑异构数据的调用和存储、基础平台软件的选择与应用、软件功能独立更新部署、部署网络环境构建等要素(李艳鹏,杨彪,2017)。同时,为保证整个软件系统的运行稳定性及运行维护成本,还应对软件系统部署硬件平台及容灾备份迁移机制进行合理规划。基于上述考虑,参考前期部分软件的云迁移试验结果,软件系统设计使用B/S结构完成主体功能界面,公有云平台(阿里云)为硬件支撑平台,互联网为部署应用网段,开放式服务接口为功能实现形式。整体软件系统技术构架设计分为5个层面,分别为用户层、应用服务层、服务接口层和网络层,如图2所示。
3.3 数据读写与存储设计数据是软件系统运行、运算的基础,数据合理的规划管理、存储读写、索引查询是高效、准确计算相关信息的重要保障。在本软件系统的设计中,数据可分为应急基础地理数据、系统状态监控数据、软件系统运行参数数据、非结构化资料数据等4类,并以存储方式将4类数据划分为结构化数据存储与非结构化对象存储2种,分别利用阿里云RDS(关系型云数据库)、OSS(对象存储)资源进行数据存储及容灾备份(图3)。
为进一步保证上述数据的读写安全性、访问一致性及效率,设计数据服务接口组,提供对RDS,OSS中全量数据资源的读取、写入、转化、检索等数据操作功能,隔离软件、接口对数据库及数据存储的直接访问,并对数据库设置读写分离、优化查询语句,确保数据服务接口组运行效率。
针对OSS特殊的访问流程(私有文件系统鉴权)、计费方式(公网下载流量计费)及存储结构(扁平化文件结构),独立规划对象存储索引表与存储对象外链表,并设计资料数据上传、下载接口,进一步隔离资料数据的实际存储位置信息,避免暴露阿里云资源访问授权秘钥,造成底层数据安全威胁。
设立本地离线容灾备份软件系统,每月进行数据库全量备份,每3天进行数据库增量备份。
图2 云环境下的云南地震应急指挥技术软件系统构架图
Fig.2 Architecture of Yunnan Earthquake Emergency Command Technology Software System under cloud environment3.4 功能设计综合考虑软件系统运行效能、内部数据交换速率、功能运算时效、软件系统设计时间指标等运行指标因素,以及运行维护成本、安装部署难度、软件功能外部共享、单体功能独立更新等持续性维护因素后,明确软件功能采用SaaS(Software-as-a-Service,软件即服务)模式进行分体设计,将原系统中的功能模块进行颗粒化拆分,将拆分后的功能独立实现,并以服务接口形式部署对用户开放,形成服务接口层。拆分的颗粒度以可完整提供最小运算功能为参考,如将原完整系统功能地震初评估拆分为地震评估触发、分模型烈度圈计算、人口信息参数化查询服务、行政区信息参数化查询服务、分模型的人口死亡、受伤计算服务等数10个可独立访问服务接口。
鉴于拆分后的服务接口数量较多,在部署时,根据服务接口的服务内容、数据需求、数据交换频率等因素,将接口划分为9个服务组,并根据服务组的运算资源需求划分服务器进行部署。
为保证用户便捷地使用软件系统功能,系统在应用服务层提供7个主体功能模块,7个模块均使用上述服务接口,利用工作流方式进行差异化组合完成。
3.5 用户层设计系统中设计用户权限及分组管理体系,以此实现软件系统从用户界面、功能管理、数据访问到最小功能服务接口的权限管理。为满足不同技术能力及不同类型的用户使用需求,软件系统设计提供门户式主页、主体功能调用、全功能服务接口调用、在线工作流组织调试等多种软件系统使用方式。如为外部程序开发者或信息化融合需求提供全功能细化接口,为地震应急指挥领导提供模板式辅助决策文档,为其他地震部门提供主体功能远程调用服务等。
3.6 网络规划网络层为软件系统中各服务接口、功能模块间通讯的通道,合理进行网络划分与网络隔离,对软件系统的数据交换速率、数据交换安全性、功能模块分布式部署有着重要作用。软件系统使用阿里云专有网络(阿里云内网)进行数据通信,使用专有网络安全策略进行网络规划管理。该系统共计划分3个网段进行网络隔离,并根据部署内容间的依存关系,使用安全策略进行网段内设备、端口隔离(表3)。其中除数据库、数据库操作接口、鉴权接口等重要资源需使用访问中转外,其他资源均可直接进行互联网访问调用。
表3 云环境下的云南地震应急指挥技术软件系统网络层的网段划分表
Tab.3 Network segment of network layer of Yunnan Earthquake Emergency Command Technology Software System under cloud environment3.7 云计算资源组织设计参照前期云迁移试验结果,结合近几次地震应急评估运算量、并发量统计结果,设计软件系统共使用常驻服务器(ECS)4台,容灾备份服务器1台,弹性伸缩资源池1套,云数据库1台/套(含热备),对象存储资源1套,互联网固定IP地址1个,详见表4。
4 算法及数据分析优化
4.1 算法分析及优化系统算法:经过分析,现用系统在运行中将评估流程分为7个部分,并用串行运算方式依次调用7个运算部分与其内部模型算法,其运算时间代价累计,导致整体运算效率较低(李敏等,2018a)。新软件系统构架中已采用颗粒化功能服务接口方式对功能模块进行拆分与分布式部署,并在功能实现中将原串行运算方式改为并行运算方式。在此基础上,设计使用消息队列对相同类型运算任务进行订阅、分发、消费,进一步在单机单任务多线程并行运算的基础上扩展为多机多任务多线程并行运算。
空间算法:软件系统设计主要运算功能脱离GIS平台软件,基于计算机图形学基础算法定制软件系统中实际使用的空间算法,摆脱庞大平台中非必须功能引起的计算资源占用与运算效率问题。根据软件系统各模型算法中实际空间计算需求,以点面关系、点线关系、球面角公式等基础算法(Robert,2012),完成新软件系统中常用的包含、相切、
缓冲等5种空间算法,并将算法中大量的数据筛选操作从软件层下放至数据库层,实际使用中将原用时90 s以上的模型计算过程压缩到30 s以内。
4.2 数据组织分析及优化为适应以上算法的优化,原数据结构及存储方式必须进行相应的调整。首先,改变原矢量基础地理数据通过中间件进行数据存储的方式,将原面、线、点矢量对象以节点坐标数据方式直接入库存储,使用唯一编码与属性数据进行关联; 其次,使用公里网格方式对现有行政区划、经济、人口等数据进行赋值预处理,在提高运算精度的基础上,避免因过于细致的空间运算对整体软件系统造成影响; 再次,对滑坡风险、人口密度、坡度、地表形态等数据进行公里网格统计预处理,将原空间运算统计过程直接变更为查询统计过程,进一步减少空间运算的时间消耗。统一经过公里网格预处理的数据可以采用单表多列方式进行数据存储,将原本需多次空间运算的计算过程,缩减为一次空间运算,简化系统运算流程,提高运行稳定性。
5 系统性能验证
基于上述技术构架与硬件环境,采用优化后的算法及数据,完成了云环境下的云南地震应急指挥技术软件系统的设计。使用新的软件系统与现有系统对20个模拟地震进行对比测试,主要记录计算时长、产出报告数量、信息服务形成等几个主要评价指标。模拟地震震中位于云南省典型
地震多发区域,震级均设定为8.0级。由表5可以看出,新的软件系统在几个主要评价指标项上均优于现有系统,更加适应当前地震应急中的各类新需求。
6 结论与讨论
6.1 结论云环境下的云南地震应急指挥技术软件系统设计使用了微服务架构,采用工作流方式进行服务组织,降低了运维与后期功能改进、扩展难度; 根据实际计算需求重新编写了相关空间算法,提升了数据运算效率,并丰富了成果产出数量、质量,新增了多种形式的对外信息和数据服务。同时硬件层面使用了公有云计算资源与弹性伸缩资源池,在提高硬件资源使用效率的基础上缩短了80%的地震评估用时。综上,新软件系统在运算速度、资源使用效率、服务形式、运维难度等多方面均优于现用软件系统,更加适应目前云南省内地震应急的新需求。
6.2 推广应用云环境下的云南地震应急指挥技术软件系统成果更加接近于开放Store平台,软件功能由平台提供的服务组合而成,无需考虑服务本身的部署位置、实现方式。在推广应用上,各部署节点仅需针对自身实际需求向平台添加本地数据服务,使用平台中的服务进行合理组织即可完成相关功能; 在实现特定功能时也仅需对该功能服务进行代码编写,而不是进行一个完整的软件开发。该模式的推广有助于将原自建自用的烟囱式应用,改变为共建共用共享式应用,更加有助于地震应急技术系统的发展。
6.3 互联网数据接入探讨为适应新技术、新需求、新形势下的地震应急工作需要,解决地震应急期及后续抗震救灾工作中的信息交换与数据处理的要求,云南省地震局在多年应用研究的基础上,对地震应急评估软件系统进行了新的构架并设计实现,其较高的运算效率与运行稳定性极大地增强了云南省地震局的地震应急能力。
随着互联网、大数据技术的发展,各类动态热力数据的覆盖范围、数据精度将进一步提高,由此衍生出的基于动态热力数据的人口、经济评估模型研究也将逐步深入,目前使用的静态基础地理、人口、经济数据与基于回归模型的评估算法将会被逐步替代,研究、选择、应用这些新的数据与算法将是我们下一步工作重点与发展方向。
- 曹彦波,李兆隆,李永强,等.2015.云南地震应急快速评估模型本地化集成研究[J].地震研究,38(1):148-154.
- 李敏,吴艳梅,李永强.2017.云视频技术在省级地震应急指挥系统中的应用探讨[J].地震研究,40(4):655-660.
- 李敏,许瑞杰,李永强.2018a.云南地震应急快速评估系统优化研究[J].震灾防御技术,13(1):177-186.
- 李敏,郑川,李永强.2018b.云南省省、市、县级地震应急信息协同技术系统的设计与实现[J].地震研究,41(1):141-147.
- 李艳鹏,杨彪.2017.分布式服务架构:原理、设计与实战[M].北京:电子工业出版社.
- 聂高众,安基文,邓砚.2011.地震应急评估与决策指标体系的构建[J].震灾防御技术,6(2):146-155.
- 帅向华,姜立新,刘钦,等.2009a.地震应急指挥技术系统设计与实现[J].测绘通报,(7):38-41.
- 帅向华,杨天青,马朝晖,等.2009b.国家地震应急指挥技术系统[M].北京:地震出版社.
- 吴翰清.2012.白帽子讲Web安全[M].北京:电子工业出版社.
- 吴艳梅,李敏,李兆隆,等.2018.基于智能手机的云南地震应急推送系统应用概述[J].中国应急救援,(4):38-42.
- Robert S.2012.算法[M].北京:人民邮电出版社.