薛建军,周 杰,杜景林
(南京信息工程大学 电子与信息工程学院,江苏 南京210044)
气象数据是气象信息系统 (气象信息共享平台)核心和基本组成部分,也是气象信息系统提供服务的主要内容[1]。国家气象事业发展规划 (2000-2015)指出要求扩建实时气象资料数据库,建设地市级以上的适应短期气候预测的历史资料业务数据库和气象服务数据库系统。目前,各相关单位也广泛开展了实时气象资料数据库系统的建设工作。
按时效不同,可把气象信息化资料分为实时资料和非实时资料。实时气象资料指的是通过观测或加工所得到的在较短时间内进行传输并使用的资料。这类资料的处理要求迅速、及时,主要通过计算机程序控制,把从传输系统接收的资料进行识别、分析、加工处理、质量控制、存储备份等[2-3]。传统的实时气象资料处理系统大多针对单类资料专一处理,不能同时综合处理多种实时资料。系统获得单类 (单个)资料之后进行操作,任务完后才能使程序响应其他资料处理和用户操作,不同的资料处理软件一般使用各自独立的数据库系统。因此,不同类别的资料处理需要安装配置各自对应的处理软硬件系统,部署成本比较高,占用较多的网络和数据库资源,设备利用不充分,处理效率低下,不能很好满足气象数据实时采集与处理要求。此外,多种不同大小和类型处理系统的相对独立存在不便于数据的集中控制和管理,不易为业务平台和气象数据的研究提供统一的数据支持和服务。为改善这种情况,本文设计并实现了改进型的实时气象资料处理系统。该系统采用文中提出的实时与非确定时的资料处理策略,利用多线程技术设计开发了实时气象资料综合处理业务软件,采用基于Oracle11g和SLES11专有数据库服务器进行数据存储和管理。系统实现了多种实时气象资料综合、高效加工处理以及海量气象数据高性能存储和管理,为构建良好的实时数据库系统提供了一种有效的解决方案。
实时气象资料的处理策略在本系统中至关重要,它会影响整个系统的数据处理的性能。根据实时气象资料生成的属性将其分为确定时实时资料和非确定时实时资料。确定时实时资料指的是生成、发布时间一般比较固定的资料,而非确定时实时资料的生成、发布时间就相对随机,这两类资料本文采用不同的处理策略。
确定时间生成发布资料获取时间范围确定。例如自动站报文每隔6分钟生成一次,城镇天气报文 (168小时)在每日确定的3个时刻各发布一次。处理这类资料是在规定延迟时间内定时启动程序调用相应线程进行实时处理。
非确定时间生成发布资料的获取的时间比较随机。一般取决于地域、季节、气候等外界因素,资料生成无固定时刻,例如预警信息。在处理这类资料时,系统按照预先设置间隔时间扫描文件。扫描时若有新的待处理资料则主程序给相应的处理程序分配一个线程进行处理。这类资料的处理是在一个相对随机的时间进行,因此称非确定时处理。
采取这样的策略:首先,提高系统的可用性,可以通过设置系统中定时模块满足在资料发布业务时效性规程改变情况下不影响系统的使用;其次,优化了系统资源分配,省略了定时发布资料在不必要时间段内的文件扫描,对于非确定时发布资料可以根据地域、季节、气候等特点设定某些资料的扫描频率。处理策略流程如图1所示。
应用程序启动时操作系统为程序分配内存及其他资源,内存和资源的物理分离叫做进程,是程序在计算机上的一次执行活动。进程可以包含多个线程,线程可以利用进程拥有的资源。线程要比进程小,几乎不拥有系统资源,线程调度也比进程调度的开销小。采用线程调度可以提高系统内多个程序间并发执行的效率,从而显著提高系统资源的利用率和吞吐量。由于线程所需要的内存和程序开销较小,同时多线程程序具有较高的执行效率,所以在应用程序的编写过程中经常采用多线程技术来解决相应问题[4-5]。
图1 处理策略流程
线程机制使系统具有多任务功能,用户可同时运行多个程序,每个程序中又可以同时运行多个线程[6],这样多个线程在同一进程中并发执行。在多线程程序中,当一个线程必须等待时,例如CPU在等待外部设备或网络响应时,CPU可执行其它操作,这样就大大缩短了程序执行的时间。为了提高气象资料处理效率可以采用多线程技术,即在同一个程序中同时执行多个任务,将整个任务分成几个线程,然后让操作系统同时执行,从而提高程序的执行效率[7-9]。实际应用表明,以线程为单位并行处理气象资料可以显著增加系统的吞吐量,明显缩短处理时间,有效提高CPU等计算机系统关键部件的有效使用率。多线程并行效率模型如图2[10]所示。
图2 多线程并行效率模型
实时资料处理系统与气象通信系统、气象业务平台紧密耦合。实时气象资料一般通过气象部门专用网实时获取,气象数据要为气象业务平台提供支持。资料处理业务软件运行在处理平台上,通过气象部门内网从资料服务器获得实时资料源文件,分析处理完成之后存储到专有数据库中,为气象部门提供专业的服务、产品数据支持和信息共享。系统业务统流程如图3所示。
图3 系统业务流程
主要流程:①资料获取,从资料服务器上获得资料(包括上级部门下发和本单位采集的资料);②资料处理,客户端业务软件进行文件级排错,将正确的源文件根据不同资料类别分别采用实时和非确定的处理策越;③数据存储,经过业务软件分析处理、质量控制的数据存储到服务器端专有数据库;④数据应用,系统产生的气象数据分别为各业务平台和各类用户提供多样的数据支持和服务。
系统采用客户/服务器 (C/S)结构,将任务合理分配到客户端和服务器端,可降低系统的通讯开销,可充分利用两端硬件环境的优势。系统面向相对固定的用户群,对信息安全的控制能力强[11]。气象资料处理业务软件安装在客户端运行,气象数据的存储和管理在服务器端完成,整个系统部署在气象部门专有网络环境中,局域网之间通过专门服务器提供连接和数据交换。资料服务器、处理平台、数据库服务器、业务平台都安装在气象部门内网中。实时气象资料数据不仅为气象部门各类业务平台提供数据支持外,也可以为气象部专门从事历史数据管理、数据挖掘分析等业务的门内网用户提供各类业务数据支持,同时外网的不同权限的用户还可以通过Internet浏览、检索、下载获取数据信息,享受相应的数据服务。系统网络拓扑如图4所示。
软件采取实时与非确定处理的处理策略和多线程编程技术。能够并行处理自动站报文、测报月报表、预警信息、台风报文、城镇预报、城市短期预报等常见实时报文资料,能够处理特殊定制需求的雷达、云图等资料。例如将雷达基数据处理成能与人影业务中GIS平台无缝对接的栅格数据。软件主要由系统设置、定时设置、资料处理三大模块组成。功能结构如图5所示。
3.1.1 资料处理线程设计
客户端业务软件定时实时处理测报月报表 (A报、B报)、SP和DG、城镇预报、短时天气预报这几类测报和预报产品,非确定时间实时处理预警信号、台风、自动站实时报文这几类测报产品和多普勒雷达基数据。一般情况下,创建少数几个关键线程,用它来解决某个特定的问题[12]。所以系统创建10个数据处理子线程进行操作,当程序启动时读取INI文件,完成数据库设置,定时设置,资料路径设置等初始化工作,创建相应资料处理子程序线程。多线程处理流程如图6所示。
具体步骤为:①应用程序启动后,读取INI初始化,如需更改设置,可在程序运行过程中进行设置,改变的信息写入INI;②初始化完毕后,系统创建资料处理线程;③线程进入while循环,确定时处理进入休眠—等待状态,非确定时处理线程扫描INI路径下文件进入间隔扫描—休眠状态;④定时唤醒实时处理线程,扫描INI路径下文件;⑤有新文件,分别进入各自处理函数、分析解析文件、处理入库,更新日志,修改已处理文件名;⑥如无新文件,进入历史文件操作函数,处理符合条件的历史文件;⑦程序重复上述工作;⑧终止线程,程序结束。
图4 系统网络拓扑
3.1.2 NET下多线程编程
从本质上和结构来说,.NET是一个多线程的环境。CRL内置支持多线程应用,任何.NET框架下的语言,包括Visual C#在内,实现多线程时不再需要使用Win32API,可直接使用系统类提供的对象和方。在VS2005中实现多线程非常方便,System.Threading命名空间为开发人员提供了多线程编程的类和接口,可直接用它提供的内容建立多线程应用程序。
System.Threading.Thread类可用来创建并控制线程,其定义了多种方法,其中用 Thread.Start()、Thread.Stop ()、Thread.Resume ()、Thread.Abort ()、Thread.Suspend()、Thread.Join()等方法操纵线程,还可通过Thread.Sleep ()、Thread.IsAlive ()、Thread.IsBackground()等方法设置线程状态。
System.Threading.Thread.Priority枚举了线程的优先级别,它可以控制线程是否可到CPU时间。高优先级线程通常比低优先级线程优先得到CPU时间,若不止一个高优先级线程,则操作系统将在这些线程间循环分配CPU时间。C#中线程优先级从高到低分为Highest、Above、Normal、Normal、BelowNormal、Lowest 5级[13]。
目前,实时气象资料呈现几何级倍率增长,数据在海量存储备份、查询检索效率、多粒度挖掘分析等方面提出更要高的要求。因此要对传统实时气象资料数据库系统在存储容量、吞吐率、稳定性、安全性、兼容性等关键技术指标进行优化。Oracle支持海量数据存储和管理,其最新发布的Oracle 11g能够存储十亿数量级的数据,可支撑大型的应用系统,采用了400多项新技术,在更改管理、故障诊断、性能管理、Data Guard管理、存储管理和数据仓库等方面有一些重要的创新[14]。Novell其旗下的Linux企业级解决方案产品,提供从桌面到数据中心的企业级应用计算环境安全可靠的基础,在数据中心、工作组、桌面、安全和身份、以及资源管理等提供构建企业级解决方案所有重要的技术支持和开放标准[15]。SLES系列产品已列入中央国家机关政府集中采购目录,在国内气象部门和得到广泛应用。最新发布的SLES11完善了早期版本的很多功能,新增对Mono扩展的支持对聚类产品High Availability Extension的支持,它能提供更强的虚拟化能力、高可用性集群和更加灵活的维护和支持选项。
使用Oracle大型数据库,可以满足海量气象数据的存储需求,Oracle的出色性能,极大地提升了系统的数据吞吐量。使用Linux作为服务器的操作系统,提高了整个系统的稳定性[16]。此外,业务软件综合处理的多种产品海量数据统一存储在同构的专一的数据系统中也便于管理和控制。因此采用Oracle11g和SLES11搭建系统专用数据库服务器符合高性能存储和管理技术指标和气象部门业务需求规范。
使用VS2005集成开发工具,采用C#语言编程开发业务软件。软件试运行环境为Windows XP Professional SP3,.NET Framework 2.0,CPU 为Inter (R)Core (TM)2 Duo CPU E7400,内存3.5G。数据库服务器在IBM X3800 8866-1RC上安装SLES11企业版和Oracle11g构建。系统采用C/S架构部署在100M局域网内。实际运行表明系统的各项性能良好,满足实时气象资料综合处理的性能要求和海量数据高性能存储管理的性能指标。客户端业务软件主要功能界面如图7所示,从左向右依次为资料处理界面、系统设置界面、定时设置界面。
图7 业务软件主要功能界面
本系统已投入到某市气象局实际业务应用中,有效的改进了传统的处理系统,实现了资料的高效率、集成化分析处理,实现了海量实时数据高性能存储和管理,为业务应用、气象数据挖掘等提供良好的数据支持,为构建良好实时数据库系统提供了一个行之有效的方案。同时,系统的设计思想对其他行业海量实时数据的处理也具有参考意义。针对雷达和云图数据产品过多的问题,软件的后续版本也将进一步升级,实现更多基数据的定制处理。
[1]ZHAO Fang.Building of meteorological database system [C].Information Technology in Meteorological Field Development and Application,2006:191-194(in Chinese).[赵芳.气象数据库系统的建设 [C].2006年中国气象学会信息技术在气象领域的开发应用研讨会,2006:191-194.]
[2]GAO Feng.The real-time meteorological database subsystem[C].Information Technology in Meteorological Field Development and Application,2006:196-200(in Chinese).[高峰.实时气象资料数据库分系统 [C].2006年中国气象学会信息技术在气象领域的开发应用研讨会,2006:196-200.]
[3]LIU Xu,ZU Xuemei.Analysis on the importance of meteorological information data [J].Forest Investigation Design,2010,37 (3):29-30(in Chinese).[刘旭,祖雪梅.对气象信息化资料重要性的探析 [J].林业勘查设计,2010,37(3):29-30.]
[4]GAO Shuliang,MA Yufa,YANG Dongkai.Implementation for network communication based on multithread and message[J].Computer Engineering and Design,2008,29 (2):323-325(in Chinese).[高书亮,马玉发,杨东凯.基于多线程和消息的局域网通信程序实现 [J].计算机工程与设计,2008,29 (2):323-325.]
[5]MIAO Xianglin,WANG Guanhai,SUN Chao,et al.Research and exploitation in multiply threads technology on system of supervising protective information of transformer substation[J].Computer Engineering and Design,2005,26 (3):831-835(in Chinese).[缪相林,王观海,孙超,等.多线程技术在变电站保护信息监测系统中的应用 [J].计算机工程与设计,2005,26 (3):831-835.]
[6]ZHANG Lineng,ZHANG Bin.Talk about the multi-thread programming on.Net platform [J].China Water Transport(Theory Edition),2006,4 (3):104-105(in Chinese).[张能立,张彬.谈谈在.Net下的多线程编程 [J].中国水运(理论版),2006,4 (3):104-105.]
[7]PU Chunfen.The practical application of C#background processing and multi-threading technology [J].Journal of Kunming University,2010,32 (3):82-85(in Chinese).[卜春芬.C#后台处理与多线程技术的应用 [J].昆明学院学报,2010,32 (3):82-85.]
[8]LIU Shuang,SHI Guoyou,ZHANG Yuanqiang.Design and implementation of communication software based on TCP/IP protocol and multi-threading technology [J].Computer Engi-neering and Design,2010,31 (7)1417-1420 (in Chinese).[刘爽,史国友,张远强.基于TCP/IP协议和多线程的通信软件的设计与实现 [J].计算机工程与设计,2010,31 (7):1417-1420.]
[9]YANG Kaijie,LIU Qiuju,XU Tingrong.On mutil-thread concurrent control technology for thread pool [J].Computer Applications and Software,2010,27 (1):168-170 (in Chinese).[杨开杰,刘秋菊,徐汀荣.线程池的多线程并发控制技术研究 [J].计算机应用与软件,2010,27 (1):168-170.]
[10]Josepb Albabari,Ben Albabari.C# 4.0IN A NUTSHELL the definitive reference[M].Sebastopol:O'Reilly Media Inc,2010:873-878.
[11]ZHANG Junping,ZHU Xiaodong.C/S and B/S mixed style and the application [C].First International Workshop on Education Technology and Computer Science,2009:682-686.
[12]GUO Hui.Efficiency of multi-threading [J].Computer Applications,2008,28 (12):141-143(in Chinese). [郭辉.多线程效率 [J].计算机应用,2008,28 (12):141-143.]
[13]Christian Nagel,Bill Evjen,Jay Glynn,et al.Profesional C#2008 [M].LI Ming,transl.Beijing:Tsinghua University Press,2008:483-489 (in Chinese).[Christian Nagel,Bill Evjen,Jay Glynn,等.C#高级编程 [M].李铭,译.北京:清华大学出版社,2008:483-489.]
[14]Sam R Alapati,Charles Kim.Oracle data base11g:new feature for DBAS and developers[M].ZHONG Ming,WANG Jun,transl.Beijing:Posts & Telecom Press,2009:1-5(in Chinese).[Sam R Alapati,Charles Kim.Oracle数据库管理艺术11g新特性 [M].钟鸣,王君,译.北京:人民邮电出版社,2009:1-5.]
[15]ZOU Zhen.Novell SUSE Linux enterprise officially listed in the central state organs government centralized procurement directory [J].China Government Procurement,2007,7:5-40(in Chinese).[邹震.Novell SUSE Linux Enterprise正式列入中央国家机关政府集中采购目录 [J].中国政府采购,2007,7:5-40.]
[16]HUA Liansheng,DING Xiansheng,L Gang.Meteoro-logical data sharing system based on oracle [J].Computer Application,2010,32 (2):162-164(in Chinese)[华连生,丁宪生,吕刚.基于Oracle的气象数据共享系统 [J].计算机应用,2010,32 (2):162-164.]