关于异步多线程快速提取CIMISS数据入库方法的研究与应用
2018-05-16黎颖智史彩霞刘世学
气象研究与应用 2018年1期
黎颖智,史彩霞,刘世学
(广西气象服务中心,广西 南宁 530022)
1 引言
全国综合气象信息共享系统(CIMISS)是中国气象局建设的集气象资料采集、加工处理、存储管理和共享服务等功能于一身的气象信息业务平台。能够为国、省、地、县各级气象科研部门提供规范统一高效的气象数据。虽然气象数据统一访问接口(MUSIC),为各级应用系统提供了包括实时观测数据、各业务单位产品数据、和整编历史数据在内的基础数据的接入服务[1-4]。但是由于部分科研项目或专业服务所需要数据格式的不同或者所需要的数据需通过进行基础数据再加工,CIMISS提供的数据有时候并不能直接拿来使用。另外,由于CIMISS资料部署在国家和省级数据中心,地县级部门在使用数据时也可能会到受网络异常因素的影响。因此,如何在不影响用户体验的前提下,采用异步多线程的方法快速从CIMISS中读取数据并加工录入到本地数据库中便是本文需要解决的问题。
2 技术线路
气象数据统一服务接口(MUSIC)提供多种不同的服务方式,包括客户端调用服务、web service、REST服务和脚本服务。提供多种语言的客户端开发包,包括 C#、Java、C/C++、Fortran、PHP、Python 等。本文以REST服务和C#为例用于开发研究[1-4]。REST服务用于从CIMISS中提取数据到本机内存对象中,而C#5.0新特性async和await进行异步操作实现主线程与方法线程的并行执行,解决提取CIMISS数据时出现的主界面无响应问题,批量数据的快速入库则采用SqlBulkCopy来实现。
2.1 多线程
如图1所示,线程的生命周期分为新建、就绪、运行、阻塞、死亡五个阶段。……
登录APP查看全文
