历经了“九五”、“十五”地震观测网络化、数字化的发展,我国在地震监测方面形成了以数据为中心的“国家-省局-台站(市县)”三级树状地震观测业务体系,涵盖测震、强震动、地球物理场等多学科领域。以测震观测为例,目前全国共有测震台站1107个,每年产生原始数据约12TB,历史数据已超100TB。随着国家地震烈度速报与预警工程和地震信息化工程的不断推进,预计在3到5年内,台站数量将达到15000个左右,数据量将爆炸式增长。随着台站规模不断扩充,实时波形数据对硬件、网络、时效性、可靠性的要求更高,历史数据对存储能力的需求更大,这些对于传统观测系统将是一个巨大挑战(郭凯等,2017a)。
物联网、云计算、大数据等现代信息技术在气象(沈文海,2017)、船舶(宋全记,2020)、通信(何卫华等,2020)、石油(孙晓萍,2020)、电子商务(唐立等,2020)、城市建设(王洁瑜等,2020)等诸多领域应用十分广泛,地震行业也不乏大数据技术应用案例(刘凡鸣,2015;郭凯等,2017b)。本文应用Hadoop技术、分布式汇聚和管理台站实时波形数据,实现测震观测数据的云端汇集和数据汇集流程扁平化,为未来数万级台站数据实时汇聚和统一调度管理提供参考。
1 系统设计 1.1 数据源分析测震观测数据的实时汇集采用国家标准的miniseed格式传输,各省地震局实时汇集本省管辖范围内的地震台站数据,并实时转发至中国地震台网中心,地震波形数据采用seed格式进行归档和服务。其中,seed文件长度不固定,信息量大,主要包括基础信息和波形数据,基础信息相对固定,波形数据更新频繁。为提高效率,地震工作者将seed文件解析成仅存有基础信息的dataless文件和存有简要基础信息及时间序列波形数据的miniseed数据包。本文的数据对象为miniseed格式的实时波形数据。1个miniseed数据包长度为512字节,其中前48字节为固定头端,之后16字节为可变头端,这2部分标识了台站、台网、通道等基础信息,其余448字节为真正的实时波形数据①。
① 高景春, 2009.中国数字地震观测网络项目-中国数字测震台网数据规范.内部资料.
实时波形数据有两大特点:一是上下文时序相关性,作为时间序列波形数据,单纯某一时间点的数值是无意义的,只有与前后数据相关联,才具有研究价值;二是数据具有连续性,数据一旦开始接收,除非人为干预或遇到网络、机器故障,否则不会自行中断。
1.2 数据通信协议传统地震实时波形数据汇聚数据通讯基于Netseis/IP协议①,JOPENS 6.0系统的数据通讯基于Http协议②;国际地震数据通讯使用seedlink协议(陈智勇,2017)。因此本系统需适配Netseis/IP、Http及seedlink三种通信协议。
② 广东省地震监测中心, 2016.数字地震台网中心数据处理软件系统JOPENS6.0用户手册.
1.3 数据汇聚本系统在数据汇聚方式上与传统方式有所不同。地震实时波形数据传统汇聚方式为:数据通过台站观测仪器,首先汇聚到省级中心JOPENS流服务器,之后汇聚到国家中心。而理想的云端数据汇聚方式为:数据从台站观测仪器直接汇聚到国家中心,形成全局全量的地震数据池和统一数据源,提供在线实时服务。本系统一定程度地改变了传统“台站-省级-国家中心”的三级架构,从省级中心的JOPENS流服务器接入,通过TCP/IP协议(包括Netseis/IP或Http协议),汇聚到国家中心,同时从互联网通过seedlink协议获取全球交换的地震数据。
1.4 高可靠策略设计与离散型数据不同,地震实时波形数据具有上下文时序相关性和连续性的特点。因此,当一个数据流任务被分配到一个数据接入节点时,缺省停止方式仅为人工干预。由于异常导致单点故障时,数据流将由任务分配节点重新分配给其他数据接入节点。常见异常包括网络中断异常、服务器中断异常、数据源异常等。对此,本系统设计了网络中断重连机制和实时流数据双链路接入机制,确保地震实时流数据的高可靠接入。
2 系统实现 2.1 技术栈本系统采用前后端分离的架构,前端基于JavaScript开发,通过使用当前主流的vue框架+element UI+Echarts构建,快速实现表单构建、查询以及地图、图表、散点信息等展示,如台站及事件检索、数据接入、资源统计等。后端基于Java开发,使用nginx+springboot+zookeeper+redis等技术实现。前后端通过restful接口和websocket接口完成数据交互。
2.2 系统架构本系统总体架构核心模块可分为web管理后端、执行节点、注册中心,提供执行节点扩缩容、执行任务增删改、启停、下发、接入任务高可用、状态监控等功能。
管理后端通过rpc与任务执行节点进行信息交互(包含状态查询、启停等),提供基本信息的查询,例如接入任务注册、接入任务查看、台站基础信息等。系统通过管理后端,直接为前端界面提供服务。
任务执行节点为分布在不同物理机器上的jvm进程,通过对现有Netseis/IP、seedlink、Http等协议的流服务器进行协议适配,实现实时波形数据流的接入汇聚。执行节点支持对任务进行失败重试、状态监控、日志记录、命令交互等操作。
注册中心基于zookeeper框架,通过专属API进行交互,实现实时流数据双链路主备机制选择、执行节点信息注册、消息通知等功能。
2.3 通讯协议适配针对Netseis/IP、Http及seedlink 3种不同的通信协议,采用面向接口的编程思想,以工厂设计模式开发不同类型的适配器,实现start、stop等对数据流的启停命令控制,提高系统的灵活扩展能力。通过抽取3种协议的共性,对外暴露共性接口及隐藏各协议特性的方式,做到用户无感连接。用户无需深入了解各协议特征,由系统自行选择协议适配。
2.4 分布式调度框架基于Java语言,开发分布式调度框架。并在此框架下,针对不同协议的适配器进一步进行包装,使其以插件的形式集成到框架中运行并拥有框架的能力,包括分布式运行、动态切换节点等。插件以Web界面的方式暴露其相关配置,提供数据流启动、停止、查看详情等功能。用户通过Web界面配置实时数据流,无需关注后台实现逻辑。后台接收到配置信息及执行命令后,返回相应的执行结果。
2.5 数据汇聚网关基于Hadoop框架,开发分布式数据汇聚网关,实现统一调度。首先,每个接入的数据流被数据汇聚网关封装成一个接入任务,并进行唯一编码,提交到统一调度模块。调度任务分配节点通过识别实时数据流的唯一编码,将数据流分配到不同的数据接入节点进行数据处理。数据接入后,通过kafka消息处理机制,对不同消费者提供实时流服务,同时进行数据解码和提取工作,获取元数据信息,生成分布式文件系统的目录、全文检索的数据索引和分布式数据库的key值,方便后续数据检索和存储,并将生成的文件存储到相应的存储区域(图 1)。
实时数据在通信传输时,可能因网络不稳定、网络断线等网络故障导致socket断开连接。本系统采用网络中断重连机制和调度分配策略,设置了动态重试策略,实现传输链路的自动恢复,提高了数据传输的可靠性。
当某节点的通信链路出现网络故障时,该节点向服务端建立连接,默认尝试三次重新连接(重试次数、重试间隔时间可配置),三次仍不能完成重连时,则判定该节点与通信链路断开。此时调度模块认为该节点不能与服务端进行通信,遂将当前任务分配至集群其他节点。重复上述动作仍不能实现连接者,则认为是主流服务器出现故障,此时执行流服务器主备链路切换(图 2)。
利用zookeeper服务发现功能和分布式消息总线的群组机制,动态实现流服务器主备链路切换,以保证实时数据流接入的连续性,提高数据接入的安全性和稳定性。同时在网络发生拥塞时,可保障实时流数据接入的高可靠性。
主备链路均需在注册中心进行注册,获取服务序号,并添加watch。正常情况下,主备链路同时接收数据,主链路数据进入消息队列,备链路数据仅缓存一段时间的数据,并不断被刷新。当主链路出现故障断开时,注册中心通知备链路,通过变化服务序号,原备链路自动切换为主链路进行工作,并将缓存的数据存入消息队列,原主链路自动切换为备链路。由此,实现主备链路自动切换(图 3)。
图 4为台站检索界面展示,中间地图上的点表示目前已接入的台站,在地图左上方选择目标台网和台站进行查询,即可在下方台站列表中显示查询结果,可对台站波形数据分通道进行波形查看、质量查看和波形下载,亦可批量波形下载。为方便选择台站,在地图右上角设置了矩形选择、圈选、保持选择和清除4种模式,地图上黄色点表示选中的台站,其信息显示在地图下方台站列表中。
图 5为事件检索界面展示,地图上每个红点代表 1个地震事件,震级越大,红点越大。可在左上方通过地震事件名称、震级、发震时间等信息,快速定位到目标地震事件。在左侧地震列表中选择1个地震事件,则在地图上通过黄色五星标识,当鼠标放到五星内部,出现写明地震基本信息的弹窗。
图 6展示了实时数据流的接入过程及台站数量、当日接入数据量、接入总量、实时接入平均速率等信息,右侧展示了当日台站接入实时排名。
图 7展示了集群资源的使用情况,包括集群节点、CPU、内存、磁盘、分布式文件存储、分布式数据库、分布式消息队列、大数据引擎及应用组件的基本使用情况。用户可一目了然地掌握当前平台的运行情况。
本文基于分布式架构,设计和实现了地震实时波形数据汇聚系统。在功能上,本系统实现了地震实时波形数据从流服务器到国家中心的数据汇聚功能和可视化展示,满足地震数据汇聚的业务需求。在数据质量控制方面,本系统通过设计网络中断重连机制和实时流数据双链路接入机制,一定程度解决了网络故障和服务器故障带来的数据丢失问题,通过三副本冗余存储,保证数据的完整性。在系统效能方面,本系统在台站扩展、数据可靠、数据完整等方面表现良好,为台站规模不断扩大带来的海量地震实时波形数据汇聚问题提供了解决方案。
地震实时波形数据汇聚系统已实现地震实时波形数据的接入功能,初步实现了地震数据云端汇集的原型框架。在地震观测数据云端汇集方面,既需要从地震观测数据产出的源头(地震台站)直接汇集实时数据,又需要适配不同观测类型、不同传输协议的地震观测仪器,并对数以万计的观测仪器数据的汇集进行实时调度和管理,这也是未来地震台站数据云端汇集工程化的难点和重点。
陈智勇, 2017, 基于SeedLink协议的数据流服务系统, 科学技术创新, (35): 66-67. |
郭凯、黄金刚、彭克银等, 2017a, 大数据技术在海量测震数据中的研究应用, 地震研究, 40(2): 317-323. |
郭凯、彭克银、雷蕾, 2017b, 测震波形数据存储和管理系统设计与实现, 中国科技资源导刊, 49(6): 76-80. |
何卫华、王宏, 2020, 基于大数据分析技术的光纤通信系统安全态势预测, 现代电子技术, 43(7): 6-9. |
刘凡鸣.基于Hadoop平台的地震波形数据处理方法研究.硕士学位论文.石家庄: 河北师范大学, 2015.
|
沈文海, 2017, 云时代下的气象信息化与管理, 181-298,
北京: 电子工业出版社.
|
宋全记, 2020, 基于物联网和云平台的船舶远程智能安全报警系统, 微型电脑应用, 36(4): 153-156. |
孙晓萍, 2020, Hadoop分布式框架下石油行业非结构化数据管理实现策略探究, 中国管理信息化, 23(7): 63-64. |
唐立、李六杏、王启亮等, 2020, 基于Spark的EIDA-BP算法对农作物产量的预测, 邵阳学院学报(自然科学版), 17(2): 88-95. |
王洁瑜、杨婉宁、赵江峰等, 2020, 基于Hadoop+BP神经网络的海绵城市大数据平台设计研究, 山西建筑, 46(8): 196-198. |