当前, 大部分已成熟的设备实时监控系统都是采用C-S (Client-Server) 结构[1], 但随着设备种类和规模的扩大, 特别是有些通信设备, 同种设备类型多、分布散, 其硬件平台、软件系统和通信协议都不尽相同, 对这些设备的实时监控系统在设计上就要考虑对诸如多平台、信息交换跨越多种物理信道等综合复杂环境的适应。在这种情况下, 广泛采用的是集中式结构和C/S结构, 已不能满足系统动态变化和扩展的要求, 而C/S结构又存在着系统负荷过于集中在服务器方等问题。因此, 本文讨论了一个分布式监控系统平台的设计与实现技术, 引入一种基于C-S-A (Client-ServerAgent) 结构的设备监控系统设计方案, 并对系统的模块划分和实时性问题进行了详细设计。
1 系统结构设计
根据受控设备类型比较多, 分布比较分散的特点, 该设备实时监控系统体系结构设计方案为C-S-A结构, 即“客户端-服务器-代理”模式。按照这种模式, 设备实时监控系统设计分为三个子系统:监控客户端、监控服务器和受控代理, 三者之间是C-S-A结构。如图1所示, 监控客户端位于监控中心上, 监控服务器位于管理中心上, 受控代理分布于各受控设备上。
多个设备实时监控系统通过监控服务器进行互联, 构成分布式设备状态监控系统, 使得监控客户端能够获知异地受控设备的相关信息, 如图2所示。
1.1 监控客户端设计
监控客户端的设计基于Windows2000/XP平台, 采用面向对象的设计方法[2], 主要实现面向用户的人机接口和各项监控应用功能。
(1) 监控功能。监控客户端能够实时掌握各受控设备的工作状态, 并能够根据用户的需要对指定受控设备进行重点监控。同时可以定时向监控服务器查询受控设备的工作状态, 并对监控服务器的应答作出响应并进行相应处理。
(2) 批处理功能。监控客户端允许用户一次选定多个本地受控设备, 并向选定的若干受控设备同时发送相关指令, 并接收指令执行结果, 实现批量处理功能。
(3) 态势统计功能。监控客户端可分别依据当前掌握的本地受控设备的状态信息和日志记录的历史状态, 统计受控设备的使用率、故障率, 依据受控设备的用户信息得出统计数据, 以统计图表的形式展示出来。
(4) 日志审计功能。监控客户端实现系统的日志审计功能。可采用自动/人工的方式对日志文件进行维护, 按时间段记录受控设备的工作状态。可以采用特定标识 (如受控设备型号) 为索引, 提供分类查询功能。
1.2 监控服务器设计
监控服务器的主要功能就是随时接收来自监控客户端的监控请求, 向受控代理发送命令并将受控代理返回的状态数据向监控客户端作出应答。
同时, 监控服务器具有分布式数据库系统的功能。监控服务器具有本地所有受控代理的所有实时数据的副本, 监控客户端可以对监控服务器发出一定的请求, 在监控服务器上完成对数据的所有后续处理, 包括转储、统计、查询、分析、打印结果等, 同时完成整个系统并发的数据访问[4]。
1.3 受控代理设计
本文所论述的设备状态实时监控系统能够适应多平台、信息交换跨越多种物理信道等综合复杂环境, 这主要体现在对受控代理的兼容性设计。受控代理分布于各受控设备上, 由于受控设备中运行的系统平台不同, 例如Windows、Linux和Solaris等, 所以受控代理在设计上能够兼容以上系统平台。
2 系统实时性设计
监控系统再对监控数据的处理上能够具有一定的实时性, 能实时接收来自监控客户端的监控请求。要求在一定的时间限期内或指定的某一确定时刻从外部系统接收数据, 并按照指定的要求处理数据, 再对外部系统做出及时的响应。系统处理的数据都有一定的时效性, 即这些数据只在一定的时间范围内有效, 超过时间后这些数据便失去了实时意义。由于本文的实时监控系统是基于TCP/IP网络的, 为了保证系统中数据的实时传输和实时调用, 对于实时监控系统的服务器端, 需要在报文通信控制模块和数据库这两方面增加实时性设计。
2.1 通信控制模块实时性设计
通信控制模块负责创建管理与异地监控服务器之间通信的各通信线程。在通信过程中, 对不同的通信任务, 由于其重要性, 实时性的要求不同, 引入优先权原则, 根据各实时任务的轻重缓急, 赋予不同的优先级, 以便让某些紧急的作业, 得到及时的处理。通过不断调整线程的优先级, 以获得最佳的总体响应性能。
对每个通信线程, 使其对应一个唯一的“通信线程控制块” (Communication Thread Control Block) , 通信控制模块随服务端程序启动而启动, 根据设备表信息创建通信线程, 建立连接, 服务器端的所有通信线程控制块构成一个双链表结构[3] (如图3所示) 。系统对各通信线程进行集中管理, 可实现通信合理调度[4]。
该双向链表主要思想体现在以下几个方面。
(1) 当系统中增加某个通信线程对象的时候, 自动生成一个存放线程信息的“通信线程控制块”并添加到通信线程队列末尾。
(2) 系统执行过程中, 把所有的“通信线程控制块”组成一个线程队列;当监控系统发出操作命令时, 检索通信线程任务队列, 找出相应线程, 发送控制消息。
(3) “通信线程控制块”的优先级分为“紧急”与“正常”两级, 进行采集数据的传输、连接的维护等任务时, 进程的优先级设为“正常”;当发送控制命令, 进行远程操作时, 为保证实时任务的及时响应, 将有关通信进程的优先级设为“紧急”, 将线程优先级设为“紧急”, 任务完毕, 将优先级恢复为“正常”。
(4) 当某一个通信进程属性发生变化的时候, 要修改“通信进程控制块”的内容。
(5) 如果通信连接故障、中断等时, “通信进程控制块”的状态值设为0。
(6) 当从系统中删除线程对象的时候, 从通信线程队列中删除该线程对象对应的“通信线程控制块”, 然后释放。
经过验证表明, 再系统的设计中应用“通信线程控制块”链表, 可以使系统的任务调度更加有序合理, 系统的执行效率得到了很大的提高, 满足了系统实时性的要求。
2.2 数据库的实时性设计
为了满足系统实时性要求, 数据库在设计上包含数据库结构设计和数据库管理程序设计两部分组成。为了保证系统的有效性, 数据库结构设计可以分为三类:实时数据库、当日数据库和历史数据库, 实时数据库存放实时数据, 当日数据库存放当日数据, 历史数据库存放历史数据。三个数据库通过数据库管理程序进行管理和数据调度。如图4所示, 服务器端接收本地/异地监控数据后, 将数据存到实时库内, 数据库管理程序定时将实时库内的数据全部存到当日库中, 每日定时将当日库内的数据压缩到历史库中。
对服务器端数据库采用分层的方法, 从以下三个方面进行设计。
(1) 对系统实时性的要求。对于数据库的操作, 一般有插入、更新和删除三种操作, 其中实时库和当日库是速度最快的一种。当接收监控数据后, 直接更新实时库内的数据, 从而减少整个数据库的刷新耗时, 提高系统响应速度。
(2) 数据库的并发访问问题[6]。处理实时系统的数据, 不可避免的要遇到数据库的并发访问, 而数据库的并发访问会降低数据库系统性能, 容易引起数据库系统的死锁。数据库管理程序在每5分钟转存数据、每日定时转存当日数据时会有并发访问现象。由于对当日库是更新操作, 操作时间很短, 所以也不会有死锁现象的发生。可以把定时转存时间设在凌晨, 这个时间内一般没有监控客户端的查询操作, 所以也不会出现死锁现象。
3 结语
讨论了基于C-S-A结构的分布式监控系统平台的设计与实现技术, 运用成熟的C/S/A应用结构作为该监控系统的解决方案, 不仅使各子系统在部署上具有充分的灵活性, 同时也能满足复杂应用环境的要求。目前, 系统已交付使用, 可以灵活的解决分散环境下运行的通信设备的实时监控问题, 实现集中监控, 集中维护和集中管理。
摘要:针对集中式监控系统和客户/服务器体系结构的不足, 提出了一种基于C-S-A结构的分布式实时监控系统的设计方法, 阐述了该监控系统的结构组成, 并对监控系统的实时性问题进行了详细设计。
关键词:监控,C-S-A结构,实时性
参考文献
[1] 钱清泉, 谭永东.监控系统的技术发展及其研究动向[EB/OL].http://www.info.863cims.net.
[2] 杨宇浩, 王学群.分布式计算机网络系统的通信软件设计[J].计算机工程, 2002, 28 (10) :213~215.
[3] 李明贾, 智平.基于TCP/IP的分布式监控系统的研究与开发[J].计算机工程与应用, 2002 (16) :151~153.
[4] 刘怀, 胡继峰.实时系统的多任务调度[J].计算机工程, 2002, 28 (3) :43~44.
[5] 邵佩英.分布式数据库系统及其应用 (第二版) [M].北京:科学出版社, 2006.
[6] 林浩冬.工业监控系统中的分布式实时数据库研究[J].工业控制计算机, 2007, 20 (5) :17~19.
相关文章:
采用LabVIEW构成实时计算机监控系统02-15
实时市场02-15
实时监控采集系统02-15
煤矿井下人员安全管理02-15
三电源供电系统02-15
生产实时监控02-15
在线实时监控系统02-15
医院感染实时监控系统02-15
全方位实时监控资金,深化资金再集中管理02-15