Home | Syndication | Delicious | Douban | Twitter | FriendFeed

ARM Introduction

我打算写一个系列来介绍 ARM,包括概念、实现、开发、以及与现存的管理软件产品的协作使用,预计包括四到五篇文章。不知何时能写完,不管了,今天先开个头,简单绍介绍介先 :)

开始之前要说明的是,本文所介绍的 ARM 并非那个著名的、做 RISC microprocessors 的 ARM 公司,而是由 The Open Group 制定并维护的、用于监控和衡量软件性能的一套开发标准。以下是引自 ARM 官方网站上的定义:

The Application Response Measurement (ARM) standard describes a common method for integrating enterprise applications as manageable entities. The ARM standard allows users to extend their enterprise management tools directly to applications creating a comprehensive end-to-end management capability that includes measuring application availability, application performance, application usage, and end-to-end transaction response time.

当前 ARM 标准最新版本是发布于2007年6月18日的 4.1 version 1,不过因为目前商业或开源实现基本都还只支持到 4.0 version 2,所以本文后面谈论的 ARM 除非特殊标明,均指的是 4.0 version 2.

1. ARM 能解决什么问题

随着软件技术逐渐融入各行各业、工作生活中,除了功能方面的需求,人们也对系统的性能、可靠性等方面的要求也越来越高,会越发关心类似以下问题:

  • 这些 transaction 成功了吗?
  • 是什么原因导致某个 transaction 失败了?
  • 客户体验到的系统响应时间是多少?
  • 在整个交易过程中哪个部分耗时最长?
  • 系统瓶颈在哪里?
  • 如何能提高应用系统的性能?
  • … …

ARM 正是用来回答这些问题的。通过在应用系统中引入 ARM APIs,可以让这些应用程序变得可管理、可监控,再配合相应的管理端系统,就可以捕获、分析运行时数据,回答以上这些问题了。

2. ARM 是如何工作的

Application & ARM interaction
Figure 1. Application - ARM management system interaction

典型的例子是这样的。应用程序在 transaction 开始或结束时呼叫(调用)ARM,接着 agent 收集诸如状态、响应时间、transaction 之间的父子关系等各种数据,并与管理端系统通信。管理端系统会分析得到的数据,并根据用户的要求给出各种数据报表。

3. Java Bindings

包括三个 Java 包:

  • org.opengroup.arm40.transaction 是使用最多的主要包,应用程序在 transaction 开始或结束时调用相应的方法,ARM 实现将会衡量响应时间等。
  • org.opengroup.arm40.tranreport 是一个替代包,除了衡量响应时间,还能形成报告。
  • org.opengroup.arm40.metric 结合 org.opengroup.arm40.transaction 来提供对额外衡量指标的监控。

在这三个包里的都是接口。 

4. ARM 实现

一个 ARM 实现包括两个部分:

  • ARM library 包含对以上三个包中定义的接口的实现类,在运行时它会被载入用户应用中。
  • ARM agent 用来接收和处理 ARM library 发来的数据。根据不同的设计,ARM agent 的差异性会很大,可能是一个简单的 jar library,也可能是一个独立的外部程序组件。我将会在后续文章中介绍具体的 ARM 实现时说明这一区别。
This entry was posted on Wednesday, March 12th, 2008 at 17:42 and is filed under TechNotes. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

14 Responses to “ARM Introduction”

  • beginner Says at 16:36, May 27, 2008

    非常期待您对ARM Agent实现的大作!

  • beginner Says at 16:39, May 27, 2008

    是否可以发给我您对ARM Agent实现的其他文章,最好是一些细节的东西,我们现在正在开发这个东西。dcarmapp@yahoo.com.cn,万分感谢!

  • richard Says at 18:29, May 27, 2008

    “其他文章”还没写呢 :) 近来实在没足够时间写。
    keep tuning..

  • beginner Says at 9:21, May 28, 2008

    目前我们要利用ARM为客户开发一个原型。遇到的问题:ARM Java版本,要利用JNI调用C函数,我不知道如何将业务监控数据存储到数据库中。也就是说,我们只是看到将ARM得到的数据打到控制台上,但不知如何存到数据库中。

    请问我应该如何修改代码,才能将ARM agent数据保存到数据库中?数据库有标准的设计方法么(是否可以参考MyARM的数据库结构)?非常感谢

  • beginner Says at 9:22, May 28, 2008

    目前我们要利用ARM为客户开发一个原型。遇到的问题:我们只是看到将ARM agent 得到的数据打到控制台上,但不知如何存到数据库中。

    请问我应该如何修改代码,才能将ARM agent数据保存到数据库中?数据库有标准的设计方法么(是否可以参考MyARM的数据库结构)?非常感谢

  • beginner Says at 9:24, May 28, 2008

    您是否有邮箱,以便可以和您交流下?我的邮箱dcarmapp@yahoo.com.cn

  • beginner Says at 9:25, May 28, 2008

    非常感谢

  • beginner Says at 9:27, May 28, 2008

    您是否有邮箱,以便和您交流?

  • beginner Says at 9:30, May 28, 2008

    是否可以和您通过邮箱联系?项目目前十分紧张,所以急切希望和您沟通。我的邮箱:dcarmapp@yahoo.com.cn

  • beginner Says at 10:41, May 28, 2008

    项目目前十分紧张,急切希望和您沟通。我的邮箱:dcarmapp@yahoo.com.cn

  • beginner4ARM Says at 14:46, May 28, 2008

    是否可以邮件讨论?dcarmapp@yahoo.com.cn

  • beginner Says at 16:16, May 28, 2008

    您有邮箱么

  • richard Says at 20:48, May 29, 2008

    不用客气,很高兴看到有人对 ARM 有兴趣。
    我的邮箱是 huangyunsong@gmail.com

  • alex Says at 14:00, June 8, 2008

    我今天才知道有ARM这么一个标准,但它解决的问题正是我想要的,期待中。

Leave a Reply