SOA可以从多核处理器架构中获益,然而很多相关的工具和程序员使用的小工具应该被开发出来,并且广泛的使用,这样你就不用将开发并行XML处理代码的重担压在程序员身上 伴随着多核处理器架构的成功,企业级的应用从程序的并行执行中获益良多。按照定义,多核微处理器(multi-core microprocessor)是将二个或者更多的独立处理器结合到一个单元中,该单元通常是集成电路(integrated circuit,IC)。这种构架无需分布在不同的物理单元的多个微处理器参与下,就可以让软件程序实现线程级别的并行(芯片级别的多处理)。现在出现的问题是“什么是多核?”答案在于可……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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处理代码的重担压在程序员身上。
相关推荐
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。
-
如何避免云计算与SOA冲突