寻找适合并行编程模型的中间件

日期:2016-6-8作者:Tom Nolle翻译:boix 来源:TechTarget中国 英文

【TechTarget中国原创】

并行计算有助于应用和资源管理的合理化,但是为此方案找到找到合适的中间件却是很棘手的问题。Tom Nolle解释了应该寻找什么。

一些计算功能跟流程绑定得如此紧密,以至于如果可以(在处理器内核之间、CPU与GPU之间甚至跨系统边界)有效共享的话就可以获得极大的好处。并发性一直都是通过多线程、同步以及锁定技术来支持的,但现在有了中间件工具以后可以让并发更容易实现。为了选出最好的,你需要理解你的并发编程应用的需求,考虑应用的来源和方向,最后还要了解一些政治的并行处理语言,即便你并不认为自己需要这样的语言。

大多数业务流程最好是评估为一组过程或者步骤,其后者往往要取决于前面的过程或步骤的结果。这种线性的方案几乎归纳了所有现代软件开发的特点,编程语言和中间件工具已经为此进行了优化演进。

一些包括了复杂的流程和计算的应用可以利用传统的工具和语言开发,但也可以受益于用额外系统、处理器或者内核的形式分配多个并行处理资源。对这些流程的优化支持需要为并行流程的同步提供安身之处,以确保数据在可用之前不会被使用或者流程不会在资源使用中发生冲突。锁和信号量是并发性的固定装置,但是很难调试,在伸缩性方面受限。

并发模型由何构成?

并行计算的挑战之一是确定“并行”究竟是什么意思。一些人认为任何形式的并发性支持就是并行编程,这样的话网格或集群计算以及多实例云和微服务应用都算是。有的则认为这种模型应该泛化到包括任何形式的跨并行资源的任务分布。考虑的出发点之一是随着时间转移会出现更多的并行选项,所以把自己限定在任何受限模型之内也许不是明智之举。

结果证明,使用并行编程的大多数机会都与特定算法的实现以及可用更高级语言声明的算法有关。如果该语言的解释以及结果代码的执行是由中间件管理的话,那它天生就是资源敏捷且并发友好的,就有可能避免一切传统的并发问题。

即便是更高级的语言—所谓的“非过程性”语言—也可用为并行编程模型框定起点。因为这些语言表达的上意图而不是过程,这些是可用语言处理器而不是靠开发者来并行化的。这说明了一条普遍事实:语言越高级,程序的并行化越容易—只要有合适中间件的话。反之,如果使用了更低级的过程性编程模型,那模型就不得不从目前的概念、包括哪些现在用来支持并发线程的概念进行演变,以便优化性支持并行选项。

确定模型

所有的并行编程都应该从用什么语言开始,有半打的基本模型可以确定语言。第一种并行模型优化了当前语言并引入了并发性的概念。最新的模型比如X10,是专门用来进行一般化的并行编程的。别的像Smalltalk和LINQ属于非过程性的,适合于并行编程,如果使用合适的中间件的话。

集群和网格计算中间件工具,甚至RESTful API以及微服务也可以使用Java、C#、MPI、PALM等语言来开发“并行”应用,Active Message中间件(全部都是开源的)在大多数支持并发开发的语言中都可以使用。还有一些是针对Java、C#、C++等特定语言的中间件工具。这些模型更容易采用,但很难让并行性支持多核或者多选题网格这样的一般事情。开发者可能还会发现显式任务同步的需求很难实现。

微软的LINQ和PLINQ就是从传统应用向并行计算演进的一般模型的例子。LINQ有助于定义表示计算模型而不是计算方法的算法。PLINQ是一款.NET中间件工具,这个工具可以管理这些算法的并行执行,这样应用就可以开发为将算发性要素从过程部分分离出来。Java 8也有类似的能力,因为它采用了Streams和一种合适的数据库模型。高性能Fortran (High-Performance Fortran)是一种支持并行处理的算法型语言。

这些方案还是需要开发者适应并行性,要么通过在编程中树立意识,要么要做算法处理中隐藏好它。由IBM发起作为开源项目开发的X10语言侧采取了不同的办法。它通过创建围绕着place以及异步任务这样的新概念开发的并行友好型过程性编程模型修改了“过程性”编程的概念。跟非过程性方案不一样的是,X10让开发者开发和管理并行性而不是隐藏它。

考虑你的目标

并行编程路径的数量令人眼花缭乱,很可能还会变得更加复杂。对于开发团队而言,考虑的关键是应用的来源和方向。如果你进行的是传统的商业化编程,希望给特定的算法处理增加并行支持的话,那可以看看针对特定语言的并发性中间件或者PLINQ。如果你更关心并行性而不是集群(网格)计算或微服务的话,把前者看成是基本方案。后者用来针对一般的并行化。

作为要素,开发的方向更难考虑进并行编程规划里面,这仅仅是因为很难知道有哪些选项。业界的一般硬件趋势正朝着每处理器内核数量更高、每小题处理器更多的方向发展。从更高的层面来说,这股趋势正朝着组件化以及计算、存储和网络功能分离的方向发展。即便中间件也日益被视为“服务”,系统展示的只是非常轻量的操作系统,并汇总微服务之类的平台功能。

这一基本事实是的像X10之类的东西成为合理选择。X10有一个基于Eclpse的开发环境,为了方便执行框架是用Java编写的。X10社区有着很好的文档和向导,对于任何计划使用并行编程模型的组织来说,花点时间学习这门语言并理解在系统—集群层次对并行性的适应会影响到语言结构和中间件工具是明智的。要想充分意识到一门看不见的技术之潜能总是很困难的,并行相关的开发最终也会证明这一点。

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

评论
查看更多评论

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者>更多

Tom Nolle
Tom Nolle

关于作者:Tom Nolle是CIMI公司的总裁,这家公司成立于1982年,是致力于电信和数据通信的战略顾问公司。Tom Nolle是IEEE、ACM、Telemanagement Forum和IPsphere Forum的一员,著作有关于Netwatcher方面的书籍。

IT治理>更多

  • 阿里加入HTML5联盟,你怎么看?

    移动智能的流行,使得HTML5技术开始盛行。相信,最近大家都看到微信上火热故宫与腾讯合作的宣传视频,这就是一个成功的HTML5案例。HTML5已经受到越来多企业的青睐。

  • 寻找适合并行编程模型的中间件

    一些计算功能跟流程绑定得如此紧密,以至于如果可以(在处理器内核之间、CPU与GPU之间甚至跨系统边界)有效共享的话就可以获得极大的好处。

  • 小企业如何更快速部署高性能Wi-Fi

    智能无线网络公司优科无线日前宣布推出新的入门级802.11ac接入点,以及其Ruckus Unleashed™系列接入点的扩展版和增强版。新的产品和功能使小型企业能够更加轻松地部署可满足自己的成本、易于部署和覆盖需求的高性能Wi-Fi。

  • 初创企业:出师未捷身先死的原因

    英国大多数中小企业(SME)都因缺乏数据化技能而没能站稳脚跟,消失在众人的视野时,根据互联网服务机构Rakuten的调查显示。

相关推荐

  • IT组织如何完成企业信息集成

    很多IT组织都发现商业信息的企业集成是非常难的任务。主要是由很多组织的不同的底层数据库技术支持的异构应用程序的混杂局面造成的。

技术手册>更多

  • 中小企业外包服务技巧指南

    相对于大型企业,中小型企业对外包更感兴趣。本期TT中小企业技术手册,将针对外包服务话题为中小企业作出最佳实践指南。

  • 中小企业如何管理电子邮件

    随着电子邮件成为全球企业内部交流、以及企业与外部(包括客户和商业伙伴)信息往来的最主要方式之一,电子邮件数量快速增长,如何安全高效地管理邮件信息,如何从大量邮件中快速搜索出所需的历史邮件和附件,是企业信息管理必须要面对的问题。

  • 中小企业虚拟化战略大盘点

    当我问我的CIO朋友们什么是他们最感兴趣并认为最为重要的计划,总有一个话题排在首位:虚拟化。看起来几乎我们所有人都已经正在或者准备进行虚拟化方面的工作。近年来虚拟化被称赞为IT的救命稻草,这种观点经得住各个方面的考验。

  • 中小企业数据存储管理的五大锦囊妙计

    虽然中小企业的数据存储环境通常比大型企业小很多,而且他们的数据存储需求也是如此。此外,他们通常还会碰到和大型企业相似的数据存储管理问题,但是员工和资源都不足,中小企业在应对存储管理问题的时候比较困难。 为了帮助大家更好地管理中小企业的数据存储,TechTarget中国整理了存储管理的五大最佳技巧,不管你是想要优化你的RAID数据存储、查找最好的数据保留方法、了解最好的数据存储成本节约技巧,还是想要深入了解中小企业的存储虚拟化方案,都可以在这里找到。

TechTarget

最新资源
  • 存储
  • CIO
  • 数据库
  • 服务器
  • 云计算
  • 商务智能