系统管理代理(精选九篇)
系统管理代理 篇1
关键词:云计算,作业管理,用户身份模拟
1 引言
近年来,随着计算机与互联网的日益普及,计算模式也发生了深刻的变化。云计算作为一种新兴的计算模式,引起了各方面的广泛关注。它是分布式计算、网格计算的进一步发展,通过对大量由网络连接的计算资源进行统一管理和调度,构成一个资源池统一向用户提供按需服务。
云计算已被列为广电科技十二五规划。目前,许多电视台、广电网络公司和研究机构都对云计算开展了一定程度的研究与应用,如CNTV的“视频数据云”规划。云计算具有超大计算量、存储量,可以满足广电行业中媒体内容制作、存储等方面的需要。而且,可以利用云计算的高可扩展性、按需服务等特性,降低企业运营成本,开展新兴业务。
在云计算系统中,作业提交与管理是关键模块之一。作业管理系统主要提供诸如作业提交、修改以及监控等管理功能,它是用户与云计算环境交互的桥梁。国内外对此类系统的研究也较为活跃,目前出现了多种公用或专属的作业管理系统,譬如Hadoop、PBS、Condor、Sun Grid Engine和微软的Windows HPC Server中的作业管理系统等。
这些作业管理系统大都提供了多种作业提交与管理方式,比如命令行方式、用户界面方式等。用户可以登录到管理节点上进行管理操作,或者使用命令行方式进行远程作业管理操作。但命令行方式对普通云计算系统用户来说,由于缺乏用户友好的界面,使用过于复杂,需要用户学习特定的语言和工具。
本文提出了一种基于用户身份模拟机制的云计算作业管理代理系统,它向用户提供了一种基于B/S结构的、用户界面友好的远程作业管理方式。它不仅降低了用户对众多云计算系统熟悉程度的要求,而且使得用户可以通过互联网进行作业管理操作,拓宽了云计算系统的应用范围。
2 基于用户模拟机制的作业管理代理服务系统设计
2.1 系统总体架构
如图1所示,基于用户身份模拟机制的作业管理代理系统由两个主要模块组成,即客户端和服务端。
其中,客户端是用户与服务端、云计算系统交互的代理,它向用户提供友好的界面。客户端将用户请求信息(例如作业定义信息)按某种公共协议(如JSDL)加以封装,然后调用服务端相关接口。当服务端返回结果时,客户端首先将解析返回信息再将其呈现给用户。客户端可以使用PHP或者ASP.net等技术实现,部署在WEB服务器之上,供用户通过Internet访问。
服务端提供对底层系统HPC基础功能的封装,主要包括作业状态监控、作业管理、作业提交以及用户认证与授权等四大组件。
此外,系统客户端与服务端之间的调用方式有两种:本地调用方式与WEB服务调用方式。这两种方式所提供的接口是一致的。
2.2 用户身份模拟机制的引入
在系统中,与作业管理相关的操作一般是基于作业标识符的。比如,查看某个作业当前的执行状态,需要提供该作业的标识符。在常见的作业管理系统中,可以用于管理操作的作业标识符包括作业ID和其所有者(owner)。其中,作业所有者属性可以用来进行诸如获取该用户拥有的作业列表等信息。因为大多数情况下,用户只能查看或操作自己所有的作业,而无权操作其他用户的作业,所以作业所有者属性在作业管理中发挥重要作用。
在常见的云计算系统所提供的作业管理方式中,HPC系统底层默认使用系统当前登录用户信息作为作业所有者属性,如Rocks Cluster与Windows HPC Server 2008均采用这种方式。
本论文所提出的作业管理代理服务系统是基于B/S结构的,客户端可部署在Web服务器上(如Apache或者IIS)。可以通过调用系统服务端封装的接口对代理服务系统用户进行身份认证,但是当进行作业提交等操作时,运行管理操作的进程的身份却是运行该Web服务器的进程的身份,如在Windows HPC Server平台上运行IIS服务器以进程标识Network Service运行。因此,用户提交的作业的所有者属性被HPC系统自动设置为Network Service。不同用户提交的作业的所有者属性均被设置为同一用户Network Service,这不仅使得后续相关管理操作无法进行,也使得它与传统作业管理方式不一致,导致数据混乱,如图2所示。
为此,我们需要引入一种机制以解决这个问题,并借此实现各种作业管理方式的一致性,即作业可以通过不同方式进行管理,并且它们产生的结果是一致的。
用户身份模拟指的是以当前用户的身份运行相关进程,从而使得该作业的所有者属性可以被正确设置。图3给出了引入用户身份模拟机制后各模块使用的用户凭证情况。
3 系统实现
本节介绍了云计算作业管理代理服务系统的实现,该系统基于上一节所提出的架构。
3.1 实验环境
实验环境包含两个Windows hpc server集群、一个Rock Cluster平台,这三个集群分布在不同地理位置,且通过网络连接。
3.2 作业提交描述语言
作业提交描述语言(Job Submission Description Language, JSDL)是一种用来描述向分布式资源提交计算作业需求的语言。JSDL语言包含一个词汇表和将需求表示为一组XML元素的规范的XML Schema。
JSDL提供了用以描述提交到分布式环境中作业的核心词汇表。这个核心词汇表借鉴一些现存的系统,如Condor、Globus工具包、LSF、PBS、SGE和Unicore等。此外,它还借鉴了一些现存的标准,比如DRMAA、CIM、POSIX3。
JSDL元素分为以下几大类:作业标识需求、资源需求和数据需求。本论文采用JSDL作为描述作业提交的标准语言。
3.3 服务端实现
作业管理代理系统的服务端一般运行在集群的头节点之上,因为头节点可以通过公共网访问。因为一般情况下,计算节点仅支持私有网访问,而且它更多专注于提供计算服务。
(1)用户认证模块
用户认证模块提供与用户相关的功能,比如添加用户、修改用户信息以及用户身份认证等。用户在第一次登录作业管理系统时,提供其用户名、密码。只有通过认证的用户才可以根据其权限进行相应的作业管理操作。
如图4所示,基于目录服务的用户认证的步骤如下:用户通过浏览器访问位于W E B服务器上的作业管理代理系统,输入其用户名和密码等信息;代理系统向目录服务发送用户认证请求;目录服务将认证结果返回给代理系统;代理系统保存用户认证结果信息,以备该用户其他操作时使用。
(2)作业提交模块
作业提交模块接收用户定义的作业信息,并启用用户身份模拟机制,以当前用户身份向作业调度器提交作业信息,并返回操作结果。为了实现用户身份模拟机制,需要将作业提交的程序模块发布为WEB服务。Windows HPC平台的提交流程如图5所示,Rocks Cluster平台与之类似。
如图5所示,作业提交的一般流程如下:连接到集群;创建一个作业,定义其基本信息,如作业名称、工程名称等;创建一个任务,设置任务信息,如工作目录、开始和结束时间等;将该任务添加到作业中,如无新任务则进行到下一步,否则返回上一步;将任务提交到作业调度器。
(3)作业管理/监控模块
作业管理与状态监控模块向当前系统用户提供一些管理操作,它的主要功能包括以下几个方面:
(1) 作业信息修改
在作业执行之前,更改作业的相关信息。
(2) 作业取消/删除
取消或删除某个作业。
(3) 作业状态监控
查看当前选中作业的执行状态及其执行信息,包括作业输入、作业执行异常等信息。
(4)用户身份模拟机制
如上一节所述,实现一个基于B/S结构的作业管理代理服务系统的关键就是用户身份模拟机制。下面介绍Windows HPC Server平台下该机制的实现流程,如图6所示。
3.4 客户端实现
系统客户端是基于Asp.net实现的,它部署在web服务器IIS中。通过访问三个平台提供的web服务来实现作业管理的代理服务。客户端主要提供了用户与作业管理服务交互的操作界面以及用户认证等页面。
4 总结
本论文提出了一种基于用户身份模拟机制的作业管理代理系统,该系统不仅可以应用在单一作业管理系统的环境中,还可以应用于异构、多作业管理系统的云计算环境中。
参考文献
[1]陈全, 邓倩妮.云计算及其关键技术.计算机应用, 2009年9月.
[2]肖云鹏, 刘宴兵.云计算关键技术与应用展望.数字通信, 2010, 37 (3) .
[3]周毅.浅谈广电的云计算技术.广播与电视技术, 2010, 37 (10) .
代理商信息管理系统 c语言 篇2
班学号:
学号:
姓名:
指导教师:
年
月
C语言课程设计报告
题目要求
基本功能:代理商信息采集、浏览、查询;代理商信息的输入、浏览、修改、查询、统计等。
需求分析
实现代理商信息采集和代理商品信息输入功能,要提供结构体的输入操作;实现统计功能,要提供相应的统计操作;实现查询功能,要提供查找操作;实现修改弄能,要提供修改操作;另外,还要提供键盘式选择菜单以实现功能选择。
总体分析
整个系统应设计为代理商信息采集、浏览、查询;代理商信息输入、浏览、修改、查询、统计等模块。
数据结构
数据结构财通结构体数组。
算法设计
主菜单选择功能,通过判断输入的选择进入相应的处理模块,包括数据输入、数据统计、数据查询、数据删除等。程序流程如下图所示:
数据结构设计
程序定义了一个运营商加入日期的结构体: struct data
{
};
定义了运营商信息的结构体:
struct acmer
{
};int number;
//运营商的编号; char name[20];
//运营商姓名; char agentnum[20];
//销售量; char phonum[20];
//电话号码; char goods[20];
//商品; struct data time;
//加入日期; int year;
//运营商加入的年份; int month;
//运营商加入的月份; int day;
//运营商加入的日期;
模块设计
1.主函数
Main函数通过调用menu函数输入一个数字来选择用什么函数以实现相应功能,同时这个功能通过switch选择结构来调用:
int main()
{
struct acmer agent[100];int n,i,k;printf(“请输入要统计的代理商数目:”);scanf(“%d”,&n);printf(“请输入代理商信息:n”);for(i=1;i<=n;i++)input(i,agent);menu();while(scanf(“%d”,&k),k!=0){
switch(k){ case 1:for(i=1;i<=n;i++)
{output(i,agent);}menu();break;case 2:stat(n,agent);menu();break;case 3:search(n,agent);menu();break;case 4:amend(n,agent);menu();break;case 5:sort(n,agent);for(i=1;i<=n;i++)
}
}
{
printf(“[%d]”,i);output(i,agent);}
menu();break;case 6:n=add(n,agent);menu();break;case 7:cancel(n,agent);menu();break;default:printf(“errorn”);menu();break;} return 0;2.menu函数
Menu函数是用来辅助main函数提供键盘是菜单以实现选择功能的:
void menu()
{
printf(“1 输出n”);printf(“2 统计n”);printf(“3 查找n”);printf(“4 代理商信息修改n”);printf(“5 排名n”);printf(“6 添加n”);
} printf(“7 删除n”);printf(“0 结束程序”);3.代理商信息添加模块
首先调用add函数以确定输入代理商的数目,然后用input函数来输入代理商信息:
int add(int n,struct acmer agent[]){
void input(int i,struct acmer agent[]){
printf(“姓名:”);scanf(“%s”,agent[i].name);printf(“代理商编号:”);int k,i;printf(“请输入添加代理商数目:”);scanf(“%d”,&k);for(i=n+1;i<=n+k;i++){ } return n+k;input(i,agent);
} scanf(“%s”,agent[i].agentnum);printf(“联系方式:”);scanf(“%s”,agent[i].phonum);printf(“销售量:”);scanf(“%d”,&agent[i].number);printf(“代理商品信息:”);scanf(“%s”,agent[i].goods);printf(“年:”);scanf(“%d”,&agent[i].time.year);printf(“月:”);scanf(“%d”,&agent[i].time.month);printf(“日:”);scanf(“%d”,&agent[i].time.day);4.代理商信息浏览
代理商信息浏览使用了output函数,可以同时输出代理商以及商品的所有信息:
void output(int i,struct acmer agent[]){
printf(“姓名:%s”,agent[i].name);printf(“代理商编号:%s”,agent[i].agentnum);printf(“联系方式:%s”,agent[i].phonum);printf(“销售量:%d”,agent[i].number);printf(“代理商品信息:%s”,agent[i].goods);
加
盟
时
printf(“间:%d %d %dn”,agent[i].time.year,agent[i].time.month,agent[i].time.day);} 5.数据删除
数据删除也是先读取数据文件中所有现存代理商信息。如果没有读到代理商则表示本身无记录,删除功能无法继续。
删除功能的实现主要在重新写文件时。通过比对需要删除的那条记录与已读取出的存放于结构体数组中的记录,如果相同,则跳过该条记录的重新写入,即重新写文件时,就会少了该条记录,于是完成删除功能。
int cancel(int n,struct acmer agent[])
{
char x[20];int i,j,flag,t;t=n;printf(“请输入要删除代理商的编号(按000结束删除):”);while(scanf(“%s,x”)!=EOF){ flag=0;
}
} if(strcmp(x,“000”)==0)break;for(i=1;i<=n;i++)
if(strcmp(x,agent[i].agentnum)==0){
} if(flag==0)
printf(“没有找到代理商信息n”);for(j=i+1;j<=n;j++)
agent[i]=agent[i+1];
flag=1;t--;break;return t;6.统计功能
统计功能主要统计销售量超过一定数量的运营商,使用了stat函数。若运营商超过给定数值k则输出该运营商信息,若未超过则不输出。void stat(int n,struct acmer agent[]){ int k,i,x;
} printf(“1:销售量超过k的代理商n”);printf(“2:排名前k的代理商n”);printf(“3:请选择,按4结束统计:”);while(scanf(“%d”,&x),x!=4){
} printf(“请输入k:”);scanf(“%d”,&k);switch(x){ case 1:for(i=1;i<=n;i++)
if(agent[i].number>k)
output(i,agent);break;case 2:sort(n,agent);for(i=1;i<=k;i++)output(i,agent);break;default:printf(“errorn”);} 7.修改模块
修改模块使用amend函数,当输入号码与已有号码一致时,输入新的商品信息,覆盖原有信息,若未发现输入号码,则输出“没有找到此人信息”。
void amend(int n,struct acmer agent[]){
} int i,k,flag=0;char x[20];printf(“请输入要修改的代理商编号:”);scanf(“%s”,x);for(i=1;i<=n;i++){
} if(flag==0)printf(“没有找到此人信息n”);if(strcmp(x,agent[i].agentnum)==0){
} break;flag=1;printf(“代理商品信息:”);scanf(“%s”,agent[i].goods);else printf(“修改成功n”);8.查找模块
查找模块提供了两种查找方式,即按姓名查找和按编号查找。前者使用了if(strcmp(x,agent[i].name)==0)语句,后者使用了if(strcmp(x,agent[i].name)==0)语句来实现相应功能。void search(int n,struct acmer agent[]){ int k,i,flag=1;char x[20];printf(“1 按姓名查找”);printf(“2 按编号查找”);printf(“请选择查找方式:”);scanf(“%d”,&k);if(k==1){
printf(“请输入要查找代理商姓名:
scanf(”%s“,x);
for(i=1;i<=n;i++)
if(strcmp(x,agent[i].name)==0)
{
flag=0;
output(i,agent);break;
”);
}
if(flag==1)
printf(“没有此人信息n”);} if(k==2){
printf(“请输入要查找代理商编号:
scanf(”%s“,x);
if(strcmp(x,agent[i].name)==0)
{
flag=0;
output(i,agent);
break;
}
if(flag==1)
printf(”没有此人信息n“);} }
程序
#include
”);{
};struct acmer {
};void menu(){
printf(“1 输出n”);printf(“2 统计n”);printf(“3 查找n”);printf(“4 代理商信息修改n”);printf(“5 排名n”);printf(“6 添加n”);int number;char name[20];char agentnum[20];char phonum[20];char goods[20];struct data time;int year;int month;int day;
} printf(“7 删除n”);printf(“0 结束程序”);void input(int i,struct acmer agent[]){
} printf(“姓名:”);scanf(“%s”,agent[i].name);printf(“代理商编号:”);scanf(“%s”,agent[i].agentnum);printf(“联系方式:”);scanf(“%s”,agent[i].phonum);printf(“销售量:”);scanf(“%d”,&agent[i].number);printf(“代理商品信息:”);scanf(“%s”,agent[i].goods);printf(“年:”);scanf(“%d”,&agent[i].time.year);printf(“月:”);scanf(“%d”,&agent[i].time.month);printf(“日:”);scanf(“%d”,&agent[i].time.day);void output(int i,struct acmer agent[]){
printf(“姓名:%s”,agent[i].name);printf(“代理商编号:%s”,agent[i].agentnum);printf(“联系方式:%s”,agent[i].phonum);printf(“销售量:%d”,agent[i].number);printf(“代理商品信息:%s”,agent[i].goods);printf(“
加
盟
时间:%d %d %dn”,agent[i].time.year,agent[i].time.month,agent[i].time.day);} int add(int n,struct acmer agent[]){
} int k,i;printf(“请输入添加代理商数目:”);scanf(“%d”,&k);for(i=n+1;i<=n+k;i++){ } return n+k;input(i,agent);int cancel(int n,struct acmer agent[]){ char x[20];int i,j,flag,t;t=n;printf(“请输入要删除代理商的编号(按000结束删除): while(scanf(”%s,x“)!=EOF){
flag=0;
if(strcmp(x,”000“)==0)
break;
for(i=1;i<=n;i++)
if(strcmp(x,agent[i].agentnum)==0)
{
for(j=i+1;j<=n;j++)
agent[i]=agent[i+1];
flag=1;
t--;
break;
}
if(flag==0)printf(”没有找到代理商信息n“);”);
} } return t;void sort(int n,struct acmer agent[]){
} void stat(int n,struct acmer agent[]){
int k,i,x;printf(“1:销售量超过k的代理商n”);printf(“2:排名前k的代理商n”);printf(“3:请选择,按4结束统计:”);struct acmer t;int i,j;for(i=1;i<=n-1;i++)
for(j=1;j<=n-1;j++)
if(agent[j].number
} t=agent[j];agent[j]=agent[j+1];agent[j+1]=t;
} while(scanf(“%d”,&x),x!=4){
} printf(“请输入k:”);scanf(“%d”,&k);switch(x){ case 1:for(i=1;i<=n;i++)
if(agent[i].number>k)
output(i,agent);break;case 2:sort(n,agent);for(i=1;i<=k;i++)output(i,agent);break;default:printf(“errorn”);} void amend(int n,struct acmer agent[]){
int i,k,flag=0;char x[20];printf(“请输入要修改的代理商编号:”);scanf(“%s”,x);
} for(i=1;i<=n;i++){
} if(flag==0)printf(“没有找到此人信息n”);if(strcmp(x,agent[i].agentnum)==0){
} break;flag=1;printf(“代理商品信息:”);scanf(“%s”,agent[i].goods);else printf(“修改成功n”);void search(int n,struct acmer agent[]){
int k,i,flag=1;char x[20];printf(“1 按姓名查找”);printf(“2 按编号查找”);printf(“请选择查找方式:”);
scanf(“%d”,&k);if(k==1){ printf(“请输入要查找代理商姓名:”);scanf(“%s”,x);for(i=1;i<=n;i++)
if(strcmp(x,agent[i].name)==0)
{
flag=0;
output(i,agent);
break;
}
if(flag==1)printf(“没有此人信息n”);} if(k==2){ printf(“请输入要查找代理商编号: scanf(”%s“,x);if(strcmp(x,agent[i].name)==0)
{ flag=0;
”);
} output(i,agent);break;if(flag==1)printf(“没有此人信息n”);} } int main(){ struct acmer agent[100];int n,i,k;printf(“请输入要统计的代理商数目: scanf(”%d“,&n);printf(”请输入代理商信息:n“);for(i=1;i<=n;i++)input(i,agent);menu();while(scanf(”%d“,&k),k!=0){
switch(k)
{ case 1:for(i=1;i<=n;i++)
”);
}
}
{output(i,agent);}menu();break;case 2:stat(n,agent);menu();break;case 3:search(n,agent);menu();break;case 4:amend(n,agent);menu();break;case 5:sort(n,agent);
for(i=1;i<=n;i++){ printf(“[%d]”,i);output(i,agent);}
menu();break;case 6:n=add(n,agent);menu();break;case 7:cancel(n,agent);menu();break;default:printf(“errorn”);menu();break;} return 0;
上机操作
1. 数据源
2. 编译、链接和运行 3. 运行结果
下为各界面图: 主函数
输入板块
浏览板块
在主界面输入1后按enter键
统计板块
在主界面输入2后按enter键
查找板块
在主界面输入后按enter键
添加板块
小结
基于移动代理的网络管理系统设计 篇3
1 基于移动代理网络管理系统的设计
1.1 移动代理技术
移动代理是一门新兴的技术,面世的时间较短,而且涉及到相当多的学术领域,所以迄今为止尚没有一个关于移动代理的完整且恰当的定义。一般认为,移动代理是一种独立的计算机程序,它可以将自己的过程代码、数据和控制状态打包,自主地在异构网络环境中,按照一定的规则移动,寻找合适的计算资源、信息资源或软件资源。利用与这些资源同处一台主机或网络的优势处理或使用这些资源,代表用户完成特定的任务,并可根据需要生成子代理,子代理具有同父代理相同的性质,代理间彼此独立工作或相互合作完成任务求解。移动代理技术具有自治性、智能性、协同性、定制性和安全性等特点[2,3]。
1.2 基于移动代理的应用系统结构
基于移动代理的应用系统,可由Agent用户、Agent服务器、Web服务系统、Agent转接系统4部分组成[4,5],Agent服务器和移动Agent取代了以往的Server和Client。当Agent用户需要搜索信息时,可通过连接管理器和执行引擎,根据用户的实际需求转移到相应的宿主系统,创建移动Agent,并通过Agent服务器访问Web服务器资源。通常宿主系统与资源服务系统在同一台服务器中,Agent对资源的访问只是同一系统中进程之间的通信,而不需要经过网络的传送。其结构如图1所示。
Agent服务器:由管理Agent、Agent库及Agent生成器组成。管理Agent负责管理和调度移动Agent,对多个Agent的活动进行协调。可以根据用户要求进行修改、删除、调用等操作。
代理坞:代理坞是移动代理生存和运行的环境。代理坞实质上是一个应用程序,它提供了相应的编程接口以支撑移动代理的装配和生成,每当该移动代理移动到一台目标主机时,相关的方法就会自动执行。Agent的移动路线在其移动时可以被其创建者动态地改变。
Agent用户:应用系统需要用户参与时,通过一个或多个接口Agent与用户交互。接口Agent主要是管理系统与用户的接口。
1.3 基于移动代理的网络管理系统
图2给出了基于移动代理的网络管理系统[2,6]的结构,包括以下几个部分:
(1)网络管理工作站(NMS):NMS除了与传统SNMP网络管理系统中的NMS提供相同的管理功能外,还负责根据任务移动代理的生成、派遣和回收以及处理移动代理的返回数据等;
(2)移动代理(MA):具有一定管理任务的代码(包括携带的数据),具有移动性和本地处理能力,负责在被管网元节点上执行预先安排好的管理任务,可以按照管理工作站预先规定的迁移路线和策略在各个被管网元节点间迁移并收集数据和进行网络管理操作;
(3)被管网元节点(NE):被管理的网络设备,可以是主机、服务器、路由器等;
(4)移动代理系统(MAS):即移动代理的运行环境,能够接收和执行代理,并对本地资源的访问提供相应的接口。为了使移动代理在网络管理系统中正常地迁移和运行,一般需要在NMS和NE上都具备MAS。
图3给出了基于移动代理的网络管理系统的工作流程图。
采用移动代理技术来设计网管系统,就是要充分发挥移动代理技术带来的好处。即它的远程数据处理能力和灵活性。移动代理在网管系统中的优势主要体现在网络的性能管理,故障管理和安全管理上,所以详细的设计了这3个模块。
这3个模块的设计原理和实现机制相似,都是采用静态代理加移动代理的方法。每一个模块由一个静态代理和一个移动代理组成,静态代理负责图形界面的生成,为移动代理提供执行的参数,负责产生和发送移动代理,并显示移动代理返回的结果。移动代理主要在远程设备上完成特定的任务,并把结果报告给静态代理。每一个模块的移动代理和静态代理密切协作,共同完成模块的功能。
(1)性能管理模块:性能管理模块提供对网元的流量、端口利用率和错误率等的监视功能,并能以文字或曲线图的形式显示出来;
(2)故障管理模块:故障管理模块通过计算网元的一些性能指标,并与预先设定的门限进行比较,来判断网络中是否出现了故障;
(3)安全管理模块:安全管理模块提供对网络中逻辑资源的安全管理,包括用户管理、访问控制、安全策略的制定和审计、入侵事件的检测和跟踪等。
2 与传统网络管理方式的比较
通过两者的比较,不难看出基于移动代理的网络管理系统有如下优点:
(1)缩短响应时间
采用MA技术后,移动代理的迁移计划是将一别被访问的被管节点进行列表。移动代理与有一定的智能,它具备足够的知识来处理各种管理情况,因此一旦网管站派遣出移动代理后,它将很少干预代理的行为,移动代理用根据各个被管节点和线路的具体情况作出动态的判断和决定,这样移动代理可以决定执行预先指定的任务还是选择其他更合适的操作,这就意味着对网络性能数据的采集和监控不需要在网络上传送,而是直接在被管节点上进行处理,大大地缩短了相应的时间;
(2)减少传输的数据流量
通过派发Agent驻留在被管理节点上,由于中间网管不需要对设备发请求命令,这样就大大减少其中的数据交互,这点对于带宽资源较为紧张,网络拓扑复杂的网络至关重要;
(3)利用MA提高心理的轮询速度,减小网络管理负担
利用移动代理技术可以有效地解决两个问题,生成多个拓扑代理,同时向网络的不同节点派发,由代理在远端执行网管操作,将过去由网管统一进行的收集、处理工作交给在网络不同部分的各个代理进行,而网管只负责对最后信息的接收。由于网管工作范围由一个网络变成几台网络设备或局部网络,运行的效率提高,同时多个代理的并发执行也大大提高了信息的检索速度,使信息的轮询间隔不受节点数增加的限制;
(4)配置网络设备更加灵活
在基于Mobile Agent的管理模式中,可以突破原有的MIB定义的限制,根据需要,在网络异常情况下定义相应动作,从而提高配置网络设备的灵活性。
3 结束语
从移动代理技术的发展历程和目前传统集中式网络管理系统存在的问题出发,对移动代理技术以及移动代理技术在网络管理中的应用做了研究,并且设计了基于移动代理的网络管理系统,最后在性能方面通过理论分析对两种管理方式进行了比较。
总的来看,基于移动代理的网络管理已经成为网络管理技术发展的主要方向,有一定的发展前景。移动代理技术因其灵活性,智能性和可扩展性,尤其是较大规模的异构网络的独特适应性,为网络管理提供了一种切实可行的解决方法。
摘要:在介绍了移动代理技术的基础上,阐述了基于移动代理的网络管理系统的原理和结构。将移动代理的特点和优点引入到网络管理系统,不仅在系统的响应时间和控制网络流量上弥补了传统集中式网络管理系统的不足,而且,提供了一种更具智能性和灵活性,也更能够适应现今复杂异构性网络结构的易扩展的网络管理系统的概念。
关键词:移动代理,网络管理,简单网络管理协议
参考文献
[1]朱森良,邱瑜.移动代理系统综述[J].计算机研究与发展,2001,38(1):16-25.
[2]张普含,孙玉芳.一种基于移动代理的网络管理系统及性能分析[J].软件学报,2002,9(13):2090 -2091.
[3]Stevens M,Weiss W,Mahon H,et al.Policy Frame- work [S].IETF Internet Draft,1999.
[4]Guenther O,Mueller R,Schmidt PM.A www-Based Method Management System for Sharing Statistical Mod- eles [J].IEEE Internet Computing,1997,1(3) :59 -68.
[5]Deng Robert H,Shailendra K Bhonsle,Wang Weiguo, et al.Integrating Security in CORBA Based Object Ar- chitectures [C].In:Proceedings of 1995 IEEE Sympo- sium on Research in Security & Privacy,1995:50-61.
[6]向正权,耿志刚,邵培甫.基于移动代理的网络管理框架[J].计算机工程,2002,28(3):286-288.
企业网站系统代理合同 篇4
甲方:乙方:.cn
就 甲方代理乙方企业网站系统事宜,经友好协商,达成如下协议:
一、代理内容
1.乙方通过中网互连网站中心(.cn)向客护推广和制作网站及网络相关产品的代理。
2.乙方授权甲方为(省)(市)的代理商,根据以下条款享受相关的代理优惠价,本合同乙方不设独家代理权限。
二、代理价格说明
A、金牌代理;指实付预付款或业绩达到 ¥ 2000 元以上或 ¥ 800 元代理费,企业网站系统模板价 6 折,业绩可累计晋级;
B、钻石代理:指实付预付款或业绩达到¥ 5000 元以上或¥ 1200 元代理费,企业网站系统模板价5 折;
C、定制的模板和定制的功能需按实际要求报价,甲方应提前提出方案和要求,让乙方报价,甲方再向用户报最终价格。
三、甲方的权利和义务
1、每年最少完成3个客户以上,否则乙方有权在第二年取消其该地区的代理资格。
2、可以独立承担民事责任的个人或企业单位.3、可以为用户提供必要的技术服务与咨询服务.4、拥有固定的服务场所,和通讯手段。
5、具有便利的上网通讯条件及必要的设备。
6、甲方需做好客户审核工作,严禁在系统中开通任何含有反动、赌博、暴力、色情(包括性用品)、损害他人名誉、盗版、黑客和任何违反法律法规和社会道德内容的网站;并不以任何形式发送垃圾邮件;一旦发现违反此条款的情况,乙方有权关闭甲方及其客户的网站系统。
7、网站系统知识产权属于乙方所有,甲方不得复制和私下修改乙方系统版权,不得在非受权的域名下使用网站系统。
四、乙方的权利和义务
1、乙方提供6×8小时电话或在线技术支持服务,技术人员在线 或电话 解答技术问题。
2、甲方及其用户需通过网站管理系统,后台管理编辑网站,乙方为甲方的客户可免费提供
原模板基础上修改制作1个 LOGO 和1个横幅 FLASH 修改一次。
3、乙方应做好系统和数据备份。如因服务器原因导致系统文件损坏,甲方提出后,乙方在24小时内进行问题处理;甲方应及时配合乙方的问题处理。
4、对于因系统本身原因造成的运行故障,乙方在24小时内响应并提供解决方案,但不包括
系统功能模块的增加和修改。如因乙方原因导致服务器无法访问或系统崩溃,乙方应尽快恢
复。
5、如因不可抗拒因素(指不能预见、不能克服并不能避免且对一方或双方当事人造成重大影
响的客观事件,包括但不限于自然灾害如洪水、地震、瘟疫流行等以及社会事件如战争、动
乱、政府行为等)导致服务器无法访问,乙方不承担任何责任。
五、法律效力
1.本协议条款的任何变更、修改或增减,需经双方协商同意后签署书面文件,作为本协议不
可分割的组成部分,并和本协议具有一样的法律效力。
2.本协议有效期自 双方签字合同日后,有效期一年。
3.本协议经双方签字盖章,乙方收到甲方应付款之日即生效。
4.本协议一式两份,双方各执一份。
5.因执行本协议发生的或与本协议有关的一切争议,甲乙双方应通过友好协商解决,如双方
协商仍不能达成一致意见时,则应提交仲裁机构。
■ 甲方:■乙方:(webchina.com.cn)
* 授权代表签字:* 授权代表签字:
地址:地址: 5
系统管理代理 篇5
1. 监控模块、管理站点以及管理代理之间的通信
模块之间的通信包括自定义消息、管理站点的命令转发、系统初始化的连接建立
(1) 系统初始化的连接建是管理代理随着受控的站点启动之后, 必须将各个应用程序的实例监控的模块注册信息接收, 和监控模块的建立初始相连接;必须将管理的站点发送过来的要求注册广播的报文监听, 和管理站点的建立初始连接。
(2) 管理站点的命令转发是管理站点的控制命令下达, 必须要通过管理代理转发给监控模块.管理站点的命令通过UDP报文发送给管理代理之后, , 管理代理先要识别出该命令是发送到哪个监控模块的, 通过Windows消息形式发送到指定监控的模块, 监控的模块将命令相应的操作处理完后, 管理代理再将其发送给管理站点一个响应报文。
(3) 监控模块和管理代理之间约定好的一系列的自定义消息, 并且向Windows注册, 保证其双方能够正确通过自定义的消息来进行控制和通信操作。
2. 发送、组织和收集监控信息
在受控是站点上, 管理代理和很多应用程序实例的监控模块之间是通过内存映射的文件来进行通信的, 监控信息一般存储在内存映射文件之中.
(1) 监控信息收集是遍历监控模块所对应内存的映射文件。通过遍历能够获得最新被监控的应用程序状态, 监控变量的值等等.
(2) 监控信息的收集时, 需要提供出有效同步的机制, 防止监控模块和管理代理同时的访问同一个监控信息的文件时出错。
(3) 监控信息组织是提供高效安全的数据存储的结构, 能把监控信息完整的记录下来。
(4) 监控信息发送是编码监控的信息, 构造出协议数据的单元, 在通过UDP报文形式发送到管理的站点.
二、关键的技术和它具体的实现
1. 内存文件的映射
(1) 内存映射文件的存储数据结构的设计。为了监控模块的工作需要, 也为了能够更方便的将监控的信息传送到管理代理, 监控模块需要把监控的信息用一定形式来存储.监控模块的监控目标是应用程序当中的变量.因为现在的软件开发中大多数采用面向对象的方法, 在其程序当中各种变量有层次结构上的关系, 并且需要在监控的信息当中体现出来。所以监控信息在逻辑上来说应该用树的形式存在的。
(2) 内存文件的映射实现的管理代理与监控模块间的通信。管理代理与应用程序实例监控模块之间数据交换所采用的内存文件的映射这种进程之间的通信方式.和文件映射和管理代理文件映射视图创建代码如下:
管理代理启动之后, 在它的内存文件的映射视图当中写入窗口句柄, 提供给各应用程序的实例读取.
在监控的模块初始化时, 在管理代理的内存文件的映射视图当中取得管理代理的窗口句柄, 向管理代理内存文的映射视图当中写入内存的文件映射对象名, 并且发送请求注册的消息给管理代理.
2. UDP报文的分组
(1) 分析UDP报文的分组过程。管理站点与管理代理之间采取UDP协议来实现通信, 是由本监控的系统自身特性与UDP协议特点来决定的。就网络的监控系统而言, 报文能够实时快速的传输比可靠的传输重要。所以在监控系统采取UDP协议来作为其下层的传输协议.
管理站点向管理代理发送的请求的报文都是比较小的, 报文当中只是一些对应用的程序实例来进行监控的请求信息, 一般一个数据包就能完成.而管理代理向管理站点发送的通知报文或响应报文的可能会很大, 由于主机与子网是限制接受允许的最大报文的, 所以必须把报文分解为几个较小的数据报来进行传送。和T CP协议不同, UDP协议并不需要完成这些数据包的重组和分解工作, 这些重组、分解和差错控制要用软件来实现.
(2) UDP报文的分组算法
如果TL<=MTU, 能把该数据报直接的发送, 否则到下一步;如果DF=1, 将丢弃该数据报, 否则到下一步;计算能够产生多少个分组, NFB=OTL/MTU;依次的产生第i个分组 (0<=i
其中, 定义了标志 (DF, 用于标识该数据报是否可分) 、包长度 (TL) 、包数 (NO) 、包号 (NUM) 、报文序列号 (ID) , 还有, 原数据报分组标识 (ODF) 、原数据报总长度 (OTL) 、分组数 (NFB) 、原数据报文序列号 (OID) 、最大传输单元 (MTU) 。
三、总结
本文详细的介绍了报文分组算法、内存文件映射和管理代理的功能模块设计等。并在简单的网络管理协议当中协议数据单元和管理信息库扩展的基础上, 设计实现了在应用软件使用的网络监控系统。管理代理是系统通信的中心, 能够通过UDP协议和管理站点来进行通信, 能够将受控站点管理的信息发送出去和把管理站点控制的信息转发的功能;内存映射的文件和受控站点上各个应用程序实例来进行通信, 将各个应用程序的实例监控信息的任务收集完成.
参考文献
[1]康松林, 费洪晓, 施荣华.网络应用软件监控系统监控模块的设计与实现[J].中南大学学报 (自然科学版) , 2004, 35 (6) :993-997.
多代理模型在补丁管理系统中的应用 篇6
随着局域网规模越来越大, 网络安全现状愈来愈严峻, 传统的手工补丁管理已很难满足日益增长的安全防范需求。安全漏洞是网络安全问题的主要溯源, 几乎所有的网络攻击都是基于操作系统或应用程序的漏洞进行的。消除漏洞的根本方法是及时安装相应的漏洞补丁, 但是在相应的漏洞补丁发布后, 离用户使用补丁程序, 更新系统往往还有一段时间。一方面是因为用户安全意识的薄弱, 往往要等到大规模的网络攻击开始时, 才会想起安装补丁。更重要的原因是, 补丁管理工作本身也比较繁琐枯燥, 以微软的Windows系统为例, 每个星期都有漏洞警报和补丁程序发布, 数日一小补, 数月一大补, 网络管理员不仅要追踪和应用这些最新的升级信息, 还要从中鉴别哪些补丁是必须和适用的[1]。
补丁管理系统的应用不仅能将网络管理人员从日益繁重的手工操作中解脱出来, 节约昂贵的人力成本, 同时也能针对不同严重的安全事故, 迅速地在大规模网络上部署解决方案, 确保网络安全应急响应的及时性和有效性。同时, 将多代理技术运用到补丁管理系统中, 可以解决跨网段, 实时对局域网的所有主机进行补丁升级[2,3]。
1 代理模型
一般来说, 代理具有以下特性[4,5,6]:
自治性 代理能够根据它的状态, 决定自己下一步做什么, 而不需要人为或其他外界的干预。
适应性 代理能够察觉到环境的变化, 并且能及时地根据这些变化做出相应的反映。
合作性 通过某种通信语言, 代理能与其他代理之间相互通信。
本文所提出的模型主要由三个模块组成:漏洞扫描模块、通信模块和知识库模块, 如图1所示。
扫描模块是漏洞检测工具, 用来扫描主机端口及其提供的服务, 它收集到的有价值的信息都存储在知识库中。漏洞扫描模块由接收模块、分析模块、评价模块和执行模块组成。接收模块接收外部指令, 对输入信息做相应的处理;分析模块利用知识库, 按照一定的思维状态对信息进行推理;评价模块对推理结果进行决策;执行模块根据决策结果进行相关的操作。
通信模块的主要作用是代理和补丁管理系统之间以及代理之间相互交换信息。这些被发送的请求信息包括需求信息、告警信息, 以及代理之间广播漏洞的检测信息。通信模块由通信语言和传输协议组成。通信语言是代理之间交流的基础;传输协议是通信的传输机制。
补丁升级模块接收补丁服务器发送过来的补丁, 对本客户机进行补丁升级。
知识库模块中的数据都是由漏洞扫描模块提供的, 用以分类存储相关的漏洞和服务的状态信息。
2 多代理补丁升级管理系统
补丁管理系统通过接收代理扫描模块的漏洞扫描报告和客户机已打的补丁信息, 判别局域网内哪些主机需要升级新的补丁, 并将所需补丁打包, 发送到相应的客户机, 在客户机由代理的补丁升级模块执行补丁升级, 同时对所有补丁升级活动进行记录。
补丁管理系统通过接收到的漏洞扫描报告, 获得整个局域网内客户机的漏洞信息。根据客户机的IP地址和每个漏洞信息的编号, 遍历漏洞补丁库的补丁列表。当找到一个补丁后, 为该客户机建立一个目录, 并在补丁数据库表中将该补丁对应的补丁文件ID记入补丁发送列表中。当该客户机收集完所有基于漏洞报告的补丁后, 开始根据客户机已打的补丁信息, 遍历补丁数据库, 查找可用的更新补丁, 再将可用的更新补丁写入补丁发送列表。之后, 整理发送列表, 消除重复补丁, 并根据补丁信息, 按照安装的先后排序, 同时写安装批处理文件。以上过程结束后, 与该客户机代理建立连接, 将补丁文件发送到客户机并执行, 并在日志中记录。如果连接失败或等待超时, 则放弃操作, 在日志中进行记录, 并开始为下一个客户机准备补丁包。补丁管理系统的逻辑结构如图2所示。
3 通信机制
在多代理系统中, 代理之间能够实现相互协作, 相互交流是至关重要的。代理之间的通信语言 (Agent Communication Language, ACL) 是代理之间交换信息和知识的手段。ACL根据消息传递表示的语义描述代理的期望状态, 并且有机处理代理的行动、规则和声明。
KQML (Knowledge Query and Manipulation Language) 是现在使用比较广泛的代理通信语言。KQML是一种基于消息的通信协议, 同时也是一种独立的信息交换语言。另外, KQML独立于网络传输机制 (TCP/IP, SMTP等) 、内容语言和内容实体。目前KQML己成为智能体通信语言的事实标准, 它定义了标准的语法和一些通用的关键字来支持智能体之间的实时通信。KQML语言是开放的, 它只提供一种标准, 可以遵循标准对它进行扩充, 以满足系统的需要[7,8]。
下面给出代理1和代理2之间的通信实例:
在图2中, 如果检测代理1想要知道主机1的IP地址, 但当它自己的知识库没有相应的信息时, 会向检测代理2发送询问信息, 代码如下:
(ask
:sender agent1
:receiver agent2
:language java
:ontology ipaddr
:content [hostsipaddr (“host3”) ]
:reply-with id1)
代理2向代理1发送的应答信息是:
(tell
:sender agent2
:receiver agent1
:language java
:ontology ipaddr
:content [192.168.1.3]
:in-reply-to id1)
代理和补丁服务器之间的通信机制采用C/S模式的socket通信方式, 与基本的socket通信方式类似。图3是代理和补丁服务器互相通信的基本框图。
4 代理性能仿真
为了测试代理的扫描模块对局域网内主机处理IP数据包速度是否有影响, 对局域网的网络状态进行了仿真。使用OPNET网络仿真工具, 搭建了一个网络环境。在进行数据包过滤仿真时, 局域网内有10台主机, 其地址分别为192.168.1.1~192.168.1.10, 掩码均为255.255.255.0。在其中任意三台主机上安装代理。
因为数据包的产生和发送是由活动期和静止期交替出现构成的流, 在活动期中, 每经定长时间 (平均时间) 有一个数据包到达, 而在静止期中没有数据包到达[9], 所以IP数据包可以通过ONOFF模型, 模拟其产生、发送和接收的过程。设定开始时间为5 s, ON状态的时间服从均值为10 s的指数分布, OFF状态的时间服从均值为90 s的指数分布, 包的到达时间间隔服从均值为1 s的指数分布, 包的大小服从在区间 (46, 1 500) 上的均匀分布。设定对某一台主机的所有端口进行扫描。设定仿真时间为2 h, 仿真结束后, 查看被扫描主机发送包的速率、发送数据的比特率, 如图4所示。
图4中上半部分显示的是主机没有被扫描的情况, 下半部分显示的是主机被扫描的情况。从图中可以看出, 当主机被代理扫描时, 并不影响主机与其他主机之间的网络通信。
5 结 语
多代理系统是一种比较新的技术, 在大规模、分布式、跨平台的应用中, 多代理系统拥有独特的优势[10]。将多代理技术应用到补丁管理系统中, 具有如下优点:能实现局域网内快速的漏洞检测和补丁升级功能, 具有清晰的系统结构和良好的可扩展性;具有优良的可移植性能;对网络系统和主机资源的占用较低。
参考文献
[1]Xfocus Team.居安思危——论补丁管理[EB/OL].http://www.xfocus.net/articles/200405/698.html.2004.
[2]许璇.补丁管理技术在网络安全中的应用[J].江苏警官学院学报, 2007, 22 (6) :153-156.
[3]王琳, 张小梅.软件补丁管理在网络信息安全中的作用及趋势[J].武汉理工大学学报, 2005, 27 (3) :87-89.
[4]Minjeong Kim, Seungyun Lee, Injae Park.Agent-orientedSoftware Modeling[A].Software Engineering Conference[C].1999:318-325.
[5]黄伟建, 宋孟丘, 王飞.供应链管理中多Agent系统的通信研究[J].微计算机信息, 2007, 23 (36) :112-114.
[6]张书台, 陈家慧, 桂亚东, 等.基于多代理的网格资源高可用信任调度模型[J].计算机工程, 2007, 33 (16) :88-91.
[7]刘淑华, 田彦涛.基于KQML语言的多自主移动机器人仿真系统[J].机器人, 2005, 27 (4) :349-353.
[8]李永强, 徐克虎, 陈建锋.KQML Agent语言在坦克分队CGF通讯机制中的应用[J].系统仿真学报, 2006, 18 (2) :359-361.
[9]孙荣恒, 李福建.ATM网络中ON OFF源迭加的泊松过程近似[J].重庆大学学报, 1996, 19 (6) :20-26.
系统管理代理 篇7
随着近年来电信行业的高速的发展, 电信企业的资源数据和资源类型与日俱增。业务系统众多、数据庞杂的现状使得传统的资源管理系统已无法满足电信企业对信息在速度、质量、深度、广度等方面需求的扩展。电信资源数据包括局内资源 (设备、端口数据) 和局外资源 (管道、光缆数据) , 但是新增的局内资源和局外资源导致了系统在广度和深度的延伸, 传统的资源管理系统耦合度越来越高, 导致了系统在可伸缩性和可扩展性很差, 不便于资源的无缝对接。基于以上问题本文引入了Java动态代理机制, 提出了基于面向切面的编程技术的解决方案, 方案将横切的关注点 (权限认证、操作日志) 等以可重复使用的方式封装在一个个独立模块中, 使得开发人员专注于业务逻辑的处理, 目的就是要降低系统中模块之间的紧耦合, 减少代码的冗余读, 增强系统的可维护性和可伸缩性来提到系统的质量。
2 电信资源管理系统概述
物理资源是电信运营商提供电信产品的基础, 物理资源承载业务资源, 一种或多种业务资源的既有组合成为可提供的一种电信服务。电信资源管理系统中的电信资源包括具有业务提供能力或者用于支撑业务提供的所有物理设施资源以及在这些设施上所开放的所有业务信息, 此外, 为了方便管理, 资源系统还记录一些客户等信息。
2.1 资源的分类
电信资源可分为网络资源和业务资源两大类, 其中网络资源分为物理资源和逻辑资源。物理资源用于描述物理信息, 包括基础资源、设备资源以及管线资源, 具体分类如下:
基础资源:空间资源、工程信息、资产卡片等。
设备资源:包括传输设备、交换设备、数据设备、DDF、ODF、等连接设备。
管线资源:包括管道、杆路、人井、光缆等。
业务资源用于描述每种网络所提供的网络业务, 以及这些网络业务如何构成一个客户业务, 即向客户提供的业务如何由一到多种网络业务构成。
3 AOP技术简介
面向切面编程 (Aspect Oriented Programming, AOP) .它是面向对象编程 (Object Oriented Programming.00P) 的延续, 它将横切关注点以一种更加通用的方式剖解开封装的对象内部。并将那些影响了多个类的公共行为封装到一个可重用模块.使这些组件专注于自身业务.完全不知道其他涉及到的系统服务模块, 目的是解决OOP中的对象紧耦合问题, 降低模块间的耦合度, 减少代码的冗余, 增强可读性, 提高软件质量。AOP思想的本质是用一种松散耦合的方式来实现独立的关注点, 通过组合这些实现来建立最终的系统。一个关注点就是一个特定的目的, 或者一个系统需要实现的目标。关注点是应用系统中很多的模块都用到的核心需求, 如:日志、事务、验证等横切关注.开发人员通过面向切面的编程.可以将程序的责任分开, 使对象与切面彼此独立, 关注点分为两部分:横切关注点和核心业务关注点。核心业务关注点指的是系统将要满足的业务逻辑需求, 表现为各个业务子系统。而横切关注点则是各个业务子系统都可能涉及的一些公共需求.例如日志记录、事务处理、安全处理等。
3.1 Java动态代理简介
在java的动态代理机制中, 有两个重要的类或接口, 一个是Invocation Handler接口、另一个则是Proxy类。每一个动态代理类都必须要实现Invocation Handler这个接口, 并且每个代理类的实例都关联到了一个handler, 当我们通过代理对象调用一个方法的时候, 这个方法的调用就会被转发为由InvocationHandler这个接口的invoke方法来进行调用, invoke方法:Object invoke (Object proxy, Method method, Object[]args) throws Throwable。这个方法一共接受三个参数, proxy:指代我们所代理的那个真实对象;method:指代的是我们所要调用真实对象的某个方法的Method对象;args:指代的是调用真实对象某个方法时接受的参数。Proxy这个类的作用就是用来动态创建一个代理对象的类, 它提供了许多的方法, 但是用的最多的就是newProxy Instance方法:public static Object new Proxy Instance (ClassLoader loader, Class<?>[]interfaces, Invocation Handler h) throws Illegal Argument Exception。这个方法的作用就是得到一个动态的代理对象, 其接收三个参数。loader:一个Class Loader对象, 定义了由哪个Class Loader对象来对生成的代理对象进行加载。interfaces:一个Interface对象的数组, 表示的是我将要给我需要代理的对象提供一组什么接口, 如果我提供了一组接口给它, 那么这个代理对象就宣称实现了该接口 (多态) , 这样我就能调用这组接口中的方法了。一个Invocation Handler对象, 表示的是当我这个动态代理对象在调用方法的时候, 会关联到哪一个Invocation Handler对象上。
4 使用Java动态代理解决资源管理系统的高耦合问题
传输资源管理系统中业务逻辑设计到大量的事务以及操作日志等, 这些功能的代码都切入到业务逻辑的前后, 导致了代码的冗余, 不利于维护并且也导致了模块耦合度增加。本文将以系统中的事务为例说明Java动态代理机制在系统中的应用。首先为系统中所有的业务类生成代理类, 代理类需要实现Invocation Handler接口, 并且要实现Invocation Handler的接口方法invoke。通过调用每个叶落逻辑的代理类来执行业务方法, 在业务方法在调用的同时, 事务将会在业务逻辑前开启事务, 业务逻辑执行完后, 提交事务。部分代码如下所示:
从以上代码中可以看到整个系统的所有的业务逻辑系统涉及到事务的操作代码很简练, 并且与业务逻辑是松耦合, 在系统使用后期如果业务逻辑发生变化要在业务逻辑执行前或者执行后要添加或者修改功能模块, 只需要在result=method.invoke (obj, args) ;代码前或者后添加相应的功能模块即可。通过这种方案很好的解决了系统模块之间的紧耦合, 并且其他功能模块可以得到重复利用。
5 结论
通过使用Java动态代理机制可以很好的将业务逻辑与其他功能模块进行分离, 达到模块之间的松耦合并且减少了代码的冗余, 也增加了系统的伸缩性变得增强。
参考文献
[1]郑波, 徐向阳恒.Spring AOP框架在企业应用中的研究[J].微计算机信息.2009.25 (3—3) :56—58.
[2]李宁, 张凝, 管严昭.企业AOP的应用研究[J].计算机与现代化, 2007 (2) :1 12—1 13.
[3]Griswold W G。Shonle M, Su Uivan K。et a1.Modular Software De—sign with Cresscatting Interfaces.IEEE SOFTWARE, January February2006.
[4]凌晨, 陈芳莉.面向方面程序设计技术[J].计算机系统应用, 2006 (2) :34-38.
[5]张桂珠刘丽陈爱国Java面向对象程序设计 (第2版) [M].北京:邮电大学出版社, 2005.
系统管理代理 篇8
关键词:嵌入式代理服务器,多平台,模块,类
当前, 面对愈演愈烈的恶意代码的感染和攻击, 用户采用的多种办法来保护信息系统的安全, 但最基本和最重要的还是为自身的操作系统及时升级和安装系统补丁。然而在一个内联网中, 普遍存在客户终端配置档次高低各异、操作系统分门别类 (包括windows系统、Linux系统及嵌入式系统) 等问题[1], 管理人员要想同时对不同配置操作系统终端设备及时下载安装补丁程序, 几乎是不可能的。面对终端节点种类繁多的用户, 繁杂的手工补丁程序下载安装又不能适应目前的网络管理要求。虽然目前LANDesk、WSUS和VRV等国内外软件可以完成内联网发布补丁的功能, 但这些系统多采用客户端与服务器的直接相连两层结构, 特点是针对性强, 但通用性和兼容性差, 对于不同的开发工具, 相互之间很难兼容, 无法跨平台使用;此外这种结构还存在拓扑容易产生低效、系统瓶颈和网络资源浪费等问题[2]。所以文中在分析补丁管理研究现状的基础上, 针对目前存在的问题, 提出了一套补丁分发与管理系统。
1 系统结构设计
系统分为补丁服务器、嵌入式补丁代理服务器和客户端三层结构, 系统增加了嵌入式补丁代理服务器。下面对嵌入式补丁代理服务器在系统作用和结构进行论述。
1.1 增添嵌入式补丁代理服务器主要从以下几个方面考虑
1) 伴随着3C融合进程的加速和我国传统产业结构的升级, 嵌入式系统正日益受到重视, 成为各领域技术创新的重要基础。嵌入式系统在消费电子、通信设备、装备设备、汽车电子、船舶电子、航空航天电子、轨道交通设备、金融商用设备、医疗机械、安防设备等众多领域得到越来越广泛的应用[3], 及时为这些嵌入式系统进行升级和补丁安装将是管理者面临的一个问题。本补丁管理系统通过嵌入式补丁代理服务器解决这一难题。
2) 嵌入式系统的软、硬件可裁剪, 结构灵活, 稳定性和经济性特点突出, 它在本系统的运用可降低产品在软硬件投入的成本[4]。
3) 统一的客户界面:客户端只需要一个通用的浏览器, 解决了统一用户界面的问题。
4) 平台独立性:浏览器所运行的平台与嵌入式补丁代理服务器所在的平台无关, 真正实现了跨平台。
5) 高可扩展性:服务器端可以在任何需要的时候进行功能的增强与扩展, 而且管理员通过客户端即可完成这些操作, 实现了远程管理和控制。
6) 并行性与分布性:嵌入式补丁代理不仅实现了跨平台, 也是一个多处理机系统和分布式系统, 可并发的处理多个不同用户的服务请求[5]。
1.2 嵌入式补丁代理服务器
嵌入式补丁代理服务器以ARM-Linux嵌入式技术作为整个系统软硬件实现的方式。该服务器的硬件框架使用ARM9系列芯片作为中央处理器。该服务器的软件框架由嵌入式操作系统、服务器模块以及数据库系统组成。嵌入式操作系统平台由ARM-Linux系统构建;代理服务器模块则由Boa服务器实现;数据库系统则由SQLite小型数据库系统实现[6]。使用上述技术设计并实现的代理服务器具有以往PC机代理服务器所无可比拟的优势, 那就是实时性强, 可靠性高, 结构小巧以及成本低。
嵌入式补丁代理分为补丁服务器交互层和客户终端交互层, 补丁服务器交互层负责嵌入式补丁代理服务器和各个补丁服务器之间的交互, 客户终端交互层主要是嵌入式补丁代理服务器与客户终端进行交互。
1.2.1 其中补丁服务器交互层由以下几个模块组成
1) 补丁漏洞信息接受模块:
嵌入式补丁代理服务器接受补丁服务器生成的补丁及对应漏洞的特征代码。
2) 补丁信息查询模块:
当嵌入式补丁代理服务器检测出客户终端漏洞后, 本模块将检测结果传给补丁服务器。
3) 代理参数配置模块:
配置代理所需的运行参数, 包括通信端口、客户终端信息、补丁服务器地址等参数。
1.2.2 客户终端交互层由以下几个模块组成
1) 补丁监听检测模块:
主动监听扫描被管理的设备得到本地终端的操作系统信息和所安装的其他软件特征代码列表。
2) 补丁查询模块:
查询数据库有关要安装升级的所有数据包和他们的系统版本号特征代码列表。
最后, 代理服务器将以邮件方式通报客户, 通报内容包括什么样的软件或补丁被安装或删除, 并还包括模块在安装过程中出现的失败次数或异常的输出错误等信息。
3) 补丁更新模块:
比较服务器和客户终端两个列表根据客户系统将需要安装、删除或升级所需补丁更新指令传递给补丁服务器和客户终端。
1.3 补丁服务器
包含补丁下载模块、补丁信息库维护模块和补丁安装模块。
1) 补丁下载模块:
其主要是与因特网连接, 实时监测软件系统或第三方厂商发布在web站点上的补丁更新状况, 自动检测、自动下载, 增量分离后保存在本地磁盘中的作用。为了防治从第三方下载补丁软件引起客户系统一些潜在安全问题, 本系统在软件下载到FTP、web服务器前, 先检测测试每个刚下载的软件再通过手工更新中心系统的补丁数据库系统, 并加入MD5校验, 确保补丁下载的可靠性。
2) 补丁信息库维护模块:
维护服务器端的补丁信息库, 对下载的补丁或数据包进行类的划分和定义, 然后根据类的定义系统进行程序的调用和运行。并依据行业标准的信息数据识别应用软件和操作系统的漏洞。通过定义自己的定制补丁和漏洞类, 在生成类库的过程中主要解决了补丁或数据包与漏洞信息的映射关系, 以支持单个应用程序、策略或者单个需求。然后把定义好的补丁或数据包以及对应的漏洞类别传送给嵌入式补丁代理服务器
3) 补丁安装模块:
接受嵌入式补丁代理服务器的指令对全局客户、任意客户、任何预先定义或根据需要动态定义的客户组通过不同类或子类的属性进行相应的补丁和数据包配置管理工作, 主要是推送补丁到客户终端。
1.4 客户终端
包括客户终端补丁信息库模块、客户终端下载模块和客户终端补丁安装模块。
1) 客户终端补丁信息库模块:
分析本地操作系统类型及系统特征库版本号, 上传给嵌入式代理服务器, 使得客户终端补丁信息科始终与代理服务器保持同步。
2) 客户终端下载模块:
根据嵌入式补丁代理服务器对本地列表和服务器列表的比较筛选, 客户终端得到所需下载的补丁列表后, 从指定的补丁服务器上下拉所需补丁。
3) 客户终端补丁安装模块:
根据待安装补丁列表, 自动生成相应的补丁安装批处理命令, 然后调用并执行以实现安装。安装过程中自动对所有补丁更新后的文件版本进行排序, 以免出现补丁更新失效的问题。
2 补丁管理系统原型调试
本系统测试主要用的平台是RedHat Enterprise Linux和ARM-Linux。在联机调试的过程中, 服务端、嵌入式代理服务器和客户终端的各功能模块均能实现设计目标。图1所示嵌入式代理服务器读出了客户终端的操作系统版本和CPU信息, 为补丁管理系统的补丁软件包的更新提供了基本信息;图2所示补丁下载安装部分的界面, 成功从补丁服务器下载了最新的补丁软件包。调试显示整个系统运行稳定, 并达到了补丁自动管理的要求。评测中由于本系统能够及时发送补丁文件至客户终端, 提高本地网络的补丁更新效率, 另外, 如果本地补丁服务器故障时, 代理也够自动从网络补丁源更新补丁, 保证了补丁更新的连续性。
3 结论
该文设计了在内联网中多平台的补丁管理系统, 提出了基于增加嵌入式代理服务器的三层系统结构。阐述了补丁管理系统设计与实现的关键模块技术与要点。通过功能评测, 证明了本系统能够很好的对Windows、Linux系列操作系统的补丁进行管理。由于该文提出的系统仅仅是在实验室的网络环境下通过了测试。如果将本系统应用到实际的大型网络环境中, 可能就需要对系统在实现细节上进行改进。
参考文献
[1]Symantec Corporation.Symantec Internet Security Threat Report[R].Volume16, 2011.
[2]张敏, 蔡书, 何远德.一种补丁管理系统的研究与设计[J].西南民族大学学报:自然科学版, 2010 (4) :636-643.
[3]王计元, 陆静.嵌入式Internet技术研究与应用[J].上海电力学院学报, 2009 (2) :169-172.
[4]苏恩杰.嵌入式系统网络化技术应用研究[D].西安:西北工业大学, 2004.
[5]丁苍峰, 薛宁静, 吕茂林.多平台的嵌入式Web服务器研究[J].福建电脑, 2009 (2) :73-74.
系统管理代理 篇9
近年来,随着分布式发电技术的快速发展,配电系统中分布式电源的渗透率提高,逐步形成所谓的主动配电系统或主动配电网络ADN(Active Distribution Network)[1]。与传统单端电源配电系统相比,ADN中的潮流流向不再是单向的,潮流分布也可能发生很大变化,这导致针对单端电源配电系统所配置的继电保护无法适应嵌入了分布式电源的ADN的运行要求,从而给配电自动化系统带来了挑战。分布式可再生能源发电出力的间歇性和波动性导致故障电流难以预测,且分布式电源中的逆变器可在相当程度上限制短路电流幅值[2],这些因素给保护的配置和整定带来了新的问题,进而也影响了故障诊断。
近年来,就主动配电系统的故障诊断问题国内外已经有了一些研究报道。文献[3]针对含多电源的复杂配电系统,提出了一种基于矩阵算法的多重故障定位统一判据。文献[4]联合采用搜索树和矩阵算法对故障区段进行准确定位。考虑到由直接电流控制的变流器类分布式电源所提供的短路电流最大不超过其额定电流的1.5倍[2],这会导致文献[3]、[4]中提出的故障判据难以准确识别故障。文献[5]提出通过分析有源配电系统非故障区段与故障区段两侧开关短路电流的幅值关系进行故障诊断。文献[6]提出一种基于最小电压偏差向量2-范数的故障定位算法,考虑了配电系统三相不平衡状态,原理上也适用于处理含高渗透率分布式电源的情形。文献[7]提出配电系统故障定位双层模型,上层利用遥信信息建立解析模型,下层则以遥测数据为基础建立模型,所提模型可容纳警报信息的误报与漏报。
前已述及,分布式电源接入配电系统导致针对单端电源配电系统所配置的继电保护无法适应其运行要求。国际大电网会议(CIGRE)的保护与自动化专业委员会(B5)在2012年提出[8],含分布式电源的非放射型(网络化)配电系统要求采用新原理的继电保护技术,以适应主动配电系统的需求;换言之,在主动配电系统中应该引入输电系统的继电保护技术,可采用电流差动保护和方向比较保护来解决。这样,在对主动配电系统进行故障诊断时可借鉴输电系统故障诊断模型与方法[9,10],充分挖掘保护和断路器警报信息的特征。随着分布式电源渗透率的不断提高,主动配电系统的分布式特性会越来越明显,数据交互越来越多,信息传递过程中就更容易发生通信拥挤和堵塞。
在上述背景下,提出一种基于多代理系统MAS(Multi Agent System)的针对中高压主动配电系统的故障诊断方法。采用MAS这种分布式智能处理方式,一方面可以避免集中式处理机制对系统整体信息的高度依赖,另一方面也能够明显降低馈线自动化系统对通信带宽的需求。MAS具备自主性和智能性,符合主动配电系统所具备的分布式特点,且已经在电力系统恢复、协调控制等方面得到广泛应用[11,12,13,14,15]。不过,有关基于MAS的主动配电系统故障诊断问题,尚鲜有研究报道。本文首先给出了基于母线/节点代理BA(Bus Agent)的主动配电系统MAS框架,包括代理工作方式和信息交互通信机制;接着,基于电气量信息、保护动作信息和断路器变位信息,发展了计及Agent间关联关系和信息缺失影响的故障诊断解析模型;然后,给出了各Agent利用其通信和协商机制实现故障诊断的过程;最后,采用32节点测试系统对所提的故障诊断模型与方法进行了说明。
1 主动配电系统故障诊断的MAS基本架构
1.1 MAS架构设计
与传统集中式配电系统故障诊断方法不同,本文提出由BA组成的完全分布式MAS框架,用以实现主动配电系统的故障诊断,如图1所示。该MAS的架构体系分为2层,上层是由BA组成的MAS层,下层是由配电系统构成的物理层。BA配置于配电系统的各条母线上,它对应的物理层区域包括该母线以及与该母线直接相连的各条线路,如图1虚线框中所示。各Agent可以对相应的物理层区域进行数据采集和控制决策,也可以实现与相邻BA的信息交互。需要指出,位于相邻BA重叠区域内的线路同时属于2个BA的诊断区域,可通过Agent间的协调机制确定最终诊断结果,这种冗余性有助于提高故障诊断结果的准确性。这种MAS框架是分布式的,且不受配电系统拓扑结构的影响,可扩展性强。当配电系统新增或减少分支线路时,只影响与之相邻的母线/节点,可通过修改该母线的BA配置文件来适应新的拓扑结构。
1.2 MAS通信机制
Agent通过通信获取相关的必要信息,其交流和通信能力表征其重要特征。MAS系统可以利用配电调度自动化系统的各种通信手段构建通信网络。以太无源光网络EPON(Ethernet Passive Optical Network)具有高带宽、低成本、易维护等特点,已成为现代配电自动化系统主流通信方式之一[16]。Agent可采用EPON构成BA之间的通信通道,以实现代理之间的信息交互。在此基础上,还可增加通信设施的冗余性来改善通信传输的实时性和可靠性,例如,建立物理双通道备份机制、实施通道自检机制[17]等。
本文基于智能代理基金会FIPA(the Foundation for Intelligent Physical Agents)规范框架[11]设计了MAS通信机制。FIPA请求交互协议允许一个Agent(发起者)请求(request)另一个Agent(参与者)执行一个动作。参与者处理该请求并决定同意(agree)或者拒绝(refuse)该请求。Agent通过符合FIPA标准的ACL(Agent Communication Language)实现无缝通信,通信内容一般包含发送者、接收者和内容参数。在此定义了如表1所示的“查询(query)”、“通知(inform)”、“更新(update)”3类消息类型。这样,相邻BA之间可进行信息交互,信息类别包括电气量信息、保护动作信息、断路器状态信息及故障诊断结果等。例如,在图1所示的系统中,母线代理BA1可向相邻的母线代理BA2发出对断路器状态的“查询”请求,母线代理BA2在收到该请求后,回复所请求的断路器状态。
这里采用JADE(Java Agent DEvelopment framework)进行MAS设计。JADE包括一个代理赖以生存的运行环境、开发代理应用的类库及用来调试和配置的一套图形化工具,为分布式多代理的应用提供了基础设施和最基本的服务[18],其通信设计符合FIPA规范。在JADE中,将Agent的各种任务定义为Behaviour类,通过调用Behaviour类来执行相应任务。每个Agent将任务放在各自的任务池中,依次取出执行,每完成一项任务后就将其从任务池中删除,直到完成所有的任务。
2 Agent诊断模型
配电系统发生故障时,会出现电气量明显变化、保护动作、断路器变位等特征信息,充分利用这些信息有助于实现准确而快速的故障诊断。在主动配电系统中,一般采用差动保护和方向比较保护[8,16,19,20,21]。在此基础上,针对主动配电系统,本文综合利用电气量信息、保护信息和断路器信息构造故障判据,并计及通信故障的影响,构建多代理故障诊断解析模型。然后,采用改进的生物地理学优化BBO(BiogeographyBased Optimization)算法[22,23]和禁忌搜索TS(Tabu Search)的混合寻优算法(BBO-TS)求解优化变量,利用BBO的全局搜索能力和TS的局部搜索能力来搜索解空间,以期求得全局最优解。
2.1 电气量判据
对于图2所示的母线M,当其发生故障时,与其直接相连的所有元件流入该母线的电流之和等于故障点的短路电流。此时,与该母线相连的所有元件的故障电流正序分量(以离开母线的方向为正方向)满足下述关系:
其中,Ik为与母线M直接相连的所有元件流出该母线的电流之和;Ii(1)(i=1,2,…,nk)为线路i故障电流的正序分量,nk为与母线M直接相连的所有线路的数目;Iset为设定的接近0的电流阈值。
同理,当线路发生故障时,存在类似关系。以图3所示的线路为例,存在:
依据上述原理,可建立基于故障电流正序分量的0-1故障判据,用m表示,其值定义为:
2.2 Agent模型的建立
2.2.1 故障假说
Agent模型的决策变量即为Agent所对应区域内的故障假说。假设某个Agent所对应停电区域内存在nd个设备、nr个保护装置及nc个断路器,故障假说H可表示如下:
其中,D=[d1,d2,…,dnd],di=1或0分别表示该BA覆盖区域内第i条线路/母线处于故障或正常状态;R=[r1,r2,…,rnr],ri=1或0分别表示该BA覆盖区域内第i个主保护/后备保护动作或没有动作;C=[c1,c2,…,cnc],ci=1或0分别表示该BA覆盖区域内第i个断路器处于分闸或合闸状态;O=[o1,o2,…,ono],oi为关联因子,oi=1或0分别表示异地BA故障触发或未触发本地第i个后备保护动作,no为关联因子个数(详见2.3.2节)。
2.2.2 目标函数
当一次设备(母线、线路和变压器等)发生故障时,其状态信息和故障信息均通过电力通信系统进行传递;此时若二次设备(保护等)或者关键通信元件发生故障,母线代理可能无法获取可靠的警报信息,这会使得故障诊断问题复杂化。考虑二次设备及通信元件故障的影响时,Agent故障诊断模型可描述为:
其中,ΔE*(H)为设备故障差异度指标;ΔE°(H)为通信系统故障差异度指标;ΔF为故障假说中故障数目最小化指标。
(1)设备故障差异度指标ΔE*(H)。
ΔE*(H)反映电气量判据、保护、断路器的期望状态与实际状态之间的差异程度,其计算公式如下:
其中,nm为Agent停电区域内电气量判据的个数;mi、rp和ck分别为第i个电气量判据、第p个保护(主保护或后备保护)和第k个断路器的实际状态;mi*、rp*和ck*分别为mi、rp和ck的期望状态,均为故障假说H的函数。其中,mi由式(3)求得。
(2)通信系统故障差异度指标ΔE°(H)。
ΔE°(H)反映保护、断路器的观测状态与实际状态之间的差异程度,用以识别通信异常情况。其计算公式为:
其中,rp°和ck°分别对应rp和ck的观测状态。
通信异常主要包括信息丢失和信息畸变2种情况:①信息丢失,即信息状态无法获取,属于未知状态;②信息畸变,即信息传输过程中发生畸变,信息状态由1变为0或由0变为1,但信息仍为已知状态。通信过程中信息丢失或者畸变的情况越严重,故障诊断结果的可行性就越低。无论发生通信中断或信息包偶然丢失,当无法获取信息的观测状态时,可给定相关信息的状态取值为0.5。在传统的集中式故障诊断中,不可观测的信息的状态被默认为没有变化,即保护没有动作或断路器没有跳闸。这种处理方式直接将丢失信息判定为已知信息,可能得到错误的差异度指标,进而导致错误的诊断结果。
(3)故障假说中故障数目最小化指标ΔF。
ΔF是在差异度指标一样的情况下,按照一定的原则确定正确的故障假说。由于单个设备故障的概率一般大于2个甚至多个设备同时故障的概率,因此在警报差异度指标一样的情况下,故障设备总数、异地故障未切除总数越少,故障假说H的可信度越高。ΔF的计算公式为:
其中,α为故障假说中故障数目最小化要求在故障诊断目标函数中所占的权重,一般取很小的数值,如0.01。
2.3 期望状态的定义
2.3.1 电气量的期望状态
电气量的期望状态与Agent所辖区域内的设备相对应。当所保护的元件di发生故障,则其期望状态应为1,即:
2.3.2 保护的期望状态
(1)线路或母线主保护的期望状态。
线路或母线主保护的动作逻辑为:当所保护的元件di故障,则主保护ri应该动作,即式(10)成立。
(2)线路近后备保护的期望状态。
线路近后备保护的动作逻辑为:元件故障后,所对应的主保护ri应该动作,但实际拒动,此时近后备保护rj应动作,即式(11)成立。
其中,“塥”表示逻辑“与”;表示主保护ri拒动。
(3)线路远后备保护的期望状态。
线路远后备保护的动作逻辑为:本地所对应的近后备保护rj期望动作,但实际拒动或者关联路径上的故障没有切除,则远后备保护rl应动作,即式(12)成立。
其中,“⊕”表示逻辑“或”;rj为安装位置与rl相同的近后备保护;Zi(rl)为位于rl保护范围内且与rl属于同一BA的设备集合;p(rl,dj)为从保护rl安装位置到设备dj的关联路径上的断路器集合;ol为本地BA与相邻BA的关联因子,表示是否存在异地BA设备故障触发rl动作。异地BA设备故障触发rl动作的条件为:该设备位于rl保护范围内且其关联路径上的断路器未跳闸。
2.3.3 断路器的期望状态
任何能够跳开断路器cj的保护rx动作并向断路器cj发送跳闸指令,则cj应动作,即式(13)成立。
其中,Rrelated表示出口为cj的保护集合;表示连续的逻辑加法运算。
3 基于MAS的主动配电系统故障诊断策略
针对所属主动配电系统中相关设备的实际情况,BA可处于2种不同的Agent状态:①待机状态,此时BA覆盖区域内无停电设备,无需执行故障诊断任务;②诊断状态,此时BA覆盖区域内出现停电设备,需要执行故障诊断任务。对处于诊断状态的BA,基于MAS实现故障诊断的主要思路如下:
a.首先根据遥测及遥信数据求解Agent的故障诊断解析模型,得到局部最优解;
b.根据Agent间的冗余关联进行沟通和协调,进一步确定停电范围内的全局最优解。
详细的故障诊断过程如图4所示,大致可分为识别故障关联代理、确定局部最优故障假说、关联部分匹配校验、局部最优故障假说修正以及保护动作性能评价5个部分。
(1)识别故障关联代理。
主动配电系统正常运行时,全部BA处于待机状态。发生故障后,区域内的保护启动或者断路器变位警报信息触发BA进行失电校验。如果校验表明该BA覆盖区域内有设备处于失电状态,则将该BA切换为诊断状态,否则该BA保持待机状态。将切换为诊断状态的BA称为故障关联BA,故障发生后,所有故障关联BA将覆盖整个停电区域。需要指出,处于待机状态的BA仍能通过通信端口与其他BA进行信息交互,协助其他BA进行故障诊断。
(2)确定局部最优故障假说。
每个故障关联BA依据停电区域内的元件构建故障假说向量H。基于MAS信息交互,向相邻Agent发送“查询”消息以获取相关的电气量信息、保护动作警报和断路器跳闸警报。建立Agent故障诊断解析模型并采用BBO-TS算法获得本地BA的局部最优故障假说,并将其存储于数据库。
(3)关联部分匹配校验。
每个故障关联BA在确定局部最优故障诊断结果后,通过MAS的信息交互“查询”本地代理与相邻代理关联部分的故障假说,并对该部分的假说进行关联匹配校验。关联部分包括本地代理与相邻代理之间的物理重叠区域,以及本地BA后备保护范围内除本地设备外的区域。关联匹配校验指检查不同BA对关联部分的故障假说的一致性,定义关联匹配校验函数S如下:
其中,di′、rp′和ck′分别为相邻BA局部最优故障假说中第i个设备、第p个保护和第k个断路器的状态;Zrelated为与相邻代理的公共区域;Zo(rl)为除本地设备外,rl保护范围内的设备集。
如果BA满足关联匹配校验(即S=0)且在给定时间内没有收到相邻BA的“通知”消息,则认为当前局部最优故障假说为全局最优故障假说H*,然后对故障设备、可疑动作及警报进行识别。
如果BA不满足关联匹配校验(即S≠0),则标识导致关联匹配校验失败的决策变量集为矛盾假说g=[g1,g2,…,gn],其中gi为矛盾因子。依次对S中的决策变量取非,使得S减小的决策变量即为矛盾因子,并将该变量信息发送“通知”消息给相邻BA,之后进入第(4)部分。
(4)局部最优故障假说的修正。
当关联匹配校验失败时,需修正当前的局部最优故障假说以期获得整个停电范围内的最优故障假说。具体修正方法如下。
步骤1:定义修正前后BA局部最优故障假说分别为H和H′。确定H′的方法如下:优先确定H′中任一矛盾因子g′i,即令(对gi取非),其余变量采用BBO-TS重新求解,以求取修正后BA局部最优故障假说H′。
步骤2:计算BA的信息修正代价。定义Ccost为BA的信息修正代价,采用下式计算:
其中,E(H)和E(H′)分别为原故障假说H和修正后的故障假说H′的目标函数值;ΔT为BA数据丢失的影响因子,这里给定为0.5,用来表征对于不同BA的修正代价相近时,数据丢失越严重的BA的故障假说的可行性越低。
步骤3:比较本地BA与相邻BA的Ccost值。遵循信息修正量最小的原则,对局部最优故障假说做如下修正:如果本地BA信息修正代价较大,则保持局部最优故障假说H不变,同时向相邻Agent发布“通知”消息;否则,将本地BA局部最优故障假说更新为H′,同时向相邻Agent发布“更新”消息。
步骤4:返回上述第(3)部分(即关联部分匹配校验),重新校验修正后的局部最优故障假说,进而确定全局最优故障假说H*。
(5)故障设备、可疑动作及警报的识别。
根据全局最优故障假说H*,可识别5类差异度错误(误动/拒动/误报/漏报/数据丢失)。以保护动作特性为例,其识别方法如表2所示。同理可对断路器的动作特性进行评价。
需要指出,通信中断可导致Agent间的信息交互失败,从而影响故障诊断。当BA受到通信中断影响时,可采用如下方法解决:①Agent模型将对由通信中断引起的丢失数据进行自适应处理(详见2.2节),然后求解解析模型以获取局部最优故障假说;②BA保持与其他通信正常的相邻BA进行信息交互,此时全局最优解为通信正常范围内的全局最优故障假说。
注:“/”表示对应的状态为0或1。
4 算例
以图5所示的32节点测试系统[24]为例来说明所提出的方法。假设故障场景为:线路L1中部、母线2和线路L17发生三重故障且BA1与BA2间通信中断。故障发生后,接收到的保护和断路器的警报信号为:线路L1两侧主保护动作,线路L2上靠近母线3侧后备保护动作,线路L17上靠近母线17侧近后备保护动作;线路L1两侧断路器跳闸、线路L2两侧断路器跳闸,线路L3靠近母线2侧断路器跳闸,线路L17两侧断路器跳闸。这是一个区域内出现三重故障,同时伴随通信故障、保护及断路器错误动作的复杂情况。
首先,接收到警报的BA进行失电校验,确定下列BA进入诊断状态:BA1、BA2、BA3、BA17、BA18。基于JADE平台实现Agent间的信息交互,部分通信消息如表3所示。采用基于MAS的故障诊断方法,最终得到如表4所示的全局最优故障假说。
通过分析全局最优故障假说,可得到诊断结果为:线路L1、母线2及线路L17故障,BA1与BA2通信中断,母线2主保护动作警报漏报,线路L2靠近母线3侧后备保护误动并导致线路L2靠近母线3侧断路器动作,线路L17靠近母线18侧主保护拒动。
注:X1/X2/X3中X1、X2、X3分别表示实际状态、期望状态、警报状态;“/”表示“不存在”。
对上述复杂故障情形的故障诊断结果表明,基于MAS的主动配电系统故障诊断系统具有如下特征。
a.能够充分挖掘本地BA信息与异地BA的关联特征。在通信中断时,能够对异地故障进行估计。例如,利用BA1与相邻Agent的关联性可以预测:故障发生在线路L2且BA1覆盖区域内无其他故障。
b.可以计及数据丢失对Agent模型的影响。通过对丢失数据进行特别处理,避免了把丢失数据模拟为错误信息从而可能导致的错误诊断结果。例如,对于BA1和BA2之间通信失败的情形,按照传统的集中式处理方式一般将未接收到的警报信息均赋值为0,这会导致L1无故障、L1靠近母线2侧保护拒动这样的错误诊断结果。在本文中给出的基于MAS的故障诊断方法中,区别处理丢失数据和漏报数据,更加合理。
5 结语