研究管理代理与监控模块通信设计(2)
2015-08-23 01:06
导读:(2)将监控信息存储在磁盘文件中。为了解决管理代理和监控模块共享监控信息的问题,监控模块可以将监控信息存储为磁盘文件形式。在此情况下,需要设
(2)将监控信息存储在磁盘文件中。为了解决管理代理和监控模块共享监控信息的问题,监控模块可以将监控信息存储为磁盘文件形式。在此情况下,需要设计一套完整合理的文件空间使用策略,保证能够完整地存储监控信息。由于在Windows程序中采用了虚拟内存策略,不同应用程序内存空间是不同的,即使某应用程序获取了另一个程序中的某个指针,也不能正确地访问到其数据。在对变量值进行存储时,一定要注意不能存储有关变量的指针信息,而应该想办法存储其中变量的实际数据[8]。同时因为是将监控信息存储于磁盘上,需要采取一定的措施尽量避免出现垃圾文件的情况,同时还要防止在工作状态下用户有意或无意地修改、删除该文件。
优点:多个程序可以方便地共享数据。
缺点:实现较复杂,容易产生垃圾文件,容易泄漏和丢失监控信息。
(3)将监控信息存储在内存文件映射中。这是对方案(2)的改进。方案(2)将监控信息存储于磁盘文件中,由此使得容易产生垃圾文件、容易泄漏和丢失监控信息。那么如果将监控信息直接存储在内存当中呢?采用内存映射文件是一个很好的解决办法。应用程序在需要时在内存中开辟一定的空间存储数据,当应用程序关闭后,由于操作系统的内存管理机制,内存文件将自动被回收,安全性高。但是在生成内存映射文件时,必须要指定文件的大小,此时如果处理不当将可能出现存储空间不够用的情况[4,8]。
优点:多个程序可以方便地共享数据,数据不易泄漏,安全性高。
缺点:实现较复杂,必须指定文件大小,处理不当可能出现空间不够用的情况。
综合三种方案,方案(3)是最合适的。只要指定足够的文件大小,它不仅满足监控模块存储管理信息的需要,信息安全性高,同时可方便地实现监控模块与管理代理之间实时信息交换功能,从而解决它们之间的通信问题。 3管理代理与监控模块通信的设计
(科教范文网http://fw.nseac.com) 3.1管理代理与监控模块间通信
通信包括系统初始化连接建立、命令转发和自定义消息。
(1)系统初始化连接建立。管理代理随受控站点启动后,必须接收各个应用程序实例的监控模块的注册信息,与监控模块建立初始连接。
(2)命令转发。管理代理接收到管理站点发送的UDP报文后,先识别该报文是发送给哪个监控模块的,然后通过Windows消息形式发送给指定的监控模块。
(3)管理代理与监控模块之间约定一系列自定义消息,并向Windows注册,保证双方能够正确地通过自定义消息进行通信。
3.2监控信息的收集与组织
在受控站点上,管理代理与多个应用程序实例的监控模块之间是通过内存映射文件进行通信的。监控信息存储在内存映射文件中。
(1)监控信息收集就是对监控模块对应的内存映射文件进行遍历。通过遍历获得最新的被监控应用程序的状态、监控变量的值等。
(2)监控信息收集时,需提供有效的同步机制,防止管理代理与监控模块同时访问同一个监控信息文件时出错