基于MUSIC接口的CIMISS数据环境故障应急切换设计与实现
2018-04-02徐拥军何文春倪学磊王琦郭晓军
■ 徐拥军 何文春 倪学磊 王琦 郭晓军
从气象数据服务的层面,分析了全国综合气象信息共享系统(CIMISS)应急切换需求和场景,根据数据环境故障的范围,设计了系统设备级故障切换和功能级故障切换的应急流程,实现了应急切换的功能模块并集成到气象数据统一服务接口(MUSIC)软件中。
为满足对海量气象数据管理和服务的需求,国家气象信息中心设计开发了全国综合气象信息共享系统(China Integrated Meteorological Information Sharing System,CIMISS)。目前该系统运行于国家气象信息中心和31个省级气象数据中心,集气象数据收集、加工处理、存储管理和共享服务于一体,管理国家级或省级数据中心全部可收集的国内外气象资料和业务产品,为气象部门及相关行业用户快捷便利地获取气象数据提供数据使用环境。
由于服务器硬件设备老旧以及CIMISS系统模块繁多,每个环节都会出现一定的故障隐患。当故障出现后,如何保障本地核心业务系统的稳定运行,是CIMISS数据环境能否直接支撑业务系统的关键。备份系统的建设是进行故障恢复和服务切换的最佳方式,国家级以前的MDSS(气象资料存储检索系统)和现有的CIMISS数据环境都建设了备份系统。省级数据环境没有建设备份系统,且需要支撑省、市、地县三级业务,应用量多,数据访问频繁,存在极大的系统故障隐患,业务影响范围大。省级CIMISS数据环境面临故障时,如何依据现有软硬件条件,建立应急手段和实施措施,保障省级核心业务系统的数据服务成为了急需解决的问题。
本文提出了基于气象数据统一服务接口的数据服务应急切换方案,对应急切换的需求和场景进行了分析,并在此基础上设计了快速切换流程,编写了切换功能模块,集成到了MUSIC服务接口软件中,为CIMISS数据环境故障时提供了一种有效的应急保障方式。
1 全国综合气象信息共享系统及接口介绍
CIMISS平台依托全国气象宽带网络系统,连接国家级中心和全国31个省级中心,以实现国家级和各省级之间的互联互通,保障气象信息传输、共享的时效性和可靠性,气象通信网络布局见图1。CIMISS平台各级中心包括核心业务区、宽带网双向DMZ区(demilitarized zone,隔离区)、互联网单向DMZ区、行业单向DMZ区4 个网络区域,其中,核心业务区由业务网(LAN)、管理私网、IB网和存域网(SAN)组成。国家级接入速率450 Mbps,区域中心级20 Mbps,省级16 Mbps。CIMISS采用网状结构,国家级中心与31个省级中心之间采用MPLS VPN(MPLS为多协议标记转换)方式相连,各省级网络系统在各自现有网络系统架构基础上进行合理部署以满足信息共享平台建设的需要。
图1 气象通信网络布局图
气象数据统一服务接口(简称MUSIC)属于数据共享服务系统,是基于CIMISS数据环境,面向气象业务和科研,提供全国统一、标准、丰富的数据访问服务和应用编程接口(API),为国、省、地、县各级应用系统提供唯一权威的数据接入服务,包括:站点资料的检索、统计,格点资料的解析、裁剪和抽取,文件产品的查询、下载,台站信息的检索等。通过服务接口,将前端应用与后端复杂、异构的数据管理技术分离,解决应用系统需要根据后端数据组织方式甚至格式的变化而频繁升级改造的问题。详细功能结构见图2。
图2 MUSIC功能结构图
MUSIC由服务端和客户端开发包组成,服务端提供多样服务方式,支持REST(Representational State Transfer)、WebServices(是指用于架构Web service的整体技术框架,而Web Service则是使用Web Services技术而创建的应用实例)、RPC(Remote Procedure Call Protocol,远程过程调用协议)等多种服务协议,包含数据缓存、RPC服务容器、Tomcat(Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目)服务以及JVM(Java Virtual Machine,Java虚拟机)等组件组成,主要用JAVA语言开发,实现数据检索、统计计算、格点解析等服务,利用Tomcat容器实现REST、WebServices服务,利用高效ZeroC开源服务框架,实现多语言版本开发包RPC数据传输交换协议。客户端支持Linux、Windows等多种操作系统平台,支持JAVA、C#、C/C++、PHP、Python、Fortran等多种开发语言,技术架构见图3。
图3 MUSIC技术架构
CIMISS通过MUSIC提供用户访问数据,每个节点(指国家级或某省,全网共32个节点)有4台MUSIC服务器,通过负载均衡设备发布一个服务地址(SLB)。负载均衡采用路由模式进行部署,所有流量都经过负载均衡,可均衡任何下行流量,并尽量小的影响原有网络结构。
2 应急切换需求与应用场景分析
2.1 切换需求
CIMISS系统庞大,环节流程多,虽然在各个系统设计时都进行了高可用设计,但是业务运行中,难免会出现各种异常,导致业务系统中断。为了减少用户对数据使用的影响,在数据服务时,需要考虑进行服务应急切换。MUSIC建立了“国省接口元数据审核同步”流程,保障每类资料、每个接口,面向全国的用户都是唯一的、统一的。因此,当一个节点的CIMISS出现故障时,基于MUSIC相应的配置策略,可将本地数据请求切换到备份的省份进行数据服务,保障数据服务不中断。
2.2 适用场景
应急切换方案是面向应用的,即当本地CIMISS出现故障时,保障本地的核心应用不受影响,不承担本地数据的恢复等功能。
本地的服务请求切换到备份节点(一般为区域中心或国家级中心)后,节点之间网络负载变大,备份节点的服务压力也会增大。因此,切换方案只适用于CIMISS短期故障的应急切换,不能作为长期的业务一直处于应急服务的状态。
2.3 前提条件
省级CIMISS一般选择区域中心或国家级CIMISS作为备份节点。备份的前提条件如下:
1)应急备份节点拥有本地节点应用所需的数据。梳理本地为支撑应用要备份的数据清单,将本省的常规资料、本地特色数据,通过省际共享等系统,同步到备份节点的CIMISS进行管理。
2)应急备份节点的接口元数据与本地相同。使用MUSIC“国省接口元数据审核同步”流程,保证备份节点与本地节点的接口一致。
3)保障本地MUSIC系统涉及的节点之间的网络互通。
4)应急备份节点能在异地节点应急请求时开通用户访问许可。
5)应急备份节点在服务能力、网络上,保障异地应急请求时的访问需求。
2.4 切换方式选择
基于MUSIC的应急服务切换根据系统故障范围,可进行两种方式的切换:设备级切换和功能级切换,切换方式见图4,箭头方向表示数据流向。
图4 应急服务切换方式
设备级切换是当本地数据环境出现模块或硬件故障,导致CIMISS数据环境服务中断,此时,需要将本地所有的应用完全切换到应急备份节点,本地CIMISS系统不再进行数据服务。比如当本地节点基础库、支撑库出现宕机或MUSIC服务器宕机时,可临时采用整体切换,保障关键气象应用的运行。该方式将给应急备份节点造成数据资源与系统资源的双重压力,不宜长时间进行。
功能级切换是根据资料使用需求,当本地某类资料出现异常或者本地未存储该类资料,但业务急需,可通过选择对应的资料切换到备份节点或存储该类数据的节点进行数据服务。使用功能级切换时本地MUSIC服务必须正常运行,从备份节点获取数据以后,数据的封装服务都在本地进行。
3 应急切换流程设计
3.1 流程设计
当操作员进行应急切换时,系统根据配置信息将数据服务切换到提供应急备份的服务节点。应用或用户的数据请求通过MUSIC负载均衡路由到提供应急服务的节点,数据通过负载均衡返回给请求的应用或用户。设备级切换通过MUSIC负载均衡的配置信息实现服务路由切换,功能级切换通过改变MUSIC服务数据源配置进行请求切换。应急备份服务节点通过MUSIC负载均衡接收请求,MUSIC服务读取配置信息并判断请求账户的类别,如果为应急账户,给予开通应急访问权限,进入数据服务功能模块,将封装的数据返回。为了便于识别应急节点访问的用户,MUSIC对API账户的命名设计了强制性约定,须以省级编报中心的代码开头(CCCC码,见标准QX/T 129-2011)。应急切换流程见图5。
图5 应急切换流程示意图
3.1.1设备级切换
设备级切换流程比较简单,预先在本地MUSIC负载均衡服务上配置应急备份节点的MUSIC服务地址。当开展切换服务时,登陆本地MUSIC负载均衡管理界面,关闭本地4个MUSIC系统节点的服务,并启用应急备份节点的MUSIC服务,本地的所有数据服务由异地服务节点提供。切换过程中,应急备份节点的MUSIC服务后台需要开通对应急请求节点所有API账户的访问权限。为了提高切换时效,切换配置准备在前期进行。切换后数据流程见图6(注:虚框表示应急备份端MUSIC部署结构)。
图6 设备级切换流程
3.1.2功能级切换
功能级切换是将特定的资料切换到应急备份节点提供服务。资料切换方式有多种备选方案,比如直接切换到异地数据库和切换到异地MUSIC服务。虽然CIMISS统一了数据存储规范,但并不约束数据库存储技术,每个数据节点可采用不同的数据库,从而采用异地数据库切换导致切换流程复杂,需要了解每个节点的存储技术;同时异地数据库切换不便于进行数据访问权限控制和用户行为限制,造成提供备份节点的数据库安全风险。加之,数值模式格点解析服务需要读取本地存储文件,异地数据库切换不能拷贝文件到本地。综上分析,本文采用基于异地MUSIC服务开展按资料切换方案,应急切换数据服务流程如图7。
图7 应急切换数据服务流程
当本地MUSIC接收用户请求后,进行相关验证,判断资料服务提供方,如果为本地资料,则进入本地服务流程中。如果为异地服务,则根据接收到的请求参数,转换为异地服务请求(REST),请求异地MUSIC数据服务。应急节点MUSIC服务接收请求后,根据配置,判断是否具有资料检索应急访问权限,如果有,则进行资料获取,并将结果利用protostuff(一个开源的、基于Java语言的序列化库)工具进行高效序列化,然后通过gzip工具(gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序)快速压缩,利用http协议将结果返回给请求端MUSIC节点。本地接收数据后,进行gzip解压,然后反序列化为MUSIC数据结构,并进行数据格式化,然后返回给用户。
由于应急省份网络带宽等限制,需要对结果数据进行必要的处理后进行传输。数据处理包含数据的序列化与数据压缩,由于Protostuff工具具有较好的序列化与反序列化效率,并且向下版本兼容,项目中采用其作为数据交换格式处理工具。通过对相同的对象多种序列化与反序列化工具的总耗时、序列化结果大小进行测试,测试结果表明Protostuff具有较高的时效。
当应急服务为服务产品(文件格式)检索时,用户通过上述流程获取到远程文件存储地址,然后根据文件存储的URL地址请求下载。为了区分本地文件服务与应急文件服务,利用不同的端口号进行服务区分,比如本地采用80端口,应急服务文件下载采用8010端口。本地MUSIC负载均衡服务端接收到下载请求后,进行端口判断,如果为应急切换后的文件下载服务,则进行路由转换,通过MUSIC负载均衡向远程应急备份节点发起下载服务,数据通过本地MUSIC负载均衡返回给用户。文件下载应急服务流程如图8。
图8 文件下载应急切换服务流程
当本地节点资料恢复正常,能提供数据服务后,应及时切回到本地服务,以免给应急备份节点造成服务压力。
3.2 元数据设计
元数据是关于数据的结构化的数据,不仅对信息对象进行描述,还能够描述资源的使用环境、管理、加工、保存和使用等方面的情况。应急切换元数据主要是对切换过程中需要用到的数据进行描述和结构设计,主要包含API账号元数据设计、切换配置元数据设计和切换资料元数据设计三部分。
3.2.1API账户兀数据设计
MUSIC是CIMISS数据服务接入唯一方式,必须通过申请API账户,并通过审核后才能使用。API账户设计时根据相关规范采用省级标准CCCC码作为前缀,用于判断API账户所属于的数据中心,便于进行用户行为记录分析。API账户元数据设计表见表1。
3.2.2MUSIC应急切换配置兀数据设计
应急切换配置元数据表包含应急切换请求表和应急切换响应配置表。应急切换请求表用来可进行应急切换远程备份节点的信息,包含数据服务切换到备份中心的节点ID,节点名称,服务提供地址等,详细设计见表2。应急切换响应配置表记录了本中心提供给请求切换数据中心的信息,包含是否提供应急数据服务的“绿色通道”,文件下载服务的地址信息等,结构设计见表3。
表1 账户信息表结构
表2 应急切换请求配置
表3 应急切换响应配置
3.2.3切换资料兀数据设计
记录气象资料服务的应急备份数据中心位置,MUSIC服务将数据服务导向该资料设定的数据中心,可实现不同的资料切换到不同的数据中心提高应急服务,结构设计见表4。
表4 应急切换资料配置
4 基于MUSIC的应急切换模块实现
4.1 应急切换服务模块框架
根据应急切换方案和切换流程,在MUSIC中添加应急切换服务模块,该模块包含以下几个方面的组件:应急切换人工操作模块,应急请求切换模块,应急账户识别模块,应急请求数据封装模块,应急请求数据解析模块,具体框架图见图9。
图9 应急切换模块框架图
应急切换操作。提供应急切换各种信息的配置操作,包含添加、编辑、删除应急服务节点信息;配置选择需要开展应急切换服务的资料清单,执行应急切换操作;开通应急切换用户申请等功能。
应急数据请求功能。主要用于读取应急切换配置信息,识别应用应急请求,并将应用对本地的数据服务转换为异地应急请求服务功能。
应急账户识别功能。当接收到账户请求后,读取配置信息,识别用户的权限,当用户为开通访问权限应急用户时,给予数据服务权限。
数据封装功能。应急账户访问获取结果后,需要进行数据对象的封装,包含序列化、压缩、生成校验码等步骤,以便数据能快速、安全、无损的传输到请求端。采用高效的Protostuff工具进行数据对象序列化,压缩比高的gzip工具进行数据压缩,从而节约网络带宽和提供传输效率。
数据解析功能。当应急请求接收到数据结果后,需要对封装的数据进行解析,包含数据校验码识别、解压、反序列化为请求对象。解析后的数据返回给请求应用端,实现整个数据的服务。
4.2 应急切换配置服务界面
应急切换配置服务界面主要分为两部分:负载均衡服务器配置,MUSIC服务切换配置。负载均衡服务器提供的配置界面,主要用于进行设备级应急切换操作。
基于MUSIC服务的切换界面包含三部分内容:备份切换准备界面,切换到备份省级节点和访问许可设置。
1)备份切换准备界面,主要为应急备份节点选取和提供应急访问等信息设置,为应急时快速切换做前期准备。选择备份节点,可添加、删除我的备份节点信息。提供应急访问节点,可添加删除本地为异地节点提供访问的配置信息。
2)切换到备份省级节点界面,主要用于将本地服务的资料切换到备份节点上去,使用异地节点提供数据服务。提供资料的切换异地和从异地切回功能,支持多个资料一起切换。
3)访问许可设置界面,用于开通异地节点应急请求服务,只有开通免认证后,应急请求才能正常访问数据服务。
4.3 服务运行效果
应急切换模块集成在气象数据统一服务接口中,在国家级和31个省级节点进行部署。在网络连通的情况下,切换在MUSIC的服务端进行,实现一键式切换,对于用户完全透明。选取MUSIC数据服务的三种主要场景,以山西为例,对比本地数据服务与应急切换到国家级后数据服务效果,测试结果数据见表5。测试应用服务器到本地与应急节点MUSIC服务的网络延时,其中TIME值越大表示网络延时高,数据传输路径长耗时多,对比见表6。
表5 应急切换前后数据检索性能对比
表6 网络延时对比
测试结果表明,应急切换可实现CIMISS存储数据的异地应急服务,由于国家级与省级节点网络带宽限制,数据延时是本地的200多倍,导致切换后的检索性能具有比较大的差距,由于MUSIC在数据传输过程中采用了高效数据压缩技术,有效提高了检索数据量的传输效率,服务性能基本在可控范围内。
5 讨论与展望
为了保障CIMISS省级数据环境支撑应用服务的稳定性和可靠性,本文提出了省级节点故障时服务应急切换的方案,根据节点内系统故障的范围,设计了设备级故障切换和功能级故障切换两种流程,并在此基础上,升级了气象数据统一服务接口软件,集成了应急切换服务模块,具体结论如下:
1)介绍了MUSIC的整体结构,阐述了利用MUSIC实现应急切换的充要条件,并对应急切换使用的场景和前提条件进行了描述。应急切换只提供短期数据应急服务,不承担数据恢复功能,应急省份一般选择拥有本省数据的区域中心或国家级CIMISS作为应急切换的数据源,并且保障两地网络互通,应急切换时通知提供应急服务方开通访问许可。
2)对应急切换的流程进行了详细的、利于操作的设计。包含整体切换和按功能级切换的操作方式,前期准备以及采取的技术手段等。 整体切换主要利用两地的负载均衡进行服务路由转换实现MUSIC服务端的整体切换,按功能级切换主要利用MUSIC服务接口的REST服务能力,对切换的资料进行远程访问,并进行本地格式封装,提供本地用户请求服务。
3)根据设计的切换流程方案,采用protostuff数据序列化和反序列化和gzip高压缩技术对数据进行封装,然后利用http协议进行数据高效交换,实现了应急切换服务软件模块,并集成到MUSIC软件中。利用省级负载均衡设备的配置界面,实现了CIMISS设备级故障时一键式服务切换功能,并开发了一套气象资料在线切换页面,实现了CIMISS系统功能故障时的快速切换。
4)应急切换服务测试结果表明,在目前的网络带宽条件限制下,CIMISS故障省份的数据服务性能有很大的降低,不能支撑大并发的数据请求,后续需要从网络带宽、数据压缩等多方面进行优化。
目前,切换流程不仅可用于CIMISS系统故障时进行应急切换,也应用在其他省级未存储的数据服务业务中,比如灾害管理数据的省级服务,A省通过MUSIC的在线资料切换功能,实现省、市、地县三级业务系统通过省级MUSIC提供国家级存储的灾害数据服务。随着云技术的发展,气象部门正在开展基于云架构的气象专有云设计和建设,基于MUSIC数据服务切换的设计与实现,在未来气象专有云国省数据服务中将发挥更大的作用,使得气象数据存储更集约、服务更高效。
深入阅读
熊安元, 赵芳, 王颖, 等, 2015. 全国综合气象信息共享系统的设计与实现. 应用气象学报, 26(4): 500-512.
李坤, 王百杰, 2009. 服务器集群负载均衡技术研究及算法比较.计算机与现代化, (8): 7-10.
高攀, 林荔, 2008. 负载均衡技术的三种实现方法. 福建气象, (6):45-47.
聂晓旭, 于凤芹, 钦道理, 2015. 基于Protobuf的数据传输协议. 计算机系统应用, (8): 112-116.