APP下载

基于软件管道的事务处理并行计算架构

2017-10-26蒲江

电脑知识与技术 2017年22期
关键词:并行计算性能

蒲江

摘要:出于对计算能力的需求,我们期望无止境地提升计算能力,现在CPU制造商通过使用多核处理器来继续增加计算性能并维持长期趋势。我们要充分利用这巨大的能力,就必须学会让应用程序“同时多干几件事”。然而,传统的并行计算方法既受限制,开发起来又很困难。该文推荐了一个更加简单、更具有灵活性的方法——软件管道,来进行并行处理,最大化利用资源实现事务处理程序的性能突破。

关键词:并行计算;软件管道;性能

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)22-0098-03

1并行计算与事务处理

如果你正在从事管理或采用关键业务应用进行工作,那你最有可能应对性能问题。应用程序无法控制不断增加的数据量,而它又不能进行扩展满足新的需求。你要达到较高或更高的性能水准,想要性能增加一个数量级,应用程序能够处理的事物数量也要增大。当今计算环境中只有一个方法能达到这个目的:利用并行计算架构,在同一时间执行多个任务。

并行架构的基本概念是:给定一系列要执行的任务,将这些任务分到离散的各个组,部分组或全部组可以在同一时间、同一计算资源上进行处理。然而,使用现有的业务应用程序很难做到。无论是面向整体的或是面向对象的,大部分程序是紧耦合的,很难分解成若干并行的步骤。

目前,重要的并行计算技术有三种:操作系统级别的机械式方案、自动化网络路由和网格计算。

1.1操作系统级别的机械式方案

1.1.1对称多处理

SMP在一台物理计算机上自动地分发应用任务到多个处理器上进行处理,该任务共享内存和其他硬件资源。这种方法高效,易于实现,因为用户不需要了解SMP如何划分工作负载等详细信息。

但是为获得最大性能,用户必须编写多线程逻辑应用。另外,SMP对于资源竞争很难调试。例如,共享软件组在运行时遇到问题,那么发现问题的原因非常困难并需要耗费大量时间。还有,处理器之間的资源共享是紧耦合的,也不能对任何特定应用进行优化。当对魔蝎应用进行扩展时,关键点的共享资源将成为系统的瓶颈。所以有可能业务应用在8个处理器上取得重大成果,但扩展到16个处理器时,看不到任何性能增益。

1.1.2集群

集群是另一种被广泛应用的机械式解决方案。在集群中独立的物理计算机通过网络共享应用的工作负载。集群技术包含了一些低效的功能如果不使用集中式资源,无论怎样,系统不得不将关键信息从一个节点复制到另一个节点上,成为系统瓶颈。如同SMP,集群往往在一定程度上会有一些效果,但会严重削弱添加硬件带来的回报。

1.2自动化网络路由

在这种技术中,可以使用一些预定逻辑来划分应用请求。一个通用方法是轮询路由。该系统将请求在一组物理计算机中逐个均匀分配,每台计算机提供完全相同的应用功能。虽然这种方法对某些应用程序有用,但作用有限。此外,事务处理程序通常要求严格的处理次序,简单的轮询逻辑无法提供相应的处理能力。

1.3网格计算

在网格计算中,系统将分散的任务分布在网络中多台计算机上。典型的网格架构包括一个集中式的任务调度器,它在网络中分布任务并与其他计算设备进行协作。网格计算可以提供比前两种方法高得多的吞吐率,但它给开发者带来沉重的负担。用户必须针对任务分割与部属写出明确的代码,并对处理后的结构进行重组。

1.4事务处理的并行计算解决方案:软件管道

软件管道是处理一种良好的事务处理的并行计算解决方案。这个架构具有很高的伸缩性与弹性。它执行非固定的商业服务,并在有效地计算资源上实现吞吐量最大化,来满足大量复杂的事务处理需求。

软件管道的基本组成部分是管道本身,其定义是:一种以控制顺序的方式对业务流程的离散任务进行调用的执行设备。用户可以通过优先级来控制任务执行顺序,或按照输入消息的顺序来控制业务流程,或二者皆有。

分配器通过对消息内容计算来路由服务请求,路由过程基于配置规则。修改配置规则不需要改变商业服务。用户可以使用优先级路由请求,也可以按照消息到来顺序路由请求,或者二者结合使用。如图l所示,多个请求到达第一个分配器后,分配器将请求分配到三个管道中,第二个管道将一个请求分派到第三个管道,第三个管道向其他分配器发送请求,分配器就将多个请求拆分在五个管道上进行处理。

2管道理论

2.1基本规律

在流体力学中,首要且最基本的规则是输入流等于输出流。在软件管道中,将这个首要规则转换为输入等于输出。将计算系统看作是一个事务流,输入事务的速率是管道中未处理的原料,首要规则的含义是处理或输出的事务不能多于可提供的输入事务。

2.1.1流量限制

最重要的是知道管道系统如何对流量进行限制。在管道上的任何约束都对系统的整体流量产生限制作用。如果系统中任何一个组件处理事务不能达到输入速度,那么这个系统的处理速度会相应的减小。换句话说,系统的处理速度总是受限于最慢的组件。

2.1.2输出流的约束

如果存在对输出流的限制,那么它会对系统的总流量产生约束。例如,一个大型系统是处理事务的最后仓储,但是它对于多个输入源来说处理速度太慢了以至于不能接收事务,那么它就会上锁并拒绝接收所有的事务。整体系统的处理速度要么减缓甚至完全停止,有时还会造成整个应用的崩溃。

2.2软件管道规则

2.2.1规则1

输入等于输出。不管处理多少事务,系统不能接受超过它所能处理的事务量。因此在应用程序设计中,应注意如下几项。

确定输入事务的供应是充足的。

识别系统中那个组件或过程处理速率最慢,那么该组件或过程控制了系统的吞吐率,需要对其优化。endprint

识别不能承担负载的外部系统或应用。这些系统或应用会成为瓶颈。

预测并消除系统中的瓶颈点。

2.2.2规则2

下游组建或处理过程的能力(处理事务速率)要等于或超过上有组件或过程的输入速率。如果不是这样,就必须优化下游组件或过程,或者使用软件管道分配器来支持并行处理并控制负载。另一个使用管道分配器的优点是可伸缩性。可以赋予每个管道一个指定的硬件资源;分配器分配事务到每个管道中,每个管道独立且并行地执行各自的事务。因为管道之间完全独立,添加更多的硬件资源也给管道带来了线性或近线性的扩展能力。再进一步考虑,若管道分配器负担过多的管道,最终分配器自身成为系统瓶颈。

3银行ATM系统实例

一家拥有ATM机分布式网络的大型银行,它通过访问集中式的资源来处理账户交易事务。交易量变化很大、响应时间非常关键、关键交易规则必须执行——所有这些使得银行的后段应用使用并行管道成为一个理想的用例。

在ATM应用中每笔交易主要处理流程是1)对用户授权;2)验证交易;3)执行交易过程。

一個典型的ATM应用具有如下关键需求:

它必须能在多处处理大量的用户请求。

它必须阻止每个客户从他的账户透支。

处理事务过程中维持FIFO顺序,防止任何两个用户访问相同的账户并防止透支。

使用软件管道设计满足以上需求的应用。每个输入的消息都包含能够将其进行路由分组的信息,称之为输入关键值信息。分配器使用输入关键值信息为每个事务选择管道。分配器把下面XML格式的输入信息作为接收事务的输入关键值信息。

每当消息到达分配器后,使用文档对象模型(DOM)或其他的解析机制对XML文件进行解析并机率下branch_id。然后分配器按照branch_id降序排列分派事务到管道中去。表1显示了事务分组与管道名称。ATM应用软件管道架构如图2所示。

4小结

软件管道架构是克服并管理构建事务处理时面对处理性能问题挑战的解决方案。它是处理这些问题的一种新方法,可以看作一种能够预测出产量的技术。当前它在计算机科学与事务处理开发中才刚刚兴起,还需要进一步改善它的结构和增加功能。尤其是以下几点:

健壮的管道框架:文中的管道架构只是一个参考架构,在很多方面需要提高,尤其是架构的健壮性方面。

新的路由模式:分配器在分配消息时,采用不同的路由模式会有不同的效果。可以采用轮询模式、基于内容路由模式,还可以扩展到基于事务类型或带优先级的内容路由等等。

动态的管道:与路由模式相似,一个自动解析引擎动态地创建管道并管理每个管道的负载。应用程序可以是包含管道化的服务组合,并根据运行中的工作负载的变化性能自动地调整。

为适应前所未有的需求,事务处理必须提升一个数量级以上的性能。在SOA环境中改进性能更为重要,它比过去的计算架构要求更强的计算能力。今天多核服务器可以达到这种商业性能的要求,但是只有很少的事务处理程序从中获益。本文推荐了一个更加简单、更具有灵活性的方法来进行并行处理,最大化资源利用实现事务处理程序的性能突破。

猜你喜欢

并行计算性能
提供将近80 Gbps的带宽性能 DisplayPort 2.0正式发布
基于自适应线程束的GPU并行粒子群优化算法
云计算中MapReduce分布式并行处理框架的研究与搭建
并行硬件简介
PP—g—GMA的制备及其增容PP/PA6共混物的性能
Al-Se双元置换的基于LGPS的thio-LISICON的制备与性能表征
580 MPa 级热轧高扩孔钢的组织与性能
强韧化PBT/PC共混物的制备与性能
RDX/POLY(BAMO-AMMO)基发射药的热分解与燃烧性能