Thinking XML

使用 XML 模式工具进行系统分析

操作系统分析的准则离不开一个灵活、适用的工具箱

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: Thinking XML

敬请期待该系列的后续内容。

此内容是该系列的一部分:Thinking XML

敬请期待该系列的后续内容。

当面临一个业务流程方面或者系统资源利用效率低的问题时,每个程序员、系统管理员、数据库分析人员都知道应该怎么做。他们各自使用自己的智慧锦囊,这些是他们从多年的经验中根据已经解决的问题总结而来的。尽管这种解决问题的方法已经沿用了几十年,但是企业架构师越来越迫切希望有一种更好的方法。他们想要采用一种健全的、可再生的、基于证据的方法来解决此类问题,甚至在第一时间预计和避免此类问题。

操作系统分析(尤其是系统优化)的准则已经涌现出来,这有助于解决这一问题。有责任的架构师越来越关注采用一些正式的方法来管理已成为企业命脉的系统。越来越多的传统业务规则和工作流工具正在成为系统优化的正式准则,包括 IBM® ILOG® 在内(参见 参考资料),它的优化建模方法如 图 1 所示。该优化模型列出了各种输入(比如应满足的需求;可用的资源;成本、收益和方法;操作约束和客户偏好;业务目标)、一个或多个数学模型和优化引擎,以及一个带有度量标准(比如最小化成本、最大化收益、特定资源分配和最佳的活动时间安排)的时间表或计划。

图 1. IBM ILOG 优化模型
IBM ILOG 优化模型图,带有输入、模型和引擎,以及一个时间表或计划
IBM ILOG 优化模型图,带有输入、模型和引擎,以及一个时间表或计划

现在,对于实际的系统,通过各种面向服务的架构(SOA)传输 XML 格式的消息是极为常见的。此类系统通常采用 XML 形式表达业务规则、词汇、分类和描述性系统。因此,优化措施的重要输入通常来自 XML 数据集和消息统计的模式分析。为支持此类分析,懂 XML 的企业架构师可以找到廉价且灵活的方式来收集基本的信息,用于支持系统优化。本文将讨论关于在操作系统分析中应用最有效的 XML 处理方法的约定和技术,并选择了一组示例场景来说明。

使用率分析

任何系统优化最基本的输入都是实际使用率模式。哪些操作使用得最多?有没有什么参数模式使用得尤为频繁?这些可能会是优化资源或处理的备选项。在很多现代的、基于 Internet 的系统中,实际使用率由通过线路传输的半结构化消息表示。目前,具有此类用 XML 表示的消息已很常见,比如 SOAP Web 服务或者通过 HTTP 发布到 RESTful 端点的 XML 消息。如果您使用基于 SOAP 的 Web 服务,那么您可能有机会使用适合于绑定级别的专门工具。所以本文中我会将焦点放在 RESTful 系统中通过 HTTP 传输 XML 的例子上,RESTful 系统是一种流行的系统,针对它的现成工具还不多。系统架构师需要明白如何在此类系统中执行分析,此外,这些技术在协议级别上也适合基于 SOAP 的系统。

资源预定服务

在本文的例子中,我们假设有一家虚构公司想要部署资源预定系统,员工可以发送请求来预定诸如会议室和多媒体设备之类的资源。图 2 是一个高层次图,演示了各种系统(包括浏览器、移动电话和定制应用程序)如何与资源管理器服务交互。

图 2. 资源管理器的系统概述
带有应用程序、REST 包装器和资源管理器服务的系统概述图
带有应用程序、REST 包装器和资源管理器服务的系统概述图

您可以使用网络拓扑工具来分析各种入口点的使用率模式(例如,确定何时移动接口比普通 Web 接口用得更多)。您也可以通过使用 REST 层来进行更复杂的使用率模式分析。清单 1 中的例子展示了一个作为 HTTP POST 发布的预定请求消息。

清单 1. 示例预定请求消息
<?xml version="1.0" encoding="utf-8" ?>
<reservation xmlns="http://example.com/enterprise-reservations">
  <session id="115384" user="jdoe"/>
  <request timestamp="2010-03-02T15:39:50-07:00">
    <resource id="room123" type="conferenceroom"/>
    <purpose>Marketing meeting, and free doughnuts</purpose>
    <period start="2010-03-10T10:00:00-07:00" end="2010-03-10T11:00:00-07:00"/>
  </request>
</reservation>

使用 Schematron 进行分析

Schematron 对于此类分析是一个很好的工具。清单 2 就是一个 Schematron,用于生成请求时间戳和资源类型的报告。

清单 2. Schematron 生成请求时间戳和资源类型的报告
<?xml version="1.0" encoding="UTF-8"?>
  <schema xmlns="http://www.ascc.net/xml/schematron">
    <title>Reservations manager usage analysis</title>
    <ns uri="http://example.com/enterprise-reservations" prefix="er"/>
    <pattern name="Basics requests report">
      <rule context="er:reservation">
        <report test="er:request/@timestamp">
          Request timestamp: <value-of select="er:request/@timestamp"/>
        </report>
        <report test="er:resource/@type">
          Requested resource type: <value-of select="er:resource/@type"/>
        </report>
      </rule>
    </pattern>
    <pattern name="Validation">
      <rule context="er:reservation">
        <assert test="er:session">
          Request must have a session element
        </assert>
      </rule>
    </pattern>
  </schema>

我推荐您学习 Schematron(参见 参考资料),但是本文将仅解释清单的主要结构。ns 元素是 Schematron 的名称空间声明机制。pattern 是一组应用于 XML 文档的相关规则。rule 元素指定关于 XML 中特定构造的业务规则,在 context 属性中假定使用 XSLT 模式形式。在规则中,report 元素用于记录满足给定条件(以 XPath 形式给出)的构造,assert 元素用于指定架构设计者期望有效的 XML 文档要满足的条件。根据大致经验,Schematron assert 元素表达预期的文档模式,而 report 元素则表达具体的模式。

如果您在预定管理器的 REST API 中实现了 清单 2 中的 Schematron,那么您已经汇集了一个有关何时发出请求、请求何种资源的日志。您可以使用该日志来优化峰值时间,确定资源对于满足请求是否足够,等等。

分析场景

上一节学习了在系统分析中应用 XML 报告的基本思想,重点放在一个核心工具 Schematron 上,它已经是表达 XML 文档模式规则最流行的方式。本节将展示构建此类基础的各种方法,以提供更加全面的分析,为系统优化的各个方面做好准备。通过将各种简单而富有表现力的机制联系在一起,您可以收集常用的操作统计信息,同时获得属于自己的专门工具,从而在竞争中获得优势。

活动系统建模

在该场景中,架构师建立系统模型,以便系统团队可以积极地监控系统的实际行为。图 3 演示了活动系统的工作和数据流。

图 3. 活跃系统建模场景
活动系统建模图,基于 SML 和一个分析仪表板(如 Eclipse COSMOS)
活动系统建模图,基于 SML 和一个分析仪表板(如 Eclipse COSMOS)

用于该场景的一个现有工具是 Service Modeling Language (SML),这是由 IBM 和多家公司提议的一个标准,用于建模复杂的服务和系统,包括它们的结构、约束、策略和最佳实践。SML 基于带有嵌入式 Schematron 规则的 W3C XML schema (XSD),如 图 3 所示。架构师和开发人员可以依靠工具来将 SML 合并到系统开发和维护中,比如基于 Eclipse 的 COSMOS 项目。

利用率热图

优化的一个重要前提是必须深刻了解哪种服务模式和哪种资源使用最多,这类似于热图 的用户体验(现代统计工具可以生成类似热图)。图 4 演示了热图的工作和数据流。

图 4. 利用率热图场景
具有报告模块、XSLT 转换和统计包的热图设置
具有报告模块、XSLT 转换和统计包的热图设置

在本例中,每条消息都会通过报告模块,该模块汇集成一个报告,建立在 Schematron Validation Report Language (SVRL) 之上,SVRL 是一组有关从 Schematron 报告生成结构化输出的约定。此输出很容易转换成统计分析工具(比如 IBM SPSS®)的直接输入格式。

协议适应

一个最常见的维护要点是预期协议的变体。此类变体可能源于系统模型的差异或者客户层的擅自变更。图 5 演示了此案例的监控过程。

图 5. 协议适应场景,具备异常通知功能
协议适应图:报告模块将异常通知发送给管理员/开发人员审查
协议适应图:报告模块将异常通知发送给管理员/开发人员审查

举例来说,假设您使用 XSD 或 RELAX NG 中的封闭文法构造架构(并且可能用 Schematron 扩展),那么您可能得到一个封闭的模型,它会在协议有偏差的情况下抛出异常。发生此类异常时。可以向管理员或开发人员发送通知,让他们来审查和处理。一个类似的异常和通知方法适合于管理操作遵从性(比如说满足规则)。

干涉结果

作为一个相当复杂的分析方法的例子,考虑一下当出现更多常规处理异常时会发生什么情况。系统可能会通知一个代理进行特殊处理。也许会出现会议室使用冲突,代理打电话给请求方,以协商备选房间。补救措施可能相当于对初始请求进行修改,比如根据协商结果发出新的会议室请求。在本例中,有必要对初始请求和干涉结果进行分析,以便开发一种方法来自动干涉,提高代理的效率。图 6 演示了这样一个场景。

图 6. 干涉结果场景
图:报告模块接收请求,然后发送异常通知给管理员/开发人员审查或干涉代理
图:报告模块接收请求,然后发送异常通知给管理员/开发人员审查或干涉代理

可以从其他场景中看到很多相同的工作流工具,但是在本例中,差异分析工具也比较相关输入的模式,支持复杂的分析。

结束语

随着 Web API 和社会媒体的普及,防火墙直接和间接地影响着企业系统设计,很多信息系统的格式服从于半结构化报告工具,这是为系统优化的监控阶段做准备时要考虑的一个要点。与此同时,此类现代系统的地域性分散特征使得采用单一的系统分析和优化方法是不切实际的。对于企业架构师来说,在应用准则时进行操作系统分析是一个非常重要的进步,不过他们应该认识到,在现实中不可能实施完全一样的准则。具有一个灵活的工具箱非常重要,让您可以进行重新配置和重新部署,以适应新出现的场景。我希望您从本文学习到一些可能性、一些复杂性和几种报告 XML 消息流的方式,可以支持现代系统架构中的持续改进。


相关主题

  • Eclipse COSMOS 项目:获得对流行开发和体系架构工作台的 SML 支持。
  • Schematron:将这个用于对 XML 文档中的模式做出断言的 ISO/IEC 标准语言添加到您的工具箱。采用 Schematron 是一种非常高效的方式,可以在系统中使用 XML 文档表达业务和模型规则。
  • Schematron Validation Report Language (SVRL):用 SVRL 补充 Schematron。SVRL 是一种简单的报告语言,被定义为 ISO Schematron 的一部分。SVRL 提供一组相当完整的信息用于验证文档,此文档可用作后续转换的基础。
  • Service Modeling Language (SML):更多地了解 SML 以及它用于创建复杂 IT 服务和系统模型的构造。这些模型一般包含关于配置、部署、监控、策略、健康、容量规划、目标操作范围、服务级协定等的信息。
  • XML 新手入门:如果您是 XML 新手,那么从这里开始探索 XML 吧,利用它能做到任何事情。该专栏的读者对于这一页来说可能太高级了,但是这里是让您的同事对 XML 入门的好地方。所有 XML 开发人员都可从 XML 专区的 XML 标准 获益。
  • developerWorks XML 专区:找到更多 XML 资源,包括 Thinking XML 专栏的 前一期。如果您已经对这篇文章或者本专栏中的任何其他文章发表评论,请将它们发布到 Thinking XML 论坛
  • developerWorks developerWorks Web 开发专区:利用专门针对 Web 技术的文章和教程,拓展您的网站开发技能。
  • developerWorks 技术活动网络广播:随时关注这些活动中的技术。
  • IBM 产品评估试用版软件:下载或在线试用 IBM SOA Sandbox,并开始使用来自 DB2®、Lotus®、Rational® 、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。
static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=XML
ArticleID=499671
ArticleTitle=Thinking XML: 使用 XML 模式工具进行系统分析
publish-date=07082010