构建弹性 SOA 基础架构之一

ZDNet软件频道 时间:2009-02-04 作者:Snehal Antani | 论坛整理 我要评论()
本文关键词:构建 弹性 SOA 基础架构
弹性 定义为服务的持续可用性和性能,而不受其环境的负面更改的影响,它对面向服务的体系结构(Service-Oriented Architecture,SOA)至关重要。
 弹性 定义为服务的持续可用性和性能,而不受其环境的负面更改的影响,它对面向服务的体系结构(Service-Oriented Architecture,SOA)至关重要。SOA 基础架构必须确保服务具有很高的可用性,而不受不可预测的条件的影响,如突然出现的大幅度的网络延迟,数据库响应时间的增加或依赖服务的服务质量降低等。本系列描述构建弹性 SOA 基础架构的设计问题和技术,本文是其中的第 1 部分,重点介绍 IBM® WebSphere® Application Server for z/OS® 如何加入 SOA 以及其如何为 SOA 弹性做出贡献。

  引言

  随着硬件和软件资源的虚拟化变得越来越普遍,中间件基础架构弹性开始变得越来越重要了。弹性差的服务会对承载于相同虚拟化硬件和软件上的其他服务造成负面影响,例如,在通过可能会造成大量延迟的不可靠网络调用同步服务调用时锁定和保留共享资源。

  本文将讨论影响 SOA 基础架构弹性的若干问题。本文将使用 WebSphere Application Server for z/OS 来对所述问题的效果进行量化。通过 IBM System z™ 提供的虚拟硬件和软件的高级监视功能、WebSphere Application Server for z/OS 的多进程服务器体系结构、用于确保弹性的内部机制,以及通过研究大量 WebSphere Application Server for z/OS 客户部署可以了解的高级概念,能够确定影响广泛的 SOA 领域的问题,并对所建议的解决方案可能造成的影响进行量化。

  应用程序服务器、虚拟化基础架构弹性SOA

  SOA 指南可帮助进行业务服务开发。业务服务 实际上是能够在整个企业共享的可重用业务功能。这些业务服务的粒度和分配将在设计新 SOA 时成为两个重要的方面。

  预先建立的最佳实践

  所建立的最佳实践以及通过相关技术积累的经验教训可为构建弹性 SOA 提供很好的指南。例如,通过 Java™ 2 Platform Enterprise Edition (J2EE) 技术我们了解到,位于相同应用程序服务器上的依赖 Enterprise JavaBeans (EJB) 组件的搭配考虑了按引用传递与按值传递的优化,同时还可减少服务器资源的使用,具体来说,这仅需要在一台服务器上使用一个应用程序服务器工作线程,而不是在 N 台服务器上使用 N 个线程。类似地,在 SOA 中紧密耦合的服务 应该带来与 J2EE 中类似的好处。

  另一个例子源自 Common Object Request Broker Architecture (CORBA),即数据的序列化和反序列化对性能有重大影响。因此,要构建高性能分布式系统,设计人员必须了解所传输的远程对象,并对此进行简化,以提高性能。这些经验教训和很多其他知识在构建弹性 SOA 基础架构时都非常重要。

  应用程序服务器和共享运行时基础架构

  应用程序服务器已经成为了用于将服务提供者与服务使用者进行连接的平台。在构建可靠的弹性 SOA 基础架构时,了解应用程序服务器的行为方式非常重要。当应用程序服务器在共享资源环境中运行时,SOA弹性特别重要,因为脆弱的 SOA 的负面影响会被放大。对于共享运行时基础架构,在最底层消除了硬件竖井 (silo) 范式的服务隔离,服务会争用相同的硬件资源(如 CPU 和内存)。这会产生什么样的结果呢?由于共享资源被锁定、使用或耗尽,脆弱的 SOA 可能会直接或间接地影响其他服务和子系统。

  共享运行时基础架构承载很多服务和子系统,包括数据库(IBM DB2®、Oracle 等)、遗留事务处理(如 IBM CICS®)、平台消息传递(如 IBM WebSphere MQ)等等。所有这些服务和系统都会在一定程度上争用共享资源。在负载过大的情况下,共享运行时将使用服务策略、相关优先级和其他此类元数据来管理资源的分配。当高优先级服务不能达到所定义的服务级别水平时,基础负载管理器(用于管理共享资源分配的子系统)将决定哪些服务能访问资源,哪些不能。因此,当共享系统必须进行分配决策时,这些具有较高优先级的服务可能会对较低优先级的服务造成负面影响。

  共享资源争用在采用 SOA 时将是一个重要的设计注意事项。糟糕的体系结构设计不仅会给 SOA 造成负面影响,而且会损坏整个共享系统。例如,图 1 所示的系统中数据库由两台应用程序服务器使用,这两台服务器分别承载两个独立的服务。服务器 1 中的故障会导致正在进行的事务回滚。回滚由数据库执行,而此任务具有较高优先级。数据库在回滚事务时,可能会从服务器 2 剥夺共享资源,而后者与故障没有任何关系。

  图 1. 共享基础架构

  共享基础架构


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134