面向核电分析软件耦合计算的实时数据库服务平台的设计与实现

2016-09-08 10:30莫文涛刘陆光张蕊峰
计算机应用与软件 2016年8期
关键词:类库核电服务平台

刘 硕 莫文涛 刘陆光 张蕊峰 肖 爽

(国家核电技术有限公司北京软件技术中心 北京 102209) (国家能源核电软件重点实验室 北京 102209)



面向核电分析软件耦合计算的实时数据库服务平台的设计与实现

刘硕莫文涛刘陆光张蕊峰肖爽

(国家核电技术有限公司北京软件技术中心北京 102209) (国家能源核电软件重点实验室北京 102209)

针对核电分析软件耦合计算过程中遇到的数据交换效率低下和数据格式不统一等技术难点,提出一种利用网络通信和内存存储技术,将实时数据库作为数据交换中心,并设计实现统一的访问接口,应用于多个计算程序之间耦合计算过程的解决方案,从而实现了计算程序之间的高速数据交互及简单通用的数据库访问接口。该成果目前已经应用于核电厂全范围仿真环境中,为多个仿真计算程序提供数据共享服务,其高效性和通用性完全满足仿真环境的性能和功能需求。同时,其可扩展的特性也支持在不同编程语言开发的计算程序耦合过程中进行应用。

实时数据库耦合计算高速存储

0 引 言

目前,核电分析软件自主化正在我国稳步的推进,但是一些功能模块的计算分析程序仍然需要引用国外已有的成熟软件进行计算。例如核电厂仿真程序,在模拟核电厂运行环境的时候,需要根据一定的时间间隔,实时地控制多个计算程序进行计算,同时在每个时间间隔的同步点上,会有大量的数据进行交互。为了保证运行仿真环境的实时性,必须要求数据交换效率非常高,原有的以文件存储形式作为数据交换的手段很难满足需求。因此如何控制这类计算程序的运行和实现计算程序之间的数据共享,成为了核电分析软件开发人员必须要面对的问题。

针对上述核电分析软件开发中所面临的问题,需要找到一个可行的解决方法,从而使各个计算程序得以有效的控制和数据资源共享。

1 核电分析软件耦合计算面临的困难

1.1Fortran语言的局限性

核电分析软件一般采用Fortran语言进行软件开发,原因在于Fortran语言具备强大的计算能力,它可以解决很多数值问题和非数值问题。因此,在数值计算、科学和工程技术领域,具有强大的优势。但是,由于Fortran语言本身的局限性,并不支持面向网络通信的API接口,无法通过消息机制传递数据信息。

1.2计算流程复杂

核电分析软件与一般应用软件存在着本质区别,它是通过建立数学模型和数学方程表达式进行方程式的数值求解。针对不同的求解模块采用多种数学模型进行建模,通过求解多元高次方程得到计算结果,其中还包括迭代等计算过程,使得这类软件具有求解多种数学模型的能力。在计算过程中,每次迭代计算之前都需要对计算内核中的计算变量进行初始化。这些变量的数值一般来自用户预先的设置、其他计算程序的计算结果或者计算程序上一次迭代的计算结果。特别是对于其他计算程序的计算结果,往往很难将数据引入计算内核中。

1.3数据交换效率低下

核电分析软件耦合计算的交互方式通常使用文本文件或二进制文件进行数据交互,但这种交互方式需要进行耦合计算的程序具有数据输出和数据解析的业务功能。这就要求该类程序在交互的过程中需要遵守统一的数据格式约定。同时,在数据读写过程中会占用大量的时间和存储空间,交互效率非常低下。

2 实时数据库的设计

2.1架构设计

实时数据库是一种服务程序,主要由服务平台和通信函数类库两部分组成,如图1所示。服务平台主要负责接收计算程序发送的请求信息。然后,对请求信息进行解析并创建线程单独完成指派的任务,包括对内存数据资源进行数据的增、删、改、查以及检查等操作。最终,将操作结果信息进行响应反馈至计算程序。通信函数类库主要负责为计算程序提供访问服务平台的接口,将计算程序执行过程中的实时数据封装打包,并发送至服务平台[1]。

图1 系统架构示意图

2.2数据结构设计

实时数据库采用了“命名数据”的方案,即数据库中每个记录点都有一个全局唯一的名称以及相关的数据信息,如表1所示。数据处理模块根据记录点名称找到该数据所有的对应地址,并执行相应的访问操作(读或写)。为了提高访问效率,记录点名称与数据地址的映射关系采用Hash表进行保存,并通过不同的前缀进行区分。通常计算程序发送的请求信息只会更新记录点的实时值,而记录点的其他数据信息则由服务平台进行更新。

表1 实时数据库命名数据列表

2.3服务平台设计

服务平台作为实时数据库的核心引擎,负责计算程序发送的请求信息的监听、处理和响应。服务平台包括连接监听、连接管理、消息处理、任务处理、数据处理和变量注册等功能模块。实时数据库的工作流程如图2所示。

图2 实时数据库工作流程示意图

在数据存储方式方面,该服务平台采用内存作为存储介质,以BYTE数组的方式向内存中连续的存储一组数据。同时,利用HASHTABLE存储某一组数据的索引和长度。如图3所示,采用上述存储方式的原因是,一般的数组存储方式是将数据逐个存储到数组开辟的内存空间中,这种方式虽然灵活、快捷,但是到达毫秒级数据访问时,就无法满足性能需求;而采用BYTE数组存储方式,可以使用HASHTABLE快速查找需要更新的数据索引,然后一次性访问该索引所对应的数据信息。假设我们要更新要素A到要素F这6个值,在使用一般数组存储的时候,需要根据索引更新6次。但是,在使用BYTE数组方式时,首先定义一个要更新的数据列表并取得索引编号,然后根据索引更新这6个数据对应的数值。当同一时刻数据访问量达到数以万次时,所述方式基本上没有延迟。如果是非相邻的情况,则需要更新若干次,比如更新数据A、数据B、数据E、数据F,则需要更新两次,因为AB是相邻的,EF是相邻的,但是他们在内存中的存储位置并不相邻。

图3 BYTE数组存储方式示意图

2.4通信函数类库设计

通信函数类库为计算程序提供了访问服务平台的接口,如表2所示。

表2 通信函数类库接口定义表

续表2

3 实时数据库服务平台的实现

3.1服务平台

服务平台使用C#语言实现,运行在.net Framework框架上。利用Socket网络编程、多线程、XML解析等技术,将计算程序发送的请求信息经过收包、组包、解析消息、任务判定、任务创建、任务执行等一系列流程后,最终将结果反馈至计算程序[2-6]。

该平台的内部存在C#类型的Dictionary定义的哈希表,用于记录耦合计算过程中的中间数据。通过全局唯一的“记录点名称”作为唯一标识,并通过增加不同的前缀来区分该“记录点名称”相关的其他属性。同时,由于采用内存空间进行实时数据的存储,这样可以达到高速读取数据的预期效果,增强了整个应用环境的实时性[7]。

在一次同步计算的过程中,计算程序的每一次同步周期都会通过通信函数类库提供的接口访问实时数据库服务平台,进行一次数据交换,并且利用锁的机制,控制访问数据库的线程不允许同时进行读写操作[8]。既实现了数据的共享,也保证了数据的一致性,增强了计算程序耦合计算的执行效率。

在运行调度方面,利用多线程技术实现任务调度管理模块。当服务端收到客户端的任务指令时,启动独立的线程向任务管理队列中添加任务,并在运行开始时,自动读取任务线程,控制固定数量的空余线程,并发式地从任务队列中读取任务进行处理。所有任务都继承自一个任务基类,根据类型来区分不同任务的流程,使程序尽量的松耦合,方便以后的扩展及维护。

3.2通信函数类库

通信函数类库使用C++语言实现,因此,该类库可以和绝大多数开发语言进行混合编程,使那些使用不具备通信机制开发语言的程序可以很容易地与实时数据库服务平台进行数据传递,具有很好的兼容性。

通常,在该类库使用过程中会遵循如图4所示的流程。

图4 计算程序运行流程

(1) 读取连接配置文件,并发送连接请求;

(2) 当连接成功后,发送变量注册请求,将需要进行数据共享的变量列表通知实时数据库服务平台;

(3) 初始化计算内核启动参数;

(4) 通知实时数据库服务平台,初始化成功,等待任务指令;

(5) 当接收到任务指令后,根据任务指令类型,执行不同的计算功能模块;

(6) 向实时数据库服务平台发送获取变量数值请求,并等待反馈结果;

(7) 执行任务指令,比如运行、停止、暂停、重启动等;

(8) 向实时数据库服务平台发送更新变量数值请求,将计算完成的结果反馈至实时数据库服务平台;

(9) 完成更新后,会继续等待下一次任务指令。

4 应 用

如图5所示,实时数据库服务平台作为核电厂全范围仿真环境的数据中心,主要负责计算程序耦合计算过程中的数据交互和数据存储。调度控制服务所管理的模拟计算程序在进行耦合计算的过程中,每次启动计算程序前,都会从实时数据库中获得本次计算周期所需要的参数集合,并进行参数初始化。当经过计算流程后,到达下一个同步节点时,就会将本次计算周期所计算出的结果参数更新回实时数据库,最后等待下一次执行指令。在这个过程中,同一时刻会产生大约20个模拟计算程序并发访问,总共约5万个数值信息,为达到仿真环境的实时性,实时数据库可以在50毫秒内完成所有请求的处理。

图5 核电厂全范围仿真环境

5 结 语

本文介绍了一种实时数据库服务平台的设计与实现,并针对核电分析软件中的耦合计算过程进行了分析,提出一种可行的解决方案。通过提供共享数据服务和访问接口的方式,将计算程序执行过程中产生的中间结果,通过消息传递至实时数据库服务平台上。在实时性方面,其高速存储的特性明显优于其他的数据存储方式,有效地提高了计算程序耦合计算过程中数据交互效率。在通用性方面,通信函数类库也提供了统一的接口规范,使得不同的仿真计算程序可以很容易地集成到仿真环境中,增强了仿真环境模拟计算的可扩展性。

[1] 李德泉,何文春,阮志宇,等.气象实时数据库服务监控系统设计与实现[J].成都信息工程学院学报,2012,27(2):147-152.

[2] 纳永良.大型实时数据库关键技术及应用研究[D].北京:北京化工大学,2010.

[3] 徐叶军,谢晓鸣,俞成海.基于Socket的异地数据复制实现[J].工业控制计算机,2013,26(3):96-98.

[4] 李扬,耿昌宇,张丽芬.基于Socket通讯模式下的跨平台数据同步[J].北京理工大学学报,2002,22(1):81-84.

[5] 黄显信.利用Socket通信进程实现不同数据库间数据的同步[J].计算机与数字工程,2003,31(5):28-30.

[6] 李光明.应用Socket实现网络通信[J].煤炭技术,2012,31(8):156-157.

[7] 金舒,戴宏斌,贾志敏.面向对象的高性能实时数据库ChRDB[J].电力自动化设备,2009,29(12):88-93.

[8] 白天,李国徽,刘云生.一种实时数据库服务质量管理策略[J].湖南大学学报:自然科学版,2011,38(11):88-92.

[9] 徐慧.实时数据库中数据压缩算法的研究[D].浙江:浙江大学,2006.

DESIGN AND IMPLEMENTATION OF REAL-TIME DATABASE SERVICE PLATFORM FOR COUPLING CALCULATION OF NUCLEAR POWER ANALYSIS SOFTWARE

Liu ShuoMo WentaoLiu LuguangZhang RuifengXiao Shuang

(StateNuclearPowerSoftwareDevelopmentCenter,Beijing102209,China) (NationalEnergyKeyLaboratoryofNuclearPowerSoftware,Beijing102209,China)

For technical difficulties encountered in coupling calculation of nuclear power analysis software such as low data exchange efficiency and not uniform in data formats, the article presents a solution, it makes use of network communication and memory storage technology, takes the real-time database as data exchange centre, and designs and implements the unified access interface, and has been applied in the coupling calculation process between a plurality of calculation programs, so that achieves the high-speed data interaction between calculation programs and simple and universal database access interfaces. This achievement has been used in the full scope simulation environment of nuclear power plants. It provides data sharing services for multiple simulation programs with adequate efficiency and versatility that fully meet the performance and functional requirements of the simulation environment. At the same time, its scalable feature makes it possible to support the applications in coupling calculation processes developed with different programming languages.

Real-time databaseCoupling calculationHigh-speed storage

2014-12-15。国家重大专项项目(2011ZX06004-024)。刘硕,工程师,主研领域:核电软件开发。莫文涛,高工。刘陆光,助理工程师。张蕊峰,助理工程师。肖爽,助理工程师。

TP311

A

10.3969/j.issn.1000-386x.2016.08.025

猜你喜欢
类库核电服务平台
打造一体化汽车服务平台
第四代核电 高温气冷堆
百年初心精神 点亮核电未来
江苏省一体化在线交通运输政务服务平台构建
论基于云的电子政务服务平台构建
2020年核电活动安排
用Java编写客户机/服务器端应用程序
Python在数据可视化中的应用
基于云计算的民航公共信息服务平台
数据结构课程教学改革方案和应用效果