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 in Development and tagged . Bookmark the permalink.

14 Responses to ARM Introduction

  1. beginner says:

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

  2. beginner says:

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

  3. richard says:

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

  4. beginner says:

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

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

  5. beginner says:

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

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

  6. beginner says:

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

  7. beginner says:

    非常感谢

  8. beginner says:

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

  9. beginner says:

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

  10. beginner says:

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

  11. beginner4ARM says:

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

  12. beginner says:

    您有邮箱么

  13. richard says:

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

  14. alex says:

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

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">