优化Web服务应用程序

日期: 2008-07-15 作者:Judith M. Myerson 来源:TechTarget中国 英文

  想要学习如何优化面向服务的体系结构(Service-Oriented Architecture,SOA)中的Web服务应用程序吗?Judith M. Myerson强调了业务流程规则在优化Web服务的过程中具有最高优先级的重要性,并给出了其他优化技术的例子,例如减少Web请求的数量和执行时间。她还讨论了IBM WebSphere Business Integration,开发人员和业务分析人员可以使用这个工具来协作建模Web服务,以便进行优化 。


  引言


  在这个系列的第1部分中,我展示了如何执行Web服务的业务逻辑来使专有的企业应用程序集成(Enterprise Application Integration,EAI)应用程序可以交互。在第3部分中,我指出了Web服务如何相互通信来交流集成和实现多个SOA中的流程的方式。同样,我还在第4部分中讨论了开发人员可以如何使用Rational开发工具来创建实际的应用程序。


  在本文中,我将讨论在优化Web服务和SOA的过程中具有最高优先级的Web服务的业务流程规则。一旦开发人员优化了流程规则,那么他们就可以开始减少:


  ·Web请求的数量
  ·执行时间
  ·访问时间
  ·不需要的数据
  ·带宽量


  开发人员还需要考虑连接到一个或多个Web服务的大型数据库的分区方案。


  业务流程规则


  为了减少通信量瓶颈或者加载开销,开发人员需要使用某些业务流程规则来优化跨SOA的Web服务的性能。他们应该使用用于Web服务的业务流程执行语言(Business Process &#101xecution Language for Web Services,BPEL4WS)规范来创建新的业务逻辑、调用Web服务、操作数据、抛出错误或者终止流程。


  您可以使用可执行的流程基于业务逻辑组成新的Web服务,以便实现组织的业务目标。您还可以使用抽象的流程作为两个合作伙伴之间在电子商务对话中如何进行交互的协议。


  Web请求


  在优化业务流程规则之后,开发人员可以继续开发他们所需要的Web请求,从现有的Web服务构建新的Web服务。Web服务是在SOA内部还是跨SOA都没有关系。如果新的Web服务——业务逻辑或者以数据为中心——提供更好的或者额外的服务或功能,开发人员必须减少或者完全消除冗余的Web请求。图1展示了两个现有的Web服务各自发送了一个冗余的Web请求来创建新的Web服务。



  图1. 冗余的Web请求
 
  执行时间


  在开发人员优化了现有的Web服务可以发出的请求数量之后,他们还需要减少现有的Web服务的执行时间,以便在组合生命周期的任何时刻基于业务流程创建新的Web服务。以数据为中心的Web服务极少自己执行。


  当开发人员组合新的Web服务时,他们应该当心不要导致新的冗余。为了消除冗余,可能需要将某些冗余的Web服务合并成为一个服务。


  访问时间


  如果给定最佳的执行时间,则减少访问时间是开发人员需要关心的另一个问题。当Web服务请求比较简单时,从数据库或者另外的数据源中访问所请求的信息的时间必须是最佳的。在使用和发布Web服务时必须注意请求不要互相重叠。


  开发人员应该模块化、最优化和索引化请求,以便减少访问时间。然后,他们可以将Web请求放在储存库中,以便在新的应用程序中重用。


  带宽量


  正如您所知道的,Web服务基于XML,并且大部分文件都很小。通常带宽不是问题,而且执行和访问时间也都是最佳的。问题在于大的XML文件。当您每次更改远程服务器上的这些文件时,您需要重新传输整个文件。大的未压缩格式的图形文件可以消耗掉大量的磁盘空间和带宽量,从而延缓了访问时间。


  作为部分的解决方案,开发人员只需要传输对新的Web服务的文件的更改。其他节省带宽的技术包括:加速页面加载的缓存技术、优化解析文本格式的XML文件的时间,以及将XML文件编译成二进制文件(不可读的)。


  不需要的数据


  开发人员应该指定筛选规则来清除他们不想要的数据。筛选规则与针对减少数据冗余的标准化规则不是一回事。他们同样也应该优化筛选规则,然后将它们(XML格式)存储到储存库中,供以后调用。您可以在需要这些规则时从储存库中加载它们,而在您不需要时将它们卸载回储存库。筛选规则还应该包括对旧数据的自动清除或者备份、以及使大的XML文件不久后过期的机制。


  分区方案


  当Web服务连接到大型数据库时,应该注意是如何跨服务器访问、筛选和分发数据的,尤其是在后者位于不同的SOA中的情况下。为了在减少带宽的同时更快地进行访问,开发人员应该考虑两件事情:


  ·数据库的更新频率
  ·数据库更新部分的大小


  如果数据库的大部分经常都需要更新,那么您应该考虑分区方案:硬件分区、水平分区或者垂直分区。而如果数据库只是一小部分经常需要更新,那么就考虑动态分区。


  硬件分区


  您可以使用独立磁盘冗余阵列(Redundant Array of Independent Disk,RAID)进行硬件分区,物理地将表放在单独的磁盘驱动器上而不必分割表。把一个表放在一个物理驱动器上而把其他的表放在单独的驱动器上可以提高吞吐量和操作效率。另外,您还可以选择将一个表拆开,放到多个驱动器上,这样比将同一个表存储在一个驱动器上扫描起来快。


  水平分区


  您可以基于年代水平地对数据进行分区。例如,您可以将一个大表分成十个小的子表,每个子表包括十年中的一年的数据和业务流程规则。


  垂直分区


  您可以使用这种方法将表分成若干个子表。您可以应用规范化的概念删除表的冗余部分,然后将它们放在次表中。您还可以在次表中建立外键,以链接主表中的主键。


  动态分区


  在某种情况下,您可能需要经常更新数据中相对较小而非常重要的子集,我们假定您的数据库中的绝大多数信息相对来说是静态的。如下面的图2所示,您需要分别按频繁更新和很少更新将数据库分成动态部分和静态部分。



  图2. 动态部分和静态部分
 
  这就意味着您需要以这样的方式设计数据库系统,即将数据库表划分成两种类型——静态和动态——的模块化、最优化部分。您可以将静态的部分保存在本地服务器上,而将动态的部分转移到远程服务器供用户频繁地更新。您可以通过跨一组本地服务器和另一组远程服务器分割表来实现这一点。当新的Web服务更新数据库时,这种方法可以帮助减少多个数量级的带宽使用。


  消除语言隔阂


  开发人员和业务分析人员应该找到优化Web服务和SOA的方法的共同基础。这种方法存在的一个问题就是,他们往往使用不同的语言,使用不同的术语,并且具有不同的知识背景。


  例如,业务分析人员使用流程模型来处理业务需求,而开发人员使用统一建模语言(Unified Modeling Language,UML)模型来专注于他们想要优化的Web服务的系统功能。解决这个问题的一种方法就是进行UML和业务流程建模(Business Process Modeling,BPM)模型之间的集成和转换。这将有助于进行良好的沟通,并减少由于缺乏交流而带来的成本。


  WebSphere Business Integration工具


  下面是IBM WebSphere Business Integration(以前称为IBM Holosofx)工具,您可以使用它们来消除这种隔阂:


  ·IBM WebSphere Business Integration Workbench:这是一个BPM工具,您可以使用它通过共同的UML/BPM工作区来消除业务分析人员或经理与开发人员之间的隔阂。


  ·IBM WebSphere Business Integration Monitor:使用这个工具,您可以显示来自WebSphere MQ Workflow所产生的事件的实时数据和历史数据。通过查看业务控制、业务和IT的工作流 (Workflow) 和业务仪表板 (Business Dashboard),您可以优化和管理业务性能。


  ·IBM WebSphere Business Integration Workbench Server:这个工具向您提供储存库管理和Web发布功能。使用这个工具,您可以促进如下几方面的流程设计协作和即时Web访问:


  ·流程模型
  ·策略
  ·过程
  ·业务规则


  ·IBM WebSphere Business Integration Modeler Advanced Edition:您可以在协作环境中使用这个工具来设计与多个用户交互的流程。这款产品由IBM WebSphere Business Integration Workbench Server和IBM WebSphere Business Integration Workbench许可捆绑组成。您可以在Windows 2000或者Windows XP操作系统中运行WebSphere Business Integration Modeler Advanced Edition。


  结束语


  优化跨SOA的Web服务需要提前计划实际上有多少依赖于业务规则的Web服务可以优化。开发人员应该就Web服务设计中使用什么建模技术和优化方案的问题与业务分析人员团队进行沟通。通过预先解决这个问题,开发人员将会发现他们优化Web服务的工作变得更加容易了。他们可以开发和优化相互交互和集成——在SOA内部以及跨SOA——的Web服务。


  分析人员同样也会发现,预先解决这些问题使他们设计和分析优化Web服务的业务端工作变得更加容易了。他们可以确定使用哪种建模方法、使用什么方案、以及在SOA中有多少Web服务可以优化。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • SAP收购CallidusCloud 与Salesforce竞争

    一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。