SOA并行处理 从多核处理获益

日期: 2008-01-06 作者:Deepti Parachuri 来源:TechTarget中国 英文

SOA可以从多核处理器架构中获益,然而很多相关的工具和程序员使用的小工具应该被开发出来,并且广泛的使用,这样你就不用将开发并行XML处理代码的重担压在程序员身上   伴随着多核处理器架构的成功,企业级的应用从程序的并行执行中获益良多。按照定义,多核微处理器(multi-core microprocessor)是将二个或者更多的独立处理器结合到一个单元中,该单元通常是集成电路(integrated circuit,IC)。这种构架无需分布在不同的物理单元的多个微处理器参与下,就可以让软件程序实现线程级别的并行(芯片级别的多处理)。现在出现的问题是“什么是多核?”答案在于可……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

SOA可以从多核处理器架构中获益,然而很多相关的工具和程序员使用的小工具应该被开发出来,并且广泛的使用,这样你就不用将开发并行XML处理代码的重担压在程序员身上

  伴随着多核处理器架构的成功,企业级的应用从程序的并行执行中获益良多。按照定义,多核微处理器(multi-core microprocessor)是将二个或者更多的独立处理器结合到一个单元中,该单元通常是集成电路(integrated circuit,IC)。这种构架无需分布在不同的物理单元的多个微处理器参与下,就可以让软件程序实现线程级别的并行(芯片级别的多处理)。现在出现的问题是“什么是多核?”答案在于可扩展性、处理能力的分工、处理功能的专业化、提升的性能要求和降低电力消耗。

  暂且不谈硬件相关的影响,我们看看多核计算对软件的影响。多核处理的出现同样也代表了从软件角度的重新思考。目前的应用将无法完全发挥处理器的性能,除非它也是高度并发的。并发执行的的代码组件从多核的架构中获益最大,接着多个应用也可以从多核的架构中受益。最后你可以独立的运行每个虚拟机器。

  设计并行应用的基本步骤包括:

  分区(Partitioning):将设计分解成一小块,一小块。
  通讯(Communication):每个块需要其他的块提供数据才能顺利执行。信息流在通讯阶段被指定。
  聚合(Agglomeration):得到一种算法能够有效的在并行计算机上执行。这个阶段我们将分区阶段中指定的多个任务进行结合或者聚合,减少任务的数目 。
  映射(Mapping):现在,我们指明每个任务在哪里执行。

  商业应用的要求不允许使用网格或者并行的环境。三个主要的原因如下:

  处理次序:商业逻辑一定是遵守特定的次序进行处理,才能保证商业流程的完整性。每个交易等待前一个交易执行完毕才能够得到处理。处理的次序很难在并行的网格环境中维护。
  集中式的共享资源:应用在整个周期中都有一个集中的资源。这就造成了瓶颈。
  不可预计的行为和资源需求:商业处理对数量和处理的需求在一天、甚至是一个小时中都会发生变化。这就很难将应用分为相同大小的块,以及资源的分配。

  SOA中的多核处理

  由于内在的灵活性,面向服务的架构如今渐趋流行。SOA是一个能够最大化灵活性和控制的企业驱动的、复杂的、可管理的、基于标准的、高度定制的架构。SOA是基于组合模式的,这意味着可以通过插入服务来实现新的应用。然而,由于依赖于XML之类的语言,SOA的解决方案需要较多的计算资源。SOA的应用本质上是分布的,因此可以利用多CPU和多服务器架构实现。为了从SOA中真正获益,就需要在SOA的软件设计和实现中采用一种并行处理的方法。

  在SOA中,多核计算可以在下面的方面得到应用:

  通过同一个逻辑服务分布到多个实例来实现可扩展性。
  检测并行的可能性,尽量将服务并行执行。
  通过将不同的服务分散在多个线程,达到服务流程(service processes)/服务编排(service orchestration)的扩展性。
  SOA计算中不同的处理——编组(marshalling)、模式处理(schema processing)、 验证(validation)和并组(demarshalling)——在一开始就分成多个线程上,最大化服务的吞吐量。

  对XML的并行处理

  XML、SOAP和WSDL是用于建立SOA应用的主要行业标准。XML作为SOA之间的混和语言出现。然而,对XML的处理对计算能力的要求较高,虽然一些优化技术被开发出来解决性能问题,但是没有一项技术能够让人满意。这样XML最终成为SOA应用的主要瓶颈。随着多核处理器架构的出现,对XML的并发处理有望成为提升XML处理性能的解决方案。

  XML数据模型获得了相当的流行,因为它不仅能够表示类型繁多的结构化(表格)和非结构化(文本)数据,而且还能够集成像电子邮件消息、网页、传统/关系型数据库等异构数据源, 向各种设备(电脑、移动电话和PDA)上显示出来。有一种解决方案是使用软件的流水线(pipelining)。这种方法中,XML解析分成了多个阶段,每个阶段被不同的线程执行。这种方法可以提供很快的速度,但是由于同步、负载均衡和内存访问的代价而难以实现。另外一个相关的方法是数据并行(data-parallel),这种方法中,XML文档被分成了多个块,并且每个块都会被不同的线程处理。

  主要的技术挑战是如何分解XML数据以及如何实现较优的分配。XML文档可以被当成字符序列,而分成相等大小的块。这意味着每个块可能会从某些字符串(标签名、属性名或者元素)的中间位置开始,这样语法就不可知。这个问题可以通过回撤字符(backtracking )和通讯来解决,但这也增加了计算成本。另外的一个问题是XML作为一个树型数据模型,这样的分块会导致树结构的任意分支,导致结果的合并很困难。不采用相当大小的分解,而是将XML文档分解为逻辑结果会更加有效(参见Wei Lu, Kenneth, Yinfei Pan, "A parallel approach to XML parsing", Grid computing, 7th IEEE/ACM international conference, September 2006)。

  需要的工具和支持

  XML并行检测工具
  XML程序/解析器的代码分析工具
  XML并行解析器
  发掘并行能力的XML/XQuery的分解工具
  并行XML处理代码自动生成器工具

  结论

  SOA可以从多核处理器架构中获益,然而很多相关的工具和程序员使用的小工具应该被开发出来,并且广泛的使用,这样你就不用将开发并行XML处理代码的重担压在程序员身上。

相关推荐