一种基于多级分布式管理数据采集软件模型

时间:2007-05-27
一种基于多级
1 引 言

在很多的工程中,到特定的应用中采集数据,并对采集到的数据进行管理是一种普遍的模式。尤其是随着网络技术的迅猛发展,对数据进行多级管理也日益成为趋势。典型的就是电信管理网中的操作维护中心(OMC),他就是一种实现了省级操作维护中心(POMC)、本地操作维护中心(LOMC)、操作维护模块(OMM)三级管理的大型系统,而其中的性能统计模块又是典型的数据采集系统。以操作维护中心中的性能统计为基础,经过抽象分析,我们提出了一种基于分布式多级管理的数据采集软件模型,这种模型将适用于大部分采用多级管理模式的数据采集系统。

我们的软件模型由多级管理模块和数据采集模块两部分组成,下面分别对两个模块阐述详细的设计思路。

2 多级管理模块

图1的左边部分为管理系统结构图,在管理系统中我们采用比较有代表性的三级管理构架,至于更多级的管理,基本原理是完全相同的。如图1所示,在每管理中,都采用C/S结构。其中,客户端直接面向用户,向用户提供友好的图形界面,方便用户的使用。服务器端完成对客户端请求的响应,还要完成级联的任务,同时,服务器端还要直接和应用相连,这里指的应用是我们所要管理的具体对象,在电信管理中就是电信设备,比如交换机、基站等。服务器需要和数据采集系统直接相连,从应用中获取数据。下面我们就主要阐述一下管理系统中的主要部分C/S结构和多级级联的设计思想。


2.1 C/S结构

C/S结构是近年来几乎所有大型系统都采用的一种结构,同时因为我们的模型主要是针对数据采集系统的,而数据采集系统的主要功能通常是对采集到的数据进行实时显示、查询分析等等。根据以上的一些特点,将我们所提出模型的C/S结构用图2描述出来。

服务器端的主要任务有2个,一个是响应客户端的请求,这一点和通常的服务器没有差别;另一个任务是维护本地数据库,虽然大部分的服务器也有维护数据库的工作,但对于数据采集的应用而言,我们需要提供给用户更加丰富的数据查询分析,甚至是数据挖掘的功能,所以这里的维护本地数据库指的不光是简单的对数据库表的插入删除,而且要提供OLAP甚至是数据挖掘的接口

由于服务器对数据的操作可能很频繁,为了保证系统的稳定性,在服务器和数据之间建立连接池。所谓连接池就是预先建立到数据库系统的一定数量的连接。服务器在需要访问数据库时,通过同步技术从该连接池中申请连接,在使用完毕后将连接归还到连接池。这样既保证了系统的稳定性,又有效的节省了数据库连接资源的使用。
2.2 多级级联

在多级管理系统中,多级级联扮演着一个重要的角色。在我们的模型中,级联通过各级服务器之间的关联来实现。如图3所示,在每服务器中都要维护一张级联映射表,这张表记录了整个管理系统中当前所有的服务器的级联情况。为了保证系统的正常运转,所有服务器中的级联映射表必须保持一致。当系统中的某一个服务器出现异常或者当系统中的服务器配置发生变化时,如何保证级联映射表的一致是多级级联主要需解决的问题。


分析我们系统的特点容易知道,服务器的配置不会频繁的变化,而且每次同步级联映射表的报文数量不是很多,整个系统对级联映射表同步的实时性要求不是特别高。因此我们可以采用一般的广播方式来实现同步。当系统的服务器配置发生变化时,由发生变化的服务器向和他相连的服务器发出广播报文,以同步级联映射表。当这些服务器收到报文后再继续向外广播,直到整个系统中的所有级联映射表完全一致。

3 数据采集系统模块

图1的右边部分是数据采集系统,由于不同应用总是有着自身的特点,不可能做到所有的应用都可以向管理系统提供相同的接口。考虑到这一点,我们在应用和管理系统之间添加了一个模块,叫适配器(Adaptor)。适配器的重要作用就是负责到应用中去采集数据,上报给各级服务器。同时他还负责对管理系统屏蔽不同应用的不同特点。也就是说,适配器在管理系统和应用之间做必要的转换工作,以保证不同应用对管理系统来说有着相同的接口,因而适配器是数据采集的的部分。
3.1 数据采集

适配器(Adaptor)作为管理系统和应用之间的桥梁,在系统中起着举足轻重的作用,其首要的任务就是到应用中去采集数据。在我们的模型中,数据采集的工作由3类进程来协同完成,如图4所示。

控制进程在适配器(Adaptor)初始化的时候,生成采集进程和处理进程,并完成对采集进程和处理进程的初始化工作。在此之后,控制进程要监控采集进程和处理进程,当发现他们出现异常情况(如进程僵死、被挂起等)时,要做相应的处理,通常的办法可以重启出现错误的进程。控制进程在系统中的作用只是监控,不做具体的采集上报工作,在系统中只有一个控制进程。下面列出的是控制进程的伪代码:

process control{
readSystemConfigInfo(); //获取系统的配置信息
//创建采集进程
process collectoinProcess=createCollectionProcess();
//发送初始化事件给采集进程,进行初始化
notify(collectoinProcess,Event-Ini); //创建处理进程
process dealwithProcess=createDealWithProcess(),
//发送初始化事件给处理进程,进行初始化
notify(dealwithProcess,Event_Ini);
//为每一个进程设置一个是否出错的标志,初始值为true
Boolean processError[processNum]={true,true…};
//用listening方法来监听采集进程和处理进程
listening();


function listening(){
Timer timer; //为监控进程设置一个定时器
//指定定时器的时间间隔
timer.setInterval(TimerInterval);
while(true){
getMsg(); //获取消息队列中的消息
switch(Msg){
case Event_Shakehand: //握手事件
//判断是哪个进程发过来的握手消息
int index=whichProcess(Msg);
//将该进程对应的出错标志设为false,表示未出错
proeessError[index]=false;
break;
case Event_Timer //定时器事件
for(int i=0;I<processNum;i++={
if(processError[i]){
killProcess(i); //将出错进程杀死
//如果该进程在一定时间间隔内出错,则重启该进程
restartProcess(i);
}
}
break;
… …
}
}
}

采集进程负责到应用中采集数据,对于不同的应用,可以生成不同的采集进程。所以在系统中可能存在多个采集进程。由于采集进程直接和应用相连,并且进程的正确运行依赖于应用。所以很有可能出现不可预知的异常状况,如网络链路不通、应用进程挂起、应用的配置发生变化等等,采集进程应当充分考虑如何处理异常,增强程序的健壮性。下面列出的是采集进程的伪代码:

process eollectData{
Timer timerColl; //为采集进程设置定时器
Timer timerShakeHand; //为采集进程设置定时器
//指定数据采集的粒度
timerColl.setInterval(TimerInterval);
//指定握手的时间间隔
timerShakeHand.setInterval(TimerInterval_);
while(true){
getMsg(); //获取消息队列中的消息
switch(Msg){

caseEvent_Timer; //定时器事件
if(isCollTimer()){
collect(); //采集数据
notify(dealwithProcess,Event_Dealwitn);
if(isShakeHandTimer()){
//向控制进程发送握手消息
sendMsgToController();
}
break;
… …
}
}
}

处理进程负责对采集到的数据进行必要的处理。一个处理进程对应一个采集进程,所以在系统中可能同时存在多个处理进程。从采集进程采集到的数据是原始数据,可能不符合管理系统对数据的要求,所以经常需要对采集到的数据进行处理,处理过程通常包括对数据进行前后2个粒度的数学运算、对数据按所需要的单位求值等。处理进程在处理完数据后,还要对数据进行打包,并上报给管理系统。下面列出的是处理进程的伪代码:

process dealwithData{
Timer timer; //为处理进程设置握手定时器
//指定握手定时器的时间
timer.setInterval(TimerInterval);
while(true){
getMsg(); //获取消息队列中的消息
switch(Msg){

case Event_Dealwith: //定时器事件
dealwith(); //采集数据
//向管理系统上报数据包
sendDataToServer();
break;
case Event_Timer. //定时器事件
//向控制进程发送握手消息
sendMsgToController();
break;
… …
}
}
}

3.2 向管理系统提供相同接口

从图1可以看出,管理系统通过适配器和多个应用相连。由于适配器的存在,对于管理系统而言,不同的应用没有区别,都可以看作适配器发送上来的数据包,而且数据包的结构是相同的。只要在和适配器之间事先协商好数据包的结构,那么不管以后增加什么样的应用,都可以保证管理系统的程序不做改变。这就是我们所说的适配器对于不同应用可以向管理系统提供相同的接口。

4 结 语

本文在电信管理网操作维护中心的基础上,提出了一种基于分布式多级管理的数据采集系统的软件模型。该模型根据数据采集系统的特点,对C/S结构进行更有针对性的设计;对数据采集部分提出了控制进程、采集进程和处理进程3类进程共同协作的模式;使得该模型普遍使用于各种需要多级管理的数据采集系统,具有广泛的工程应用意义。

 
分布式管理数据采集软件模型

  
上一篇:液晶显示投影机原理与维护
下一篇:语音识别及其定点DSP实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料