posts - 16,comments - 17,trackbacks - 0
翻译:Java Dynamic Management Kit - Technical Overview

技术概述

1.介绍
2.装配资源为MBeans
3.Java动态管理架构
4.在代理中暴露MBeans
5.远程访问代理
6.SNMP工具包

介绍

Java动态管理工具包(Java DMK)是一个Java应用程序接口和一套为设计和实现新一代的管理程序的开发工具。作为JMX和JMX API的实现,DMK提供了通过基于Java技术的应用程序管理Java对象的框架。

Java动态管理工具包(Java DMK)为设计分布的管理系统提供了一套完整的架构。一个基于Java技术的解决方案可以嵌入管理系统到代理中,还提供一个抽象的通信层,并可以动态的升级个扩展。管理程序还可以从其他的Java API中获得好处,比如提供用户接口的Swing组件和提供数据库访问的JDBC API。

另外,Java动态管理工具包为被广泛的应用于网络和设备管理的架构--简单网络管理协议(SNMP)--提供了一整套工具。这样可以开发Java动态管理代理和管理程序,并使其能与现有系统协同工作。另外,一个实现了SNMPv3的实现还为管理系统提供了一套安全机制。

装配资源为MBeans

资源可以是任何希望通过网络使其可用并可被管理的实体,不论是物理上的,还是虚拟的。物理的资源可以是一堆设备例如网络上打印机等设备;虚拟资源包括某一特定主机上的应用程序等。资源通过其自身的管理接口暴露自己。管理接口通常包括管理程序可以访问的一系列的属性、方法和通知。

装配一个资源就是为其开发一个代表这个资源管理接口的Java对象。JMX规范中定义了如何按照某一设计模式来装配资源。这些模式跟JavaBean组件模型类似:属性有其对应的getter和setter,操作由Java方法来表示,以及依赖于Java事件模型的通知。

因此,MBean就是遵从JMX规范中设计模式的资源的工具。如果资源本身是Java应用程序,则他可以作为自己的MBean,否则MBean就是本地资源的一个Java wrapper或者是设备的一个Java表示。MBean的开发者可以决定那些属性和操作对于MBean来说是有效的。

设备的生产商和应用程序的销售商可以提供插入他们客户现有产品的MBean。管理解决方案集成商可以针对之前没有装配的资源开发MBean。由于 MBean是遵从JMX规范的,因此他们可以被应用于任何一个遵从JMX的代理中。这使其为可移持的,并且不依赖于任何私有的管理架构。

Java动态管理架构

下图展示了Java动态管理解决方案的架构。后面将对其中关键的组件进行介绍。

keyConcepts.gif

在这个例子中,两个资源的MBean被注册到代理的MBean Server中。代理服务监视器作为另一个MBean注册。代理是包含远程方法调用(RMI)或JMX消息协议(JMXMP)的一个连接服务器,还包含一个 SNMP或HTML的协议适配器。代理可以拥有任意数量的通信组件,每个组件有希望通过其通信的协议和端口。

远程管理者是运行在远程的Java应用程序。它包含一个指定协议的连接客户端和表示两个被管资源的代理MBean。当其与代理服务器建立连接以后,其他的组件可以将应用程序的管理请求发送给代理。例如,可以通过代理对象调用第一个资源的操作,也可以配置监视服务来轮训第二个资源。

HTML适配器提供一个简单的用户接口,使用户可以通过Web浏览器来查看代理。每一个MBean的信息用一个独立的HTML页面来显示,通过这个 HTML页面用户可以修改MBean的属性以及调用MBean的方法。另外还有一个管理界面用来从MBean Server添加和删除MBean。

在代理中暴露MBeans

Java动态管理代理遵从C/S模型,代理响应所有希望访问其包含的资源的客户端应用程序的管理请求。代理集中所有的请求,然后派遣到对应的MBean并返回响应。代理处理所有的通信问题,包括接收和发送数据,MBean完全不需要关心。

代理的中心组件是MBean Server,它是一个MBean实例的注册器,并暴露一个通用的接口,让客户端可以发送请求到指定的MBean。为了知道什么资源通过MBean来暴露,客户端可以发送请求来得到MBean管理接口的描述信息。使用这些信息客户端可以制定一个给MBean Server的请求来获取或设置MBean的属性,调用MBean的方法或注册通知。

MBean只能通过发送请求到MBean Server来进行访问。管理程序只能通过代理中MBean的对象名(Object Name)标识符来引用MBean,而不能直接通过MBean的引用来进行访问。这在保留了C/S模型,同时又是实现查询和安全特性的重要因素。

MBean Server还提供允许代理服务与MBean进行交互的框架。服务本身也是被做为MBean来实现的,其与资源MBean的交互通过执行定义的Task来实现。例如:管理程序可以监视给定的MBean的属性,它为监视服务MBean创建实例,配置域值,并且注册要接收的警报。管理程序不再需要轮训代理,无论何时监视的属性超过指定的域值,都会被通知。

服务库包含需要实现高级管理策略,如计划事件、监视属性、建立和执行关联、发现其他代理、创建子代理分层结构和下载MBean对象等这类策略的逻辑。也可以开发适合自己管理需要的服务MBean,例如记录日志和持久化服务。

远程访问代理

Java DMK能够使远程应用程序很容易访问代理和代理中的资源。已经提供了代理和客户端程序处理通信的所需的所有组件。通过MBean Server暴露的API对于远程管理程序同样是有效的。这种对称性有效的使通信层透明化。

管理程序通过MBean的标识符来执行获取或设置属性,以及调用操作的请求。代理对象通过表示远程的MBean和处理通信,提供了更深层次的抽象。管理程序可以将所有资源看成本地的资源来进行设计和开发。通信组件还处理对通知的转发,以致于远程的管理程序可以注册来接收从广播的MBean中发出的通知。

用Java语言开发的管理程序使用连接器来做到通信层的透明。连接器使用同样的交互接口提供了对JMX Remote API中定义的RMI,RMI/IIOP和JMXMP协议的支持。

而适配器通过其他协议为不是基于Java技术开发的管理程序提供了代理的视图。例如HTML适配器将MBean表示为网页,这样可以通过任何一个Web浏览器来查看。而SNMP适配器能暴露表示SNMP MIB和响应SNMP协议请求的特殊的MBean。使用SNMP适配器可以不需要将MIB注册到MBean Server中。

所有的连接器和适配器都是为MBean而实现的。管理程序因此可以根据网络条件和可用的协议,动态的创建、配置和移除通信资源。每种协议可以有自己内建的安全机制,如SSL,SASL和SNMPv3。对于每种协议的安全方面应该由连接器和适配器层来处理,使其对于MBean开发人员是完全透明的。

通信MBean的适应性,以及对多种协议可用的连接器使得可以将管理方案部署在异构的网络环境中。可以使用适配器将基于JMX架构的代理和现有的管理系统连接起来。也可以通过创建自己的连接器和适配器来适应私有的协议或者以后的管理需要。

SNMP工具包

Java DMK为将SNMP管理集成到基于JMX架构的方案中提供了一个工具包。其中包括:

使用SNMP协议适配器开发一个SNMP代理
通过mibgen编译器生成代表SNMP MIB的MBean
如果有需要,可以使用SNMP管理API开发一个SNMP管理程序

SNMP代理是响应对定义在MIB中的变量格式化为get和set方法的请求的程序。这些行为可以被完全的影射到提供那些实现MIB的MBean的Java动态管理代理的MBean Server和MBean资源上。

表示MIB的MBean是通过为需要实现MIB功能的程序员而准备的工具mibgen自动生成的。这个工具还可以生成表示SNMP表和组的元数据对象。下图其他的管理程序如何通过MBean的实现访问MIB变量。

tech_overview-fig2.gif

Java DMK提供了两个SNMP协议适配器,一个支持SNMPv1和v2,另一个支持SNMPv3。添加到Java DMK5.0中支持SNMPv3 USM MIB的适配器,提供基于用户的安全验证,和有作用域的MIB的所有特性,可以使用一个Context名字注册到适配器中。通过对SNMP适配器和定时器的多线程支持,Java DMK 5.0中SNMP的性能得到改良。

SNMP协议适配器响应SNMP请求,并将请求转换成指定MIB MBean上的管理操作。SNMP适配器跟JMX代理发送通知一样,同样还发送trap信息,来响应SNMP事件和错误信息。

SNMP协议适配器可以管理不限制数量的不同的MIB。这些MIB可以通过注册和取消对应的MBean来动态的加载和卸载。适配器尝试通过访问所有的加载了的MIB来响应SNMP请求。MIB是通过代理程序来动态加载的,而SNMP协议本身是不支持加载和卸载MIB的请求的。

SNMP协议适配器还会从SNMP代理发送通知请求到SNMP管理程序。SNMP管理程序返回响应到SNMP代理。

SNMP管理API简化了开发Java的SNMP代理程序。其中的类通过Java对象来表示SNMP管理程序中的概念,例如会话(session)、参数(Parameter)和等级(Peer)。使用这个API可以开发一个能发送请求到SNMP代理的资源。例如,可以使用SNMP管理API创建一个SNMP资源。这样需要定义一个对应资源的MIB,所有变量影射为MBean的属性的管理接口。为了响应对属性的getter和setter,MBean必须构造和发送SNMP请求到表示该资源SNMP代理。

SNMP管理API提供SNMP v1,v2和v3协议的请求,包括SNMP管理程序之间的通知请求。管理API可以用来访问任何适合的SNMP代理,包括使用Java DMK开发的。

Java DMK5.0中支持的SNMP可以构建一个主代理,主代理将几个子代理组合在一起,并通过单点访问来导出他们的信息。主代理注册子代理来处理MIB或MIB的一部分,还转换管理程序使用的SNMP版本的请求到子代理支持的请求。

posted on 2005-04-28 01:48 非飞 阅读(1120) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: