AOP@Work: 用AspectJ进行性能监视,第1部分 - 编程入门网
AOP@Work: 用AspectJ进行性能监视,第1部分时间:2011-09-07 IBM Ron Bodkin用AspectJ和JMX深入观察Glassbox Inspector 简介:随着 Ron Bodkin 介绍如何把 AspectJ 和 JMX 组合成灵活而且模块 化 的性能监视方式,就可以对散乱而纠缠不清的代码说再见了。在这篇文章(共分 两部分)的第一部分中,Ron 用来自开放源码项目 Glassbox Inspector 的代码 和想法帮助您构建一个监视系统,它提供的相关信息可以识别出特定问题,但是 在生产环境中使用的开销却足够低。 现代的 Java™ 应用程序通常是采用许多第三方组件的复杂的、多线程 的、分布式的系统。在这样的系统上,很难检测(或者分离出)性能问题或可靠 性问题的根本原因,尤其是生产中的问题。对于问题容易重现的情况来说, profiler 这类传统工具可能有用,但是这类工具带来的开销造成在生产环境、 甚 至负载测试环境中使用它们是不现实的。 监视和检查应用程序和故障常 见 的一个备选策略是,为性能的关键代码提供有关调用,记录使用情况、计时以及 错误情况。但是,这种方式要求在许多地方分散重复的代码,而且要测量哪些代 码也需要经过许多试验和错误才能确定。当系统变化时,这种方式既难维护,也 很难深入进去。这造成日后要求对性能需求有更好理解的时候,添加或修改应用 程序的代码变得很困难。简单地说,系统监视是经典的横切关注点,因此任何非 模块化的实现都会让它混乱。 学习这篇分两部分的文章就会知道,面向 方 面编程(AOP)很自然地适合解决系统监视问题。AOP 允许定义切入点,与要监 视 性能的许多连接点进行匹配。然后可以编写建议,更新性能统计,而在进入或退 出任何一个连接点时,都会自动调用建议。 在本文的这半部分,我将介 绍 如何用 AspectJ 和 JMX 创建灵活的、面向方面的监视基础设施。我要使用的监 视基础设施是开放源码的 Glassbox Inspector 监视框架(请参阅 参考资料) 的 核心。它提供了相关的信息,可以帮助识别特定的问题,但是在生产环境中使用 的开销却足够小。它允许捕捉请求的总数、总时间以及最差情况性能之类的统计 值,还允许深入请求中数据库调用的信息。而它做的所有这些,仅仅是在一个中 等规模的代码基础内完成的! 在这篇文章和下一篇文章中,我将从构建 一 个简单的 Glassbox Inspector 实现开始,并逐渐添加功能。图 1 提供了这个 递 增开发过程的最终系统的概貌。请注意这个系统的设计是为了同时监视多个 Web 应用程序,并提供合并的统计结果。 图 1. 带有 JConsole JMX 客户端 的 Glassbox Inspector AOP@Work: 用AspectJ进行性能监视,第1部分(2)时间:2011-09-07 IBM Ron Bodkin图 2 是监视系统架构的概貌。方面与容器内的一个或多个应用程序交 互,捕捉性能数据,然后用 JMX Remote 标准把数据提出来。从架构的角度来看 ,Glassbox Inspector 与许多性能监视系统类似,区别在于它拥有定义良好的 实 现了关键监视功能的模块。 图 2. Glassbox Inspector 架构 Java 管理扩展(JMX)是通过查看受管理对象的属性来管理 Java 应 用 程序的标准 API。JMX Remote 标准扩展了 JMX,允许外部客户进程管理应用程 序 。JMX 管理是 Java 企业容器中的标准特性。现有多个成熟的第三方 JMX 库和 工 具,而且 JMX 支持在 Java 5 中也已经集成进核心 Java 运行时。Sun 公司的 Java 5 虚拟机包含 JConsole JMX 客户端。 在继续本文之前,应当下载 AspectJ、JMX 和 JMX Remote 的当前版本以及本文的源代码包(请参阅 参考资 料 获得技术内容,参阅下载 获得代码)。如果正在使用 Java 5 虚拟机,那么 内置了 JMX。请注意源代码包包含开放源码的 Glassbox Inspector 性能监视基 础设施 1.0 alph |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |