北京广利核系统工程有限公司 彭立,胡俊,李宁
核电站专用仪控系统是以核电站KDO、KME、EPP等系统需求为基础,开发出的用于核电站小规模专用仪控系统的产品系统平台,该平台具有高速、高精度等系统特性,主要用于核电站对采样速度、采样精度、长期稳定性等方面有特殊要求的相关系统中。
本文将会论述核电专用仪控系统中服务器如何实现分布式部署,以及如何解决服务器不利于扩展和性能降低的问题。
通过服务器的分布式部署研究,可使核电专用仪控系统具有更加良好的扩展能力以及更好的服务性能。
目前核电专用仪控系统整体上采用单网运行的方式实现服务器以及控制站的通讯,服务器只有两个,所有的服务程序都需要分布在每个服务器上,如图1所示。随着应用的逐步扩展,首先单个服务器运行所有服务程序的性能越来越不能满足用户的要求,而且控制站上传数据也只能分别发送给两个服务器,数据量的增加会导致服务程序性能的降低,因此系统最多只能支持3个控制站。同样操作员站的访问请求增加也会导致服务程序性能的降低,因此操作站只能支持3个。这对系统的发展造成了很大的局限性。
同时服务器软件在实现上采用了共享磁盘等方式,该方式在应用初期是满足各项目需求的,随着应用的拓展,越来越多的项目需要采用分布式的部署方式,服务器软件内部由于使用共享磁盘导致各个软件任务之间只能通过共享内存、消息队列等方式进行通讯,因此必须部署在一台机器上,不利于扩展;同时,如果想增加新的应用,则需要对这些共享内存、消息队列进行初始化等操作,比较烦琐,不利于维护。
图1 核电仪控系统当前结构
核电专用仪控系统处于分布式部署的考虑,需要在服务器性能上有所突破。而服务器性能上要进行突破,最大的障碍在于服务任务都部署在同一台机器上,如果能实现服务器的分布式部署,则能够用更多的服务器来平摊系统负荷,达到扩大系统规模的目的。
为了达到服务器分布式部署的目标,在系统软件总体设计上则需要进行模块化设计,当服务器的所有模块都作为组件融入到系统中时,使用不同的服务器来加载这些组件就能实现系统功能,同时系统的扩展性也得到了体现。
针对这种分布式部署的设计目标,服务器进行了基于管理网协议的模块化设计,将管理网协议设计为网络中间件通信平台,服务器上各个模块可以独立设计,通过网络中间件交互信息,同时提供独立的网络中间件服务接口。扩展的服务器模块,可以通过网络中间件接口进行新的专用功能设计。
同时为了增强系统的可靠性,需对网络进行冗余设计,网络中间件还需要实现网络诊断及选择网络自动选择的功能,如图2所示。
图2 核电专用仪控系统设计架构
服务器基于网络中间件的方式来实现分布式部署。其主要功能通过监控网协议来实现,并且为了满足核电专用仪控系统的冗余要求,服务器还需要进行服务任务双网和双任务的冗余研究。
网络通讯中间件的设计目标是满足服务器软件各任务之间的高性能数据通讯。任务之间的通讯网络采用双网冗余配置。服务器任务也采用双任务冗余配置,分别部署在两个冗余的服务器上。每个服务任务通过接口函数来对外提供服务。
网络通讯中间件要求能支持冗余双网络,即在一个网络通讯发生故障时,能快速平滑的切换到另一个正常的冗余网络,此切换对请求任务应该是透明的。
服务器任务采用冗余配置。单任务运行时,其状态为主,双任务运行时,状态为一主一从,只有主任务对外提供服务。冗余的任务之间应该能保持数据一致性。网络通讯中间件能自动诊断任务的主从状态,并能在任务故障时,自动进行状态和网络切换。
《教师法》的制定和实施在社会上强调的教师的作用和地位,规范的教师与学生之间的关系,在全社会形成尊重教师尊重教育的风气。教育是民族振兴和社会进步的基础。《教师法》的贯彻执行重视是重视教育的表现,促进了教育事业的发展。
网络通讯中间件通过周期诊断对方状态,作为判断主从以及是否进行主从切换的依据。诊断的状态信息还包括是否存在、如果存在当前状态是主还是从等额外的信息。
应用程序通过调用服务端提供的接口函数向服务软件发送请求。网络通讯中间件客户端将应用程序的请求数据,按选定的通讯网络发送给指定的服务软件,并等待返回数据。
网络通讯中间件服务端收到请求数据,调用服务任务的服务处理函数,执行服务处理。
服务软件将服务处理结果返回网络通讯中间件服务端。网络通讯中间件服务端将处理结果返回客户端。
网络通讯中间件客户端收到返回结果,并返回给发起请求的应用程序。
整个实现方式如图3所示。
图3 网络通讯中间件实现方式
基于上述的通讯方式,服务器软件可以部署不同的服务端,同时其它依赖这些服务的程序作为客户端使用,服务端所具有的服务功能可以根据整个核电专用仪控系统的设计来决定,将相类似的功能放在一个服务端,服务端之间的通讯只需要在同一网段即可进行,这样不仅能将功能作为组件进行部署,还能基于性能的考虑对服务端进行拆分,更好地满足系统的总体要求。
网络通讯中间件以DLL形式,加载到其它服务模块进程中。服务模块通过继承网络通讯接口,保留基本功能的同时,对它进行扩展来二次开发。
网络通讯中间件根据其功能需求,被分为如下4个模块来进行实现:数据发送模块、数据接收模块、主从诊断模块和网络诊断模块。其工作方式如图4所示。
图4 网络通讯任务内部模块设计
数据发送模块主要实现进程间和主机间的数据交换。在实现上通过网络诊断模块进行选网,这样可以获得能进行正常通信的网络,如果选网失败,则返回应用层此次请求失败。客户端发送数据之后开始等待服务端的应答,如果接收到说明服务器端已收到数据,那么可以继续等待数据。如果等待应答时返回超时则需要重复发送,超时时间根据发送的数据量来自行设定,如果超过超时时间还未接收到应答则定义此次请求失败,返回给客户端。如果发生超时,则最多重发两次后定义此操作失败。在获得服务端应答后,准备开始接收服务端返回的实际数据。同时根据应用层定义的超时时间进行判断,如果在超时时间内数据还没有接收完毕,也定义此次请求失败。接收完毕后向服务端发送确认应答,令服务端主动退出服务。这样就能将数据发送出去。
数据接收模块主要进行数据的接收,在实现上首先根据网络参数的设置,来监听指定的网络端口,接收到数据后,将数据传递给进程进行处理。服务器应用程序通过配置文件来注册服务端。配置好的端口可以交给网络通讯中间件的接收数据模块进行处理。当端口有数据到达时,网络通讯中间件将接收到的数据交给数据接收线程池中的线程去处理。数据接收线程将数据重组并且接收到所有的数据后,将数据交给服务端处理。这样就能实现数据的接收。数据接收模块主要进行的是数据的重组和拼包操作,同时在数据接收模块中还需要进行线程池的分配工作以满足并发的客户端请求。
主从诊断模块通过主从诊断规则,获得和设置当前服务器的主从状态。主从诊断仅对服务端而言,客户端不会进行主从的任何操作。只有主服务任务才向其它任务提供服务。具体实现上服务任务处理程序可以通过重载网络中间件提供的接口,来继承主从诊断功能。服务任务之间的主从数据对齐由服务任务自己实现,网络中间件只是提供主从状态的获取。每个服务任务,通过检测本机网络故障情况以及检测对方任务的状态,来决定自己的主从。因此,主从诊断依赖于对本机网络故障的检测以及任务之间的数据通信。在设计上应该在一定时间间隔内周期进行诊断,以便在需要进行主从切换时能迅速进行主从属性切换,而又不会影响计算机CPU的瞬时负荷。对于主从模块的诊断,属于是冗余设计的一部分,实现其自动和快速的主从切换是研究的重点。
双网冗余模块在一个网络出现故障时以不影响数据传输为前提将数据从备用网发送出去。在研究中如果应用层的客户端选择具体的网络,则可以根据其客户端的选择直接进行数据的发送。同时提供任意网络发送的功能,任意网络发送时网络中间件可以随机选择一个进行诊断,如果诊断成功,则使用此网络进行发送,并且记录下此网络属性,在以后的请求中继续使用此网络,如果诊断失败,则需要切换到另外一个进行发送,同时也记录下此网络的属性,在以后的请求中使用此网络。通过这样的手段可以达到网络诊断的目的。对于网络诊断而言,其自动的网络切换和数据的选网发送是研究的重点。
核电专用仪控系统服务器软件分布式部署的研究成功,为核电专用仪控系统的维护和扩展提供了良好的平台,在不断新建的核电站中,核电专用仪控系统作为核电站运行过程中的关键系统,能满足核电站多种多样以及不断扩展的新需求,不仅能为实现系统易用性提供扩展的基础,同时也能为核电站提供更多的安全保障。
[1]高阳, 邹树梁. 论我国核电产业的自主化新征程[J]. 北京: 中国投资, 2009.5.
[2]刘俊明. 数字控制系统原理: 分析与设计[M]. 北京: 国防科技大学出版社1990.7.
[3]何克忠, 郝忠恕. 计算机控制系统分析与设计[M]. 北京: 清华大学, 1989.
[4]赵仁恺.中国核电的可持续发展[J].北京:中国工程科学,2000.6.
[5]顾兴元. 计算机控制系统[M]. 北京: 冶金工业出版社, 1981.
[6]Martin J. Principles of Data Base Management[M].1976.
[7]Fry James P,Sibley Edgor H. Evolution of Data Base Management Systems[M]. ACM Computing Surveys. 1986.
[8]Deen S M. Fundamentals of Data Base System [J].1977.
[9]Matin J. Computer Data Base Organization[M]. 1997.
[10]Cardenas A F. Data Base Architecture[M]. 1979.