毕业设计(论文)-JMX技术在企业应用服务器中的案例分析.doc_第1页
毕业设计(论文)-JMX技术在企业应用服务器中的案例分析.doc_第2页
毕业设计(论文)-JMX技术在企业应用服务器中的案例分析.doc_第3页
毕业设计(论文)-JMX技术在企业应用服务器中的案例分析.doc_第4页
毕业设计(论文)-JMX技术在企业应用服务器中的案例分析.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

jmx技术在企业应用服务器中的案例分析摘 要科技的不断发展,企业网络规模的不断扩大,这导致了网络故障率提高、可管理性下降。在中等规模以上的企业网络中,仅仅靠人工利用传统方式来管理网络是不切实际的。如何利用功能完善、安全可靠、灵活的方法来保证网络的最大可用性是目前网络管理中一个迫切问题。信息化建设的不断发展,使得企业应用系统的结构越来越复杂和规模越来越大,企业应用软件的依托于应用服务器,对应用服务器的监控自然成为网络管理中一个重要组成的部分。jmx(java management extension)是sun公司提出的一套管理框架。其规范定义了基于网络的管理和监控服务管理的完整框架体系,当前应用服务器几乎都在其内部实现了这样的规范,同时jmx这种技术适合于各个工业部应用。本文分析jmx技术在应用服务器中的应用,以及通过案例的分析展现了jmx技术在服务器中的优势和前景。关键词:jmx,应用服务器,网络管理 jmx technology in the enterprise server in the case ofabstract not of technology development, enterprise networks continue to expand the scale, which led to a network failure rate of increase, the management of decline. in medium-sized enterprises over the network, only rely on the use of traditional methods to manage networks is unrealistic. how to make use of comprehensive, secure, reliable, flexible approach to ensure network availability is currently the largest network management in a pressing issue. we all know that an enterprise network management needs of the server, but the development of science in various fields, making the structure of enterprise applications increasingly complex and increasingly large scale, enterprise application software based on the application server, application server monitoring natural network management an important component part. jmx (java management extension) is sun companys proposed set of management framework. its normative definition of a web-based management and monitoring service management framework for the complete system, almost all of the current application server in its internal realization of such a standard, jmx technology suitable for application in various ministry of industry, the paper analysis of the characteristics of jmx, to a jmx architecture, and of jmx in the server management strengths and prospects.keywords:jmx,application server,network management目 录摘要i引言11 jmx技术发展现状22 jmx主要特点23 jmx组成和功能23.1 设备层33.2 代理层43.3 代理服务44 应服务器原理55 高效管理扩展(jmx)案例分析76 jmx服务器网络管理优势126.1 简化了设计和开发126.2 协议独立126.3 动态扩展和伸缩137 jmx在企业服务器中前景13结论与谢辞15参考文献1616引 言随着企业网络规模的扩大,对服务器的要求越来越高。为了解决网络监控中的这些问题,可以采用sun公司推出的jmx(java management extensions)解决方案。jmx是一个为应用程序植入管理功能的框架,定义了一套标准的代理和服务,用户可以在任何java应用程序中使用这些代理和服务实现管理。它致力于解决分布式系统管理的问题,并特别适合应用到网络管理领域,因此,能适用于各种不同的环境是非常重要的。为了能使功能强大的java计算环境达到这个要求,sun公司扩充了java基础类库,开发了专用的管理类库。同时,jmx还是一种应用编程接口,可扩充对象和方法的集合体,可以跨越一系列不同的异构操作系统平台、系统体系结构和网络传输协议,灵活地开发无缝集成的网络应用系统。1 jmx技术发展现状网络信息的兴起,对网络安全管理的性能越来越高,也为中国新兴的专业监控公司和企业带来了前所未有的挑战和机遇。以前,在国内由于技术的不成熟,几乎所有的应用软件和网络设备几乎依赖国外产品,直到98年,也开发出了一些这方面的产品,但是大部分的软件都是针对某个或者某几个特定的应用进行展开,缺乏统一性的解决方案,应用服务监控并不存在统一监控模型,功能比较单一,没有提供给用户一个综合的解决方案,相对来说在国外,由于系统应用方面起步比较早,技术成熟很多,但达到企业级要求的产品还不是很多。比较大的此类系统提供商有艾德威特、美科利等等公司,他们都有系统的企业级产品。他们的这些产品在各个方面都有自己的特色。应用服务器的监控模块被集成到整个监控系统中,都有一定的不足之处。总之jmx技术将是一个刚刚起步的新技术,它将在以后的社会中发挥更大的作用。2 jmx主要特点jmx规范采用由java语言编写的对象服务器(object server)作为网络管理代理,这种对象服务器可运行于支持java环境的硬件系统中。代理服务组件可以根据需要动态插入到对象服务器中,这种灵活的基于组件的配置方式使得整个管理框架易于扩展。jmx代理不仅可以通过html浏览器进行访问控制,还可通过snmp和webm等网络管理协议对其进行管理。jmx规范可充分利用现有的java技术,如:jndi(java naming and directory interface)服务及jdbc(java database connectivity)应用程序接等。3 jmx组成和功能同时jmx结构可分为设备层、代理层、分布服务层、附加管理协议api等。图3-1表明了jmx各层相互关系,有关各层的功能与实现将在下面部分介绍。3.1 设备层图31设备层提供了对资源实施管理的规范。一个被管理资源可以是一个应用软件、服务或硬件设备等,它们由嵌入在jmx框架中的一组称为mbean的管理构件来表示。mbean需要遵从一定的设计模式,实现jmx规范所定义的特定的管理接口。这里所说的管理接口是mbean对外公开的方法和属性的集合,应用程序通过这些接口控制被管理资源。一个管理接口通常包括属性值、操作、通知事件等几部分。jmx定义了四种被管理组件:标准、动态、开放和模型mbean。标准mbean的设计和实现是最简单的。标准mbean的管理接口是不能在运行时改变的,因此这种mbean更适合于那些功能及特性已经明确定义且不会变动的被管资源。虽然标准mbean可以快速而简单地描述一个资源,但是对于那些随时间改变而需要进行升级的被管理资源显然是不适合的。动态mbean则通过实现javax.management.dynamicmbean接口使得与之相关联的一组属性、操作和事件直到运行时才是确定的,因而具有了更大的灵活性。模型mbean(model mbean)实现了动态mbean的一个继承类requiredmodelmbean,并将其作为实际被管理对象的代理。requiredmodelmbean类实现了一个管理组件的许多通用的服务并封装了管理对象,对管理对象的所有属性读写和操作调用都要通过requiredmodelmbean。这样开发者就可以将工作重点放到具体的管理对象的实现上。开放式mbean的目标是为了让管理程序或管理人员更好地理解并使用那些在运行过程中被发现的管理对象。每个开放式m b e a n通过一个openmbeaninfo类或其继承类的类对象详细描述自身的属性、方法等所有开放式mbean的属性、方法的返回值和调用参数都必须限定在“基本数据类型”集中。基本数据类型是对java的原始类型(如:整型、长整型、布尔型等)、字符串类型、compositedata类型、tabulardata类型和objectname类型进行封装后的对象。另外,设备层实现了通知机制。众多代表被管理资源的mbean可通过产生和传输事件给其它层构件的方式实现层与层的联系。jmx的通知模型有以下几个组成部分:(1)notification类:用来标识通知的类型。(2)notificationlistener接口:通过实现此接口方法来监听通知。(3)notificationfilter接口:此接口用来过滤通知。(4)notificationbroadcaster接口:通过实现此接口来发送通知。3.2 代理层代理层是一个运行在java虚拟机上的管理实体,它位于管理资源和管理者之间,使被管理资源可以被远程的管理程序所控制。代理层的组成包括:一个mbean服务器和以mbean方式实现的代理服务,其中至少包含一个协议适配器或连接器。mbean服务器是代理层的核心部分,设备层中的所有mbean都在此mbean服务器中注册,并被分配一个唯一的对象名作为标识,管理程序只有通过服务器访问mbean。mbeanserver接口中提供了一些针对mbean进行的操作,包括:查找指定的mbean、读写mbean的属性值、调用mbean中的方法、获取mbean的管理接口和发出的通知等。通常在mbean服务器中注册的mbean有代表被管理资源的组件、公共服务组件、连接器和适配器等。3.3 代理服务代理服务可以对注册的mbean执行管理功能。通过jmx规范定义的代理服务有:(1)动态类装载通过m-let(managementapplet)服务实现,可以从网络上的任何url处下载并实例化mbean,然后向mbean服务器注册。(2)监视服务监视管理构件的属性值变化,并将这些变化通知给所有的监听者。jmx规范当前规定了三种监视器:计数器监视器、度量监视器和字符串监视器。(3)时间服务时间服务可以在定制的时间和日期发出通告,也可以定期地发出通告,依赖于管理应用程序的配置。时间服务也是一个mbean,它能帮助管理应用程序建立一个可配置的备忘录,从而实现智能管理服务。(4)关系服务定义并维持管理构件之间的相互关系。关系是由多个mbean实现的一种业务逻辑,关系模型定义了各mbean之间的组织与调用关系。4 应服务器原理随着计算机网络在社会各个方面的发展,分布在不同节点应用程序面临通信、协作和安全的问题,由此而发展起来的应用服务器在网络软件生存和发展上起到了及其重要的作用;应用服务器阵的设计充分提取软件的共性的成分,并且向高层屏蔽了底层的复杂度,保持应用系统的复杂度降低,从而也增加了其安全性和稳定性:应用服务器位于应用系统与操作系统之间,它向应用系统抽象了操作系统的底层设计,简化了应用系统的复杂度;应用服务器被认为是继操作系统、数据库管理系统之后,随着计算机网络环境的发展而出现的里程碑式的基础软件。虽然目前各应用服务器开发商已经实现的应用服务器都各自有自己的特色,但归纳起来它们有三个方面的共性功能:提供构件运行环境、提供互操作机制和提供公共服务。其结构与边界如下图所示:图4-1 结构与边界应用服务器通过构件器为构件提供基本的运行环境;并且为分布性、异构性的构件之间提互操作的通信服务:提供查找服务、事务服务和安全服务公共服务以及业务领域密切相关的公共服务等。构件容器应用服务器是通过构件容器来对大量构件实例进行有效管理和提高资源高利用率的,它所依赖的主要机制为实例池、冻化和活化。实例池的原理跟数据库连接池设计的原理是一致的,核心思想就是把暂时不用的实例资源保存起来,等客户需要用时从池中取出直接去用,这提高了资源的可利用性和系统的运行效率。而构件选取策略可以为先进先出(fifo)可以是后进先出(lifo)的机制。应用服务器的容器大多采用最近最少使用(lru)的原则,冻化那些最近最少调用的构件,冻化就是挂起的过程,当客户需要选取构件时,再把它活化,而活化就是恢复其可运行状态。冻化与活化的过程实际上是通过序列化方法实现的。软件互操作几乎所有的操作系统都将tcp/ip作为默认网络软件库的实现协议。socket是基于tcp/ip协议的应用程序之间相互通信机制之一,当然也存在其他的机制,例如:远程过程调用(rpc)和对象请求代理(orb)tl0。但我们实现的系统本身采用的是socket机制,所以重点介绍下这种机制。服务器通信过程如下图所示:图4-2 软件互操作客户与服务器通信过程图socket分为客户方和服务方,在客户方呼叫连接之前,它要明确服务方所在机器的ip地址或者机器名称,并且客户方和服务方有一个约定端口号。客户方可以通过服务方所在机器的ip地址或者机器名称和端口号唯一的确定所呼叫的服务方。服务方必须处于侦听状态,用于侦听是否有客户要求建立连接。一旦服务方收到来自客户方的连接请求,那么,服务方可以根据需要接受连接或者拒绝连接。服务方接受连接之后,会通知客户方,表示连接建立。客户方可以发送消息服务方,这里的消息可以是文本,也可以是二进制信息流,当客户方的消息到达服务方端口的时,自动触发一个事件。服务方接管该事件,就接受来自客户方的消息。应用服务器的公共服务是为多个应用程序提供服务并且独立于具体应用系统的共性软件部分。公共服务处于系统层,其实现是独立于具体应用的,是应用服务器开发商实现的一种服务;公共服务实现了构件管理的约束性需求;公共服务对外表现为接口的形式,应用构件通过某种规定的形式调用公共服务的功能。应用服务器包含许多的公共服务,这些公共服务实现的方式有很多种。即可以在应用服务器内部实现,也可以由另外一个单独的中间件实现。公共服务器介绍的定义是对象服务(omg),omg到目前为止已经发布了近20个公共服务规范,应用服务器主要涉及到的规范主要有命名服务、生命周期服务、事件服务、持久服务、关系服务、事务服务、安全服务和通知服务,这些公共服务是通过应用系统组装的到一起为应用层系统提供公共服务调用的。5 高效管理扩展(jmx)案例分析 我们都知道传统的主从结构(client/server,客户端/服务器端)应用程序模型需要在每个客户机上安装和维护独立的系统,这就引起客户端和服务器端程序以及客户端程序更新的复杂性。这些问题在三层应用及n层应用程序模型中就不存在了。n层应用程序模型由分布的应用程序组成,包括了前端表示层和后端数据源以及它们之间的一层或几层,这些中间层提供了各种数据和功能的组合,具有高可用性、安全性、可扩展性、可靠性等优点。 这种多层结构的关键就是位于中间层的应用服务器.应用服务器是一个创建、部署、运行、集成和维护多层分布式企业级应用的平台。如果应用服务器与web服务器相结合,或者包含了web服务器的功能,则称之为web应用服务器。 流行的应用服务器,包括weblogic,tom-cat, joss及国内的apusic等,都已经开发出基于jmx的系统核心。jmx框架构成了管理客户端和被管理资源的中介。j2ee结构中的各种服务,servlet容器、ejb容器(enterprise java beans)事务服务、安全服务、消息服务、命名服务等,都由不同的mbean进行包装,然后注册到mean服务器中。服务之间的信总交互全部通过mean服务器进行,藕合性降到了段低,各种服务也能够根据需要动态被装载到系统中。同样,通过mbean服务器进行服务的调用,可以买现在服务调用过程中实行截获,从而完成安全验证、事务处理等操作。如图5-1所示,从应用服务器的结构不难发现,jmx布里架能够完全满足这种动态加载、模块化和面向服务的思想。图5-1 应用服务器结构应用服务器是一个大型的结构,本文将介绍jmx在上述结构中的一个模块即连接池( connection pool, up)中的应用。连接池的产生是由连接合用的需求带来的,它是为数据库供应商倡导的技术,其目的是允许客户机共享一组高速缓存的连接对象,这些对象提供对数据库资源的访问。 建立数据库连接是最耗费时间的数据库操作之一,对于不同的数据库,相关的操作可能有所不同,一个连接可能必须完成协议握手、验证用户信息、打开磁盘文件、创建内存高速缓存等等。在典型的企业应用程序中,数据库连接花费的时间是不可避免的,但是建立一个准备或者等待用户使用的连接池,降低相应的开销是完全可能的。应用程序需要使用数据库付,只须从池中获得一个连接,使用它,用完之后再交回连接池即可。连接池的目的在于消除数据库频繁连接带来的开销和瓶颈。以下将通过jmx来快速简单地构建和管理连接池,以及提供比较便捷的使用方式。连接池的服务在jmx系统中由mbean进行包装,并且被注册到中心的mbean服务器上。在实现中构建和管理基于jmx的连接池的实例和步骤,并通过创建普通方式的数据库连接与之进行比较,以实际的测试结果说明连接池的优势。(1)构造一个包装器来封装连接池相关的属性和方法。public class dbservice implements dbservicembean private datasource datasource=null;/ /获得数据源public datasource getdatasource( ) return thisdatasource;/ /获得连接public connection getconnection( ) connection conn=null;try conn=this. datasource. getconnection( );catch ( sqlexception ex ) system. out. println( getclass().getname( );+“connection create error::”+ ex); return conn;/ /启动服务public void startservice)throws exception/ / 建立“池”genericobjectpool connectionpool=new generic-objectpooi( null,maxactive,whenexhaustedaction,maxw sit,maxidle ); / /连接到数据库drivermanagerconnectionfactory connection factory= null;if( uname=null passwd=null) connectionfactory= newdrivermanagerconnectionfactory(connuri, null);else connectionractory=newdrivermanagerconnectionfactory(connuri,uname,passwd );/ /构建数据源poolableconnectionfactory poolableconnectionfactory=newpoolableconnectionfactory(connectionfactory,connectionpool,null,null,false,true);this. datasource=new poolingdatasource(connection-pool);(2)构建相应的mbean接口,然后将mbean加人到jmx服务器中,从而构建出测试服务器。(3)建立一个http适配器,可以通过浏览器对该服务进行管理。private void createhtmladaptor( ) com. sun.jdmk. comm. htmladaptorserver html= new com. sun. jdmk. comm.htmladaptorserver( );objectname html name=null;try html_ name=new objectname(“adaptor: name =html, port=8082”); server. registermbean(html,html_name ); catch(exception e ) system. err. println(“could not create the html adaptor caused by+e); html. start( );(4)使用连接池获取数据库连接。/ /得到一个mbeanserver的实例mbeanserver server = getmbeanserver( );string domain = server.getdefaultdomain( );string mbeanname = “dbservice”;objectname objname=new objectname(domain+ “:type=”+mbeanname);/ /通过连接池得到连接connection connection二(connection)server. invoke (objname,“getconnection,null, null);(5)使用普通方式获取数据库连接,用于测试和说明连接池效率/ /加载数据库驱动class. forname(org. gjt. mm. mysql. driver);string url=jdbc:mysql ; /localhost ; 3306/somedb;/ /取得数据库连接sconnection con=drivermanager. getconnection(url,“username,“password”);(6)测试结果. 如图2所列,从测试结果可以发现,采用jmx管理的连接池对数据库访问的效率极大地提高了。这种方式不仅能够节省大量系统资源,而且在高频率、大数据量的数据库访问中能够大幅度提升应用系统的性能和吞吐量。表1 jmx连接池方式与普通方式获取数据库连接效率对比图5-1 基于jmx的测试服务器以应用程序的形式运行后,可以通过浏览器进行管理。打开浏览器,输人http :/iocalhost : 8082,显示出全部已经注册的mbean。通过链接进人mbeantype = dbservice,则能够对连接池的各个参数进行配置一般来说,数据源对象可以通过jndi服务进行创建、发布和管理,应用系统通过jndi服务访问数据源对象,不需要在程序中采用“硬编码”的方式来访问数据库,同时能够充分利用连接池和分布事务处理的优势。jmx的优势之一在于能够非常方便地使用现有技术,因此jndi能够被包装成为服务加人到jmx的系统中,提供数据源和其他服务使用。6 jmx服务器网络管理优势通过上面例子我们发现,采用基于jmx的服务器理系统有三个优势:设备的封装、智能代理和管理程序的开发变得简单;同snmp等协议的兼容和协议的独立性带来的灵活分布;动态扩展和伸缩性。6.1 简化了设计和开发jmx体系结构使得网络管理的元素标准化,三个层次,封装层、代理层和管理层相互隔离,它们之间的交换是通过api。这使得进行模块化的开发成为可能,每一层都能独立地设计和实现。同样,这种结构使得组件重用成为可能:为一个代理开发的服务可以在所有的代理中运行。(1)在封装层,mbean只需要定义它们的管理接口并且将被管资源的变量和方法映射到接口的属性和操作上。它可以在jmx兼容的代理商运行,无须知道如何与外部世界通信。(2)在代理层,mbean服务器处理登记mbean和传输管理信息到指定的mbean中,任何jmx兼容的mbean可以被登记并被管理程序使用。任何已有的通信组件可以用来响应远程的请求,用户可以开发新的适配器和连接器来响应专有的请求。代理服务器为代理提供了管理智能功能,如网络连接失败时,自动执行操作的功能。(3)在管理层,通过连接器可以对mbean服务器发送任何管理请求,代理提供了通信层的抽象,简化了网络管理应用程序的设计。用户不必实现基本的管理任务,因为代理中的代理服务已经替你完成了这些工作。在这三层中,模块化意味着设计的快速实现,附加的功能在需要时可以随意添加,利用产品中的提供编程实例,你也许就能建立一个可以运行的原型系统。6.2 协议独立mbean、代理及管理程序的设计与代理同外部应用程序所使用的通信协议无关联,mbean间的交互由mbean管理程序控制,即由jmx的api决定。提供的连接器依赖于jmx的api,其实现的内部细节是透明的。应用程序可以根据实际应用条件,选择不同的连接器。例如,如果管理程序访问防火墙下的代理,它可以启动使用http连接器。mbean和代理的协议是独立的,它们可同时被多个协议访问, mbean自己负责处理同步问题。连接器和协议适配器可处理多个连接,因此代理中需要一个连接器和协议适配器就可处理多个响应。mbean服务器同样可以被同时访问。针对新协议,可以开发和使用相应的连接器,对于已有的mbean和应用程序,则无须改动,只需要新连接器的客户端提供远程api。6.3 动态扩展和伸缩根据定义,所有通过jmx开发的代理和网络管理程序具有可伸缩的特性。代理服务可供使用,管理程序可以在需要时启动新的服务;在不需要时,停止使用以减少系统的开销。同样,mbean服务器可以在代理中注册和注销一个mbean,特别是在一个给定的主机上,用mbean表示的资源变化频繁的时候。伸缩性使得代理能够适应不同规模和复杂度的被管对象,代理本身不需要重新启动和安装。动态加载服务可以从任何位置加载和启动mbean,因此,有可能通过建立新的类并请求代理加载和启动,扩展代理的功能,这种高效的push机制可用来发布服务和应用。最后,所有的jmx兼容性保证所有的jmx兼容的组件能够集成在一个java

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论