基于存储过程定时调度的网元状态轮询方法

文档序号:76344阅读:451来源:国知局
专利名称:基于存储过程定时调度的网元状态轮询方法
技术领域
本发明涉及应用程序监控系统的网元状态轮询方法。
背景技术
在应用程序监控系统中,需要对分布在各个地区的主机、进程、流程网元的工作状 态进行及时的监控,因此需要有个方法每间隔一段设定时间,就查询一次各个网元的工作 状态,这个方法就称为网元状态轮询方法。
常见的网元状态轮询方法有三种其一是由监控系统统一来调度定时查询程序; 其二是由监控系统中的各功能模块来调度定时查询程序;还有一种就是由登录监控系统中 的各个用户会话来调度定时查询程序。
第一种方法由监控系统来统一调度,需要在应用服务器中,定时运行网元状态查 询程序,使用这种方法会占用应用服务器的内存和CPU资源。
第二种方法由监控系统中的各功能模块来调度,会出现各功能模块重复调用同一 网元状态查询程序的现象,如主机模块的网元状态需要先调用进程状态查询才能判断主机 状态,而流程模块的网元状态也需要先调用进程状态查询才能判断流程环节状态,使用这 种方法会出现重复的网元状态查询操作而多出不必要的应用服务器系统资源开销。
第三种方法由各个用户会话来调度,在每个轮询间隔时间段内,会形成与用户数 相当次数的网元状态查询操作,如登录系统的用户数达到或大于100时,则每个轮询间隔 时间段内可形成100次或100次以上的网元状态查询,使用这种方法会频繁的出现重复的 网元状态查询操作,并将占用大量的应用服务器系统资源。
这三种方法都需要将编写好的网元状态查询程序编译并发布到应用服务器中,将 占用应用服务器的系统资源,而且当网元状态的查询规则或流程发生变化时就需要修改查 询程序,并重新编译后再重新发布到应用服务器,而要使修改好的网元状态查询程序立即 生效,还需要重新启动应用服务器,因此并不利于系统的维护和扩展。

发明内容
(1)发明目的提出一种基于存储过程定时调度的网元状态轮询方法,现有的网 元状态轮询方法,存在低效且不易维护和扩展的问题,本发明为了解决这些问题开发了一 种新的网元状态轮询方法,这种方法不需占用应用服务器的系统资源,不会形成重复的网 元状态查询操作,并且在网元状态查询规则发生变化时,不需要重新发布即可立即生效,同 时还能充分利用数据库服务器资源。
(2)技术方案基于存储过程定时调度的网元状态轮询方法,在数据库中建立与 网元状态相关的接口表包括网元对象表、网元类型表和告警信息表用于存储网元信息及网 元状态值;再为需要轮询网元状态的各类网元建立获取相应网元状态的存储过程,由相应 的存储过程进行数据筛选及网元状态判断,并将状态值写入相应的网元状态接口表;最后 建立定时执行任务,定时调度需要轮询网元状态的各个存储过程;[0010]整个技术方案由三大部分组成建立网元状态相关接口表;获取网元状态并设置 状态值的存储过程;由定时执行任务定时调度存储过程
>建立网元状态相关接口表
网元状态相关接口表是一组建立在数据库中的与存储网元状态相关的数据表,用 于存储网元状态信息,包括网元对象表、网元类型表、告警信息表;
网元对象表用于存储网元的基本信息和状态信息,其主要字段包括“网元对象 编号”、“地区编号”、“网元对象名称”、“网元类型编号”、“父网元编号”、“网元告警状态”、“网 元工作状态”;
网元类型表用于存储网元的类型信息,以区分网元对象表中各个网元所属的 类型,其主要字段包括“网元类编号”、“网元类名称”、“网元所属流程环节编号”;
告警信息表用于存储网元对象表中各个网元的告警信息,其主要字段包括“网 元编号”、“网元类型编号”、“故障类编号”、“告警详情”、“告警取消者”、“告警取消时间”;
数据库中建立网元对象表、网元类型表、告警信息表用于存储网元信息及状态信 息,其中通过网元编号字段索引到网元的基本信息及相关告警信息,通过网元类型编号索 引到网元的类型以区分网元属于主机类型还是进程类型;
>获取网元状态并设置状态值的存储过程
获取网元状态并设置状态值的存储过程是通过编写获取网元状态并完成其状态 值存储功能的一组SQL语句集和控制这些SQL语句集执行流程的逻辑判断程序来实现,这 组SQL语句集和控制这些SQL语句集执行流程的逻辑判断程序在数据库技术中被称为存储 过程,存储过程经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数来执 行它,存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译;而常用的 获取网元状态并设置状态值的方法是通过在应用服务器端的查询程序按序执行每一条SQL 语句来实现,每执行一条SQL语句就需要编译一次,所以使用存储过程可提高SQL语句的执 行效率;存储过程可以重复使用,可减少开发工作量。
本发明方法中对网元状态(包括进程网元状态和主机网元状态)的获取和状态值 的设置,需要进行较复杂的数据查询、逻辑判断、记录修改等数据操作;
因此将网元状态的获取和状态值的设置等数据操作封装成存储过程以提高执行 速度,其中主要的存储过程有获取进程网元状态存储过程和获取主机网元状态存储过程。 ·获取进程网元状态存储过程
用于获得应用程序类网元的状态,其主要操作步骤为
a)建立一个数据库游标从网元对象表中筛选出类型为应用程序的网元记录;
b)开始循环这个游标中的记录;
C)初始化参数;
d)统计告警记录表中恢复状态为未恢复,并且网元编号与当前游标记录中的网元 编号相等的告警记录的总数;
e)判断告警记录总数是否为零,如果为零则设置网元对象表中与当前游标记录网 元编号相等的网元的告警状态为无告警;
f)如果不为零则设置网元对象表中与当前游标记录网元编号相等的网元的告警 状态为有告警;[0029]g)继续循环这个游标直至最后一条记录;
h)最后提交所有的记录修改;
获取主机网元状态存储过程
用于获得主机类网元的状态,其主要操作步骤为
a)建立一个数据库游标从网元对象表中筛选出类型为主机的网元记录;
b)开始循环这个游标中的记录;
C)初始化参数;
d)统计告警记录表中恢复状态为未恢复,并且网元编号与当前游标记录中的主机 网元编号相等的告警记录的总数;
统计网元对象表中父类网元编号与当前游标记录中的主机网元编号相等的,并且 告警状态为有告警的子网元记录的总数;
e)判断告警记录总数和子网元记录总数是否同为零,如果同为零则设置网元对象 表中与当前游标记录网元编号相等的主机网元的告警状态为无告警;
f)如果不为零则设置网元对象表中与当前游标记录网元编号相等的主机网元的 告警状态为有告警;
g)继续循环这个游标直至最后一条记录;
h)最后提交所有的记录修改;
在数据库中建立获取进程网元状态存储过程和获取主机网元状态存储过程,用于 对主机网元状态或进程网元状态的获取和状态值的设置,在这两个存储过程中处理流程的 主要操作步骤是首先将网元状态相关接口表中的记录进行关联索引及数据筛选处理,在 筛选处理后对数据进行逻辑判断以获得网元的状态,接着将状态值更新到网元对象表中相 关记录的状态字段;
>由定时执行任务定时调度存储过程
利用数据库中的定时执行任务功能,在数据库中建立一个定时执行任务,设定之 前已建立好的获取进程网元状态存储过程和获取主机网元状态存储过程为需要执行的任 务,并设定好执行这个任务的间隔时间就可以达到定时执行网元状态查询操作的目的,从 而实现网元状态的轮询。
网元状态相关接口表中网元类型表由手工编辑录入,用于定义网元类型的网元类 型编号、网元类型名称,网元类型表中的CLASS_ID字段表示网元类型的编号,当其值为1时 表示主机类型;
网元对象表中除了 ALARM_STATE字段由存储过程来设置外,其余字段由应用程 序自动上报,网元对象表中ALARM_STATE字段表示网元的告警状态,由网元状态存储过程 来设置状态值,当其值为1时表示该网元有告警,为0时表示该网元无告警,网元对象表中 W0RK_STATE字段表示网元的工作状态,由应用程序直接上报,当其值为1时表示该网元正 在运行,为0表示该网元已经停止运行;
告警信息表中除了表示恢复者的CANCEL_BY字段和表示恢复时间的CANCELjIME 字段外,其余字段都由网元对象自动上报,告警信息表中表示网元编号的NE_ID字段与网 元对象表中网元编号(NE_ID)字段关联,通过网元编号字段可以索引出一条告警记录是归 属于哪个网元。[0048]获取进程网元状态存储过程的操作步骤为建立一个名称为“CR”的数据库游标, 从网元对象表中筛选出classed字段值不等于1并且ENABLE字段值等于1的网元记录, 给这个名称为“CR”的游标起别名为“Cl”,开始循环其中的数据记录,将“recnum”变量初始 化为0,“V_neid”变量初始化为当前游标记录的网元编号即“C1.NE_ID”,统计告警记录表 中cancelby字段值等于_9,并且NE_ID字段值等于“V_neid”的告警记录的总数,并将统 计总数赋予“recnum”,判断“recnum”是否为零,如果为零则设置NE_ID字段值与“v_neid” 相等的网元的alarnustate字段值为0,如果“recnum”不为零则设置网元对象表中与当前 游标记录的网元编号相等的网元的alarnustate字段值为1,最后判断当前游标记录是否 为最后一条记录,如果不是就继续循环,如果当前游标记录是最后一条记录,则终止循环并 提交所有的记录修改;
获取主机网元状态存储过程的操作步骤为建立一个名称为“CR”的数据库游标, 从网元对象表中筛选出claSS_id字段值等于1并且ENABLE字段值等于1的网元记录,给这 个名称为“CR”的游标起别名为“Cl”,开始循环其中的主机网元记录,将“recnum”变量初始 化为0 ;“RECNUM_ALM”变量初始化为0 ;“V_neid”变量初始化为当前游标所循环到的记录 中的主机网元编号即“C1.NE_ID”,统计告警记录表中cancelby字段值等于-9,并且NE_ID 字段值等于“V_neid”的告警记录的总数,并将统计总数赋予“RECNUM_ALM”,统计网元对象 表中PARENT_ID字段值等于v_neid的,并且alarn^state字段值等于1的子网元的总数, 并将统计总数赋予“recnum”,判断“RECNUM_ALM”和“recnum”是否同为零,如果为零则设置 NE_ID字段值与“v_neid”相等的主机网元的alarm_state字段值为0,如果“RECNUM_ALM” 或“recnum”中有一个不为零,则设置NE_ID字段值与“v_neid”相等的主机网元的alarm_ state字段值为1,最后判断当前游标记录是否为最后一条记录,如果不是就继续循环,如 果当前游标记录是最后一条记录,则终止循环并提交所有的记录修改。
(3)有益效果
传统的网元状态轮询方法运行于应用服务器,需要占用应用服务器的系统资源, 当网元数量和告警数量都大于3000,同时用户请求数量大于30时,在一个轮询周期内可形 成30%以上的应用服务器系统资源占用,本发明方法运行于数据库服务器,充分利用数据 库服务器的数据处理效率及系统资源均衡能力,因此对应用服务器的系统资源占用率为0, 从而使得应用服务器的系统资源可以更多的应用在其他关键事务处理上;
传统的网元状态轮询方法,由各模块或各个用户会话调度时容易产生重复的网元 状态查询操作,本发明方法由数据库的定时执行任务来统一调度各个网元状态存储过程, 在一个轮询周期内只执行一次因此不会产生重复的网元状态查询操作;
传统的网元状态轮询方法,当网元状态的查询规则或流程发生变化时需要修改轮 询程序,并重新编译、发布到应用服务器,而要使修改好的网元状态查询程序立即生效,还 需要重新启动应用服务器,这将造成用户应用的中断,本发明方法在轮询规则或流程发生 变化时,只需要修改相应的存储过程或定时执行任务并重新编译后即可立即生效,无需重 启服务器;
综上所述,应用本发明方法对于网元状态轮询的执行效率以及维护和扩展都很有
■、Λ
frff. ο四、


图1. “获取进程网元状态”存储过程流程图
图2. “获取主机网元状态”存储过程流程图
具体实施方式
下面结合附图和实施例对本发明进一步说明。
1.网元状态相关接口表
在数据库中建立网元对象表、网元类型表和告警信息表,其字段结构如下
网元对象表
权利要求
基于存储过程定时调度的网元状态轮询方法,其特征是在数据库中建立网元状态相关接口表包括网元对象表、网元类型表和告警信息表,用于存储网元信息及网元状态值;再为需要轮询网元状态的各类网元建立获取相应网元状态的存储过程,由相应的存储过程进行数据筛选及网元状态判断,并将状态值写入相应的网元状态接口表;最后建立定时执行任务,定时调度需要轮询网元状态的各个存储过程,包括建立网元状态相关接口表;获取网元状态并设置状态值的存储过程;由定时执行任务定时调度存储过程1)建立网元状态相关接口表网元状态相关接口表是一组建立在数据库中的与存储网元状态相关的数据表,用于存储网元状态信息,包括网元对象表、网元类型表、告警信息表;网元对象表用于存储网元的基本信息和状态信息,其主要字段包括“网元对象编号”、“地区编号”、“网元对象名称”、“网元类型编号”、“父网元编号”、“网元告警状态”、“网元工作状态”;网元类型表用于存储网元的类型信息,以区分网元对象表中各个网元所属的类型,其主要字段包括“网元类编号”、“网元类名称”、“网元所属流程环节编号”;告警信息表用于存储网元对象表中各个网元的告警信息,其主要字段包括“网元编号”、“网元类型编号”、“故障类编号”、“告警详情”、“告警取消者”、“告警取消时间”;数据库中建立网元对象表、网元类型表、告警信息表用于存储网元信息及状态信息,其中通过网元编号字段索引到网元的基本信息及相关告警信息,通过网元类型编号索引到网元的类型以区分网元属于主机网元还是进程网元;2)获取网元状态并设置状态值的存储过程通过编写获取网元状态并完成其状态值存储功能的一组SQL语句集和控制这些SQL语句集执行流程的逻辑判断程序来实现,这组SQL语句集和控制这些SQL语句集执行流程的逻辑判断程序在数据库技术中被称为存储过程,存储过程经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数来执行它,存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译;获取进程网元状态存储过程用于获得应用程序网元的状态,其步骤为a)建立一个数据库游标从网元对象表中筛选出类型为应用程序的网元记录;b)开始循环这个游标中的记录;c)初始化参数;d)统计告警记录表中恢复状态为未恢复,并且网元编号与当前游标记录中的网元编号相等的告警记录的总数;e)判断告警记录总数是否为零,如果为零则设置网元对象表中与当前游标记录网元编号相等的网元的告警状态为无告警;f)如果不为零则设置网元对象表中与当前游标记录网元编号相等的网元的告警状态为有告警;g)继续循环这个游标直至最后一条记录;h)最后提交所有的记录修改;获取主机网元状态存储过程用于获得主机网元的状态,其步骤为a)建立一个数据库游标从网元对象表中筛选出类型为主机的网元记录;b)开始循环这个游标中的记录;c)初始化参数;d)统计告警记录表中恢复状态为未恢复,并且网元编号与当前游标记录中的主机网元编号相等的告警记录的总数;统计网元对象表中父类网元编号与当前游标记录中的主机网元编号相等的,并且告警状态为有告警的子网元记录的总数;e)判断告警记录总数和子网元记录总数是否同为零,如果同为零则设置网元对象表中与当前游标记录网元编号相等的主机网元的告警状态为无告警;f)如果不为零则设置网元对象表中与当前游标记录网元编号相等的主机网元的告警状态为有告警;g)继续循环这个游标直至最后一条记录;h)最后提交所有的记录修改;在数据库中建立获取进程网元状态存储过程和获取主机网元状态存储过程,用于对主机网元状态或进程网元状态的获取和状态值的设置,在这两个存储过程中处理流程的主要操作步骤是首先将主机网元状态相关接口表中的记录进行关联索引及数据筛选处理,在筛选处理后对数据进行逻辑判断以获得网元的状态,接着将状态值更新到网元对象表中相关记录的状态字段;3)由定时执行任务定时调度存储过程利用数据库中的定时执行任务功能,在数据库中建立一个定时执行任务,设定之前已建立好的获取进程网元状态存储过程和获取主机网元状态存储过程为需要执行的任务,并设定好执行这个任务的间隔时间就可以达到定时执行网元状态查询操作的目的,从而实现网元状态的轮询。
2.根据权利要求
1所述的基于存储过程定时调度的网元状态轮询方法,其特征是网元 状态相关接口表中网元类型表由手工编辑录入,用于定义网元类型的网元类型编号、网元 类型名称,网元类型表中的CLASS_ID字段表示网元类型的编号,当其值为1时表示主机类 型;其中CLASS_ID为网元类型编号;网元对象表中除了 ALARM_STATE字段由存储过程来设置外,其余字段由应用程序自动 上报,网元对象表中ALARM_STATE字段表示网元的告警状态,由网元状态存储过程来设置 状态值,当其值为1时表示该网元有告警,为0时表示该网元无告警,网元对象表中W0RK_ STATE字段表示网元的工作状态,由应用程序直接上报,当其值为1时表示该网元正在运 行,为0表示该网元已经停止运行;其中ALARM_STATE为网元告警状态,W0RK_STATE为网元 工作状态;告警信息表中除了表示恢复者的CANCEL_BY字段和表示恢复时间的CANCELjIME字 段外,其余字段都由网元对象自动上报,告警信息表中表示网元编号的NE_ID字段与网元 对象表中网元编号字段关联,通过网元编号字段可以索引出一条告警记录是归属于哪个网 元;CANCEL_BY为告警取消者,CANCEL_TIME为告警取消时间,NE_ID为网元对象编号。
3.根据权利要求
1所述的基于存储过程定时调度的网元状态轮询方法,其特征是获 取进程网元状态存储过程的操作步骤为建立一个名称为“CR”的数据库游标,从网元对象表中筛选出CLASS_ID字段值不等于1并且ENABLE字段值等于1的网元记录,给这个名称 为“CR”的游标起别名为“Cl”,开始循环其中的数据记录,初始化变量recnum是用于存储 归属于主机网元,并且告警状态为有告警的子网元的总数,初始化值为0 ;“RECNUM_ALM”用 于储存告警记录表中主机网元的告警记录总数,初始化值为0 ;“V_neid”变量初始化值为 当前游标所循环到的记录中的主机网元编号即“Cl. NE_ID” ;统计告警记录表中CANCEL_BY 字段值等于_9,并且NE ID字段值等于“V_neid”的告警记录的总数,并将统计总数赋予 "recnum",判断“recnum”是否为零,如果为零则设置NE_ID字段值与“v_neid”相等的网元 的alarnustate字段值为0,如果“recnum”不为零则设置网元对象表中与当前游标记录的 网元编号相等的网元的ALARM_STATE字段值为1,最后判断当前游标记录是否为最后一条 记录,如果不是就继续循环,如果当前游标记录是最后一条记录,则终止循环并提交所有的 记录修改;ALARM_STATE为网元告警状态。
4.根据权利要求
1所述的基于存储过程定时调度的网元状态轮询方法,其特征是获 取主机网元状态存储过程的操作步骤为建立一个名称为“CR”的数据库游标,从网元对象 表中筛选出classed字段值等于1并且ENABLE字段值等于1的网元记录,给这个名称为 “CR”的游标起别名为“Cl”,开始循环其中的主机网元记录,初始化变量recnum是用于存 储归属于主机网元,并且告警状态为有告警的子网元的总数,初始化值为0 ;“RECNUM_ALM” 用于储存告警记录表中主机网元的告警记录总数,初始化值为0 ;“V_neid”变量初始化值 为当前游标所循环到的记录中的主机网元编号即“Cl. NE_ID” ;统计告警记录表中CANCEL_ BY字段值等于_9,并且NE_ID字段值等于“ V_neid”的告警记录的总数,并将统计总数赋予 “RECNUM_ALM”,统计网元对象表中PARENT_ID字段值等于v_neid的,并且alarm_state字 段值等于1的子网元的总数,并将统计总数赋予“recnum”,判断“RECNUM_ALM”和“recnum” 是否同为零,如果为零则设置NE_ID字段值与“v_neid”相等的主机网元的ALARM_STATE 字段值为0,如果“RECNUM_ALM”或“recnum”中有一个不为零,则设置NE_ID字段值与“v_ neid”相等的主机网元的ALARM_STATE字段值为1,最后判断当前游标记录是否为最后一条 记录,如果不是就继续循环,如果当前游标记录是最后一条记录,则终止循环并提交所有的 记录修改,PARENT_ID为网元父类编号。
专利摘要
基于存储过程定时调度的网元状态轮询方法,在数据库中建立与网元状态相关的接口表包括网元对象表、网元类型表和告警信息表用于存储网元信息及网元状态值;再为需要轮询网元状态的各类网元建立获取相应网元状态的存储过程,由相应的存储过程进行数据筛选及网元状态判断,并将状态值写入相应的网元状态接口表;最后建立定时执行任务,定时调度需要轮向网元状态的各个存储过程,包括建立网元状态相关接口表;获取网元状态并设置状态值的存储过程;由定时执行任务定时调度存储过程是由建立网元状态相关接口表、获取网元状态并设置状态值的存储过程和定时执行任务三个部分组成。
文档编号H04L12/24GKCN101478432 B发布类型授权 专利申请号CN 200910028102
公开日2011年2月2日 申请日期2009年1月9日
发明者刘国祥, 周俊华, 孙力斌, 宋海华, 黄锡伟 申请人:南京联创科技集团股份有限公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1