改善SOA应用程序性能

来源:IT专家网  
2010/10/27 10:30:08
根据摩尔定律,自从晶体管在1958年发明以来,处理速度和容量一直是大约每两年提高一倍。因此,我们制作更大和更复杂的软件系统的时候也要跟上这种容量增长的速度以满足这些系统的需求。

本文关键字: SOA 应用程序

图4显示一段数据的主要拥有者“P”在提取服务数据过程中出现的故障。这个“get()”请求将立即被路由到一个备份节点,然后分配一对新的主要/备份节点。

图4:应用程序节点提供内存内部状态数据的连续不断的容错能力

SOA与应用程序网格

使用应用程序网格的下一代SOA平台提供一些你在服务基础设施中常见的东西,如服务级提取、协调数据转换与路由、多协议支持、适配器等。

我们目前如何应用这些方式实现这个好处呢?在一个典型的SOA环境中,一个流程中的多个服务会调用相同的数据。没有网格,每一次调用这个服务时候都需要提供它需要的数据。

我们使用这个应用程序网格把那个信息存储在内存。每一个服务都把一个密钥或者一个密钥列表发送给它将操作的数据。这就意味着,根据企业服务总线、流程引擎和传输的不同,把密钥从一个服务发送到下一个服务也是不同的。但是,一般来说,把密钥从一个服务发送到下一个服务是在作为一个具体协议的文件头的一部分由服务请求发送的,或者作为一个较小的XML负载的一个一致同意的要素发送的。这些服务将变得熟悉网格并且能够根据需要访问数据并且能够对那个数据集进行集合运算。一旦进行处理,那个数据集就能够保存在内存中以便进行非常快的读数据操作,或者这个数据集继续放在一个使用异步延迟写入技术的数据库中。这个数据集通常采用子集和适合长期关系数据存储的格式(见图5)。

图5:SOA和应用程序网格向服务状态数据提供内存中的访问,使用“Claim Check”(领取单)方式最大限度减少边界成本。

XML网格的例子

这个例子是这样的:一个大型的MXL文件需要由许多服务处理。这个文件不需要每一个服务反串行化、解析、操作和再串行化整个文件,而是分解为更小的文件,转换为Java对象并且存储在应用程序网格中。这个操作由这个链条中的第一项服务执行,或者由一项公用服务在这个文件到达第一项服务之前拦截这个XML文件。比较小的XML消息要从一个服务传送到下一个服务。这个比较小的XML消息(“claim check”)包含访问在应用程序网格中的数据的一个密钥。

分解这个XML文件

我们使用一个StAX(XML流API)解析器分析这个XML文件并且把这个文件分解为这个文件的组成部分。因为STAX在获悉在什么地方开始的时候将实现一个对象树,我们首先寻找许多重复的组成部分中的第一个组成部分。如果这个XML在一个项目节点的容器中包含数千个项目,我们就开始分析这个项目以避免实现整个项目树。

然后,我们使用JAXB(Java Architecture for XML Binding)把单个的XML要素转变为Java对象。一旦拥有这个项目的JAXB对象的参考,我们就可以把它放在一个应用程序网格中。

接下来的操作还有深入了解应用程序网格的力量、把基于网格的处理逻辑当作一个事件处理和重构XML文件等。

总之,我们了解到的情况是一个应用程序网格能够用来显著改善处理大量数据的基于SOA的应用程序的效率和伸缩性。通过在一个具有水平升级功能的应用程序网格中存储和操作服务请求负载(无论这个负载的大小和数量如何),我们都能够以可以预计的延迟升级这个应用程序。此外,使用这个应用程序网格的强大功能,我们能够以内存内部的访问速度执行分布式查询和更新。随着数据越来越大,我们能够简单地升级这个网格以满足需求。这有助于我们使用不太强大的硬件和从一开始就拥有伸缩性的架构实现比以前更强大的处理能力,不用在你每一次遇到升级极限的时候都重新访问这个应用程序设计。

共2页: [1]2 下一页
责编:刘沙
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
推荐博客
创新平台技术,助力政企私有云..

创新平台技术,助力政企私有云建设金蝶中间件有限公司 奉继承 博士第16届软博会高峰论坛,2012.05.31……

畅享
首页
返回
顶部
×
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918