《云计算中的并行计算技术分析_郑文武.docx》由会员分享,可在线阅读,更多相关《云计算中的并行计算技术分析_郑文武.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要 云计算中的并行计算技术分析 郑文武,李先绪,黄执勤 (中国电信股份有限公司广东研宄院广州 510630) 本文阐述了并行计算和云计算的关系,简要回顾并行计算的历史,分析了并行计算的重要技术 OpenMP、 MPI和 Erlang,研宄了这些技术在中国电信的应用方法,并介绍了中国电信实施云计算、 并行计算的指导思想、原则和策略。 关键词并行计算; OpenMP;MPI; Erlang1 引言 云计算是一个含义丰富的概念,包括了服务、市场、技 术等诸多方面。通常提到的 IaaS、 PaaS和 SaaS,严格地说 是基于服务的术语,并不是对技术的描述。从技术上看,云 计算是对主机、存储、网络资
2、源分配、使用、管理的技术。其 核心是对主机资源分配、使用、管理的技术,主机资源也可 称为计算资源。云计算技术包括两个似乎对立的技术,这 两个技术都是用于对资源进行分配、使用和管理。 一个技术是对资源进行分割, 将资源的分配、使用的 粒度变细,主机的虚拟化就是这样的技术。通过引入虚拟 主机,将物理主机的能力进行分割,使主机计算能力的分 配、使用不是基于单台物理主机,而是基于细分的虚拟主 机。简单地说,虚拟化技术就是对资源进行拆分的技术 t 另一个技术是利用多个物理主机的能力完成一个任 务。分布式并行计算就是这样的技术。分布式并行计算将 任务分解为多个子任务分派给主机集群中的各个主机,子 任务在多
3、个主机上协调并行运行 简单地说,分布式并行计算技术就是对资源进行聚合的技术。事实上,分布式并 行计算才更加体现出云计算的本 质。云计算的名称和分布 式并行计算、网格计算是一脉相承的。不过,分布式并行计 算应该只是并行计算的一种,从下文的分析可以看出,对 于云计算除了分布式并行计算这个主要的并行模式外,还 有其他的并行模式。本文不仅分析分布式并行计算,还分 析了非分布式的并行计算。 2并行计算的历史 并行计算出现在 20世纪 60年代初期,这个时期晶体 管以及磁芯存储器开始出现,处理单元变得越来越小,存 储器也更加小巧和廉价。这些技术的发展结果导致并行计 算机的出现,这一时期的并行计算机大多是规
4、模不大的共 享存储多处理器系统,即所谓大型主机 s IBM 360是这一 时期的典型代表。 长久以来,并行计算在高性能计算领域发展得如火如 荼,并行计算的体系结构也在不断地变化 9并行计算所依 赖的平台称为并行机,并行机由多个节点组成,任务被分 云计算专栏 解到各个节点,在各个节点并行运行。早期的并行节点,并 不是互相完全独立的主机,更像 1台主机的各个模块 到 了 20世纪 90年代,随着网络设备的发展以及 MPI/PVM等 并行编程标准的发布,集群架构的并行计算机开始出现。此 时的并 行计算硬件平台的节点就是彼此独立的主机了。 现代的并行机体系结构有对称多处理共享存储并行 机 (symme
5、tric multiprocesser, SMP)、分布共享存储 (distributed shared memory,DSM)并行机、大规模并行机 ( massively parallel processor, MPP )、并行向量多处理机( parallel vector processor, PVP)。所有这些体系结构的并行机都是咼咼在 上位于 “ 云 ” 端的,但和云计算没有直接的关系。所幸的 是,另外一种体系结构的并 行机出现了,这就是工作站 (PC)机群 ( cluster of workstation (beowulf PC-cluster), COW)。 PC机群的诞生背景是微
6、处理器性能和网络带宽的飞 速发展。 PC机群的诞生中止了并行计算和并行机的贵族 身份,让并行飞入到 “ 寻常百姓家 ” 。 PC机群的性能绝不容 轻视,如早期 128台 Pentium 3 800 MHz处理器的 PC通过 6个 24端口 100 Mbit/s的交换机互联,其浮点峰值性能达 到 1 000亿,当时的成本不过 200万亿元人民币,性价比 比当时最好的大型主机并行机还要高 30倍。 PC机群为云计算的诞生奠定了基础 Google的云计 算就是在 PC机群的基础上发展起来的。 Google的机群由 遍布全球的 PC通过广域网连接而成。 3并行计算概述 并行计算的实现层次有两个 Q 单
7、机(单个节点)内部的多个 CPU、 多个核并行计 算,虽然单节点内部的并行计算不是实施云计算的 主流,但由于目前多 CPU、 多核已经成为主机提高 性能的一个非常重要的方面 集群内部节点间的并行计算。对于云计算来说,更 加强调的是集群节点间的并行。目前,集群中的节 点一般是通 过 IP网络连接,在带宽足够的前提下, 各节点不受地域、空间限制。所以,云计算中的并行 计算在很多时候被称作分布式并行计算。不过,多 CPU、 多核是主机的发展趋势,所以在一个集群内, 一般 2个级别的并行都要求存在,集群内多节点之 间并行,节点内部多处理器、多核并行。节点间的并 行计算,通常就等同于常说的分布式并行计算
8、 云计算专栏 和虚拟化成熟的产品不同,并行计算没有成熟的产 品,只有相对成熟的工具。并行计算的实现,依赖于开发者 和用户对业务的熟悉,对并行工具正确、熟练的使用。 并行应用软件从需求分析到设计再到部署,可 以分为 3个步骤。 (1) 在需求分析阶段,根据业务特点,将任务尽可能地 分为可以并行执行的多个任务。这是实现并行计算最基础 的、往往也是最有效的阶段。 (2) 在设计、编码阶段,采用并行工具进行程序设计。 这个阶段所应用的并行技术是最核心的并行技术,难度最 大,技术也不成熟,而且目前大部分技术人员对这个阶段 所应用的技术还没有足够程度的掌握。 (3) 在应用部署阶段,采用并行部署架构和工具
9、部署 应用。这个阶段就是通过部署,使应用所占用的设备能够 实现负载均衡。负载均衡本质上也属于并行计算。常用的 方法为采用负载均衡设备,如 F5交换机、 ESB等。这个阶 段所涉及的技术比较成熟,已为业界广泛采用。 第二阶段的并行计算就是狭义的并行计算,本文主要 分析这个阶段的并行计算技术 这个阶段的并行计算技 术,就是并行程序设计的技术 9 4并行计算编程模型分析 并行计算编程模型一直是并行计算研宄领域中的重 点内容 ,它和并行计算机体系结构紧密相关。共享存储体 系结构下的并行编程模型主要是共享变量编程模型,它具 有单地址空间、编程容易、可移植性差等特点,其实现有 OpenMP和 P0SIX等
10、。分布式存储体系结构下的并行编程 模型主要有消息传递编程模型和分布式共享编程模型两 种。消息传递编程模型的特点是多地址空间、编程困难、可 移植性好,其实现有 MPI、 PVM等;分布式共享编程模型 是指有硬件或软件的支持,在分布式体系结构下实现的具 有共享变量编程模型特点的编程模型。后者可以按照硬件 或软件的实现分为 DSM和 SVM, 其实现有 TreadMark和 JiaJia等,目前研宄热点的分割全局地址空间 (PGAS)模型 的研究有 UPC等代表,具有很强的发展潜力。 并行计算编程模型一般包括两类:一类是在原有串行 编程语言基础上,引入并行控制 机制,提供并行 API、运行 库或者并
11、行编译指令,这类模型包括 OpenMP、 MPI以及大 家广为熟悉的 MapReduce;另一类则是并行编程语言,其 语言本身就是基于并行算法的,相对影响比较大的主要有 电信科学 2011年第 12期 Erlang 前面说过,并行计算的实现有两个层次,一个是集群节 点间的并行,另一个节点内的并行 。 OpenMP 般用于实现 节点内并行 , MPI 般用于实现节点间的并行 ;而 Erlang既 可以实现节点间的并行,也可以实现节点内的并行。 对于大家已经比较熟悉的 MapReduce,本文就不再做 分析。本文重点 分析 OpenMP、 MPI和 Erlang这 3个并行计 算编程技术。 . 4
12、.1 OpenMP 目前从 x86到小型机,多核是 CPU的主流,对于单线 程 (single thread)的程序,多核的处理器并没有办法提升它 的处理效能;对于多线程 (multi thread)的程序,就可以通 过不同的核同时计算来达到提高性能的目的 9当然,多线 程程序的执行性能依赖于对任务的分解。多线程程序的编 写、维护,比单线程的程序要复杂不少。一般而言,采用了 多线程编程技术,只要主机是多处理器、多核或者拥有同 时执行多个线程的能力,那么多线程程序的执行性能还是 远远高于单线程的 a 传统的多线程程序编写一般有两种方法: 通过调用操作系统功能、开发工具自己的多线程控 制语句或控制
13、函数来实现; 采用 P0SIX标准和方法,利用 P0SIX的线程控制 库函数来实现 这些方法都是通过主 thread去产生多个 thread,由主 要的 thread把工作拆开,分给各 thread去运算,最后再由 主 thread回收、整合结果。使用这两种方法存在以下问题。 程序的开发复杂性较单线程程序增加很多。 第一种方法的移植性还存在问题。 若要具有好的扩展性,则更加复杂 B多线程应该不 只是创建固定数量的线程,而应该随着 CPU核数 的増加而増加线程。如果用上述方法,虽然可以实 现良好的扩展性,但控制十分复杂 多线程对多核处理器的负载均衡调度需要开发者 自己实现,十分复杂。 使用 Op
14、enMP则解决了上述问题 OpenMP是多线程的一种编程方法,它的并行粒度是 线程级别的。它的适用范围是单机内的并行计算,可以很 好地利用单机内多 CPU或者多核。 OpenMP就是一套API 和运行库,可以简化单机内的多线程开发,让设计人员和 开发人员的主要精力集中到对任务的理解和拆分上,而具云计算专栏 体的细节交给 OpenMP去完成,用 OpenMP的编程效率要 远远高于使用一般函数库或者操作系统自带函数库的多 线程编程,也大大优于 P0SIX标准和方法。 OpenMP是作 为共享存储标准而问世的。它是为在多处理机上编写并行 程序而设计的一个应用编程接口,包括一套编译指导语句 和一个用来
15、支持它的函数库。 OpenMP能通过伪指令,很简单地将程序多线程化。 最简单的情形,甚至可以只加一行指导编译程序的编译伪 指令,就可以将循环内的语句并行处理了。 OpenMP起 源于 C/C+,但目前已经有 OpenMP的Java 开发包,使其可以用于 Java编程。 4.2 MPI OpenMP虽然很优秀,但只是单机内的并行计算技术。 无论是并行计算还是云计算,其并行计算的主流是主机之 间的并行而弁非单机内的并行。因此 , MPI (message passing interface)才是并行计算的代表性技术。 1994年 5月 1.0版的 MPI标准诞生,该标准提出了一 种基于消息传递的函
16、数接口描述。目前, MPI已发展到 2.0 版,成为高性能计算的一种公认标准。 MPI本身并不是一 个具体的实 现,而只是一种标准描述。 MPI最为著名且被 广泛使用的一个具体实现是由美国 Argoone国家实验室 (argonne national laboratory)开发小组完成的 MPICH, MPICH是一个免费软件,它提供对 Fortran和 C语言等的绑 定支持,以函数库的形式提供给开发者使用。 采用 MPI在程序设计上有较大的自由度,甚至可以用 它实现 Hadoop中的 MapReduce功能。 消息传递方式是广泛应用于并行机的一种模式,特别 是分布存储并行机。 10多年来,这
17、种模式在重要的计算应 用中已取得了实质进步 在设计 MPI时,目标不是选择采用现存消息传递系统 中的某一个,而是充分利用这些系统的最抽象特点。 建立消息传递标准的主要优点是可移植性和易于使 用。以低级消息传递程序为基础的较高级和(或 )抽象程序 所构成的分布存储通信环境中,标准化的效益特别明显。 消息传递标准的定义能提供给生产商清晰定义的程序库, 以便他们能有效地实现这些库或在某些情况下为库程序 提供硬件支持,因此加强了可扩展性。 简单地说, MPI是为编写消息传递程序而开发的广泛 使用的标准。像这个接口一样,应为消息传递建立一个实 际的、可移植的、有效的和灵活的标准。全部目标如下: 电信科学
18、 2011年第 12期 设计一个应用编程接口(不必为编译器或系统实 现库 ); 允许有效的通信,避免存储器到存储器的拷贝,而 允许计算和通信的重叠,尽可能给通信协同处理器 卸载; 对于接口,允许方便的 C语言和 Fortran 77联接; 设定一个可靠的通信接口,用户不必处理通信失 败,这些失败由基本的通信子系统处理; 定义一个接口,提供更大灵活性的扩展; 定义一个接口,它能在基本的通信和系统软件无重 大改变时,在许多生产商的平台上实现,接口的语 义是独立于语言的; 接口应设计成允许线索 -安全丨 thread-safety)。 MPI的一个非常大的优势是大范围的可移植性,在标 准 Unix处
19、理器间通信协议的上层实现的 MPI将给工作 站群机系统和不同种类的工作站网络提供可移植性。 这个标准包括点对点通信、集合操作、进程组、通信上 下文、进程拓扑结构、与 Fortran 77和 C语言绑定、环境管 理和查询、描述接口。 4.3 Erlang Erlang首先是一种类似于函数的编程语言,这种语言 天生就是为并行计算而设计的: 本来这种比 Java还古老 的语言 ,一 直无人问津,但是主机的多处理器、多核的发展 趋势,特别是云计算的兴起,给 Erlang又带来了生机。 业界对于并行计算的探索一直没有停止,尤其是云计 算的发展促进了并行计算各种方法、模式的发展,如 Java 的 Conc
20、urrency 库、 Intel 推出的 Threading Building Blocks 库、微软为 Robotics Studio提供的 CCR库等。但这些措施 只是为先天串行的程序设计语言提供了后天的并行能力, 属于亡羊补牢。而 Erlang则是先天并行的,在单台主机上, 利用多处理器和多核的优 势, Erlang将传统编程方法远远 甩在后面。据说使用 Erlang编写的 Yaws Web服务器,其 并发性能是使用 C编程的 apache的 15倍!根据实测, apache在并发 4 000连接时就已经崩溃,而 Yaws Web服 务器可实现并发 8万连接。 Erlang不仅是程序设计
21、语言,还是包括一个类似于 Java的虚拟机在内的一个完整的平台。通过虚拟机,Erlang 独立于硬件平台和操作系统,在这个平台上实现了网络通 信、内存管理、进程调度、并发机制和分布式计算等功能 Erlang最初是由爱立信专门为通信应用 设计的,因此 云计算专栏 非常适合于构建分布式、实时软并行计算系统。 Erlang具有以下特点。 (1) 并发性 Erlang的轻量级进程可以支持极高的并发性,而且在 高并发的情况下内存使用相当少。 Erlang的并发性并不会 受到宿主操作系统并发性的限制。 (2) 分布式 最开始 Erlang的设计目标就是实现分布式环境, Erlang的一个虚拟机就是 Erl
22、ang网络上的一个节点。一个 Erlang节点可以在另一个 Erlang节点上创建自己的并发 进程,而子进程所在的节点可能是运行其他操作系统的服 务器。不同节点之间可以进行极为高效而又精确的通信, 就像这些通信运行在同一个节点一样。 (3) 健壮性 Erlang内部建设有多种错误检测原语,可以通过这些 原语来架设高容错性的系统。在分布式状态下,可以把系 统配置成具有 Fail-over功能的分布式系统。当有其他节点 出错的时候,系统会把它的运行场景自动快速地切换到备 份节点上。 Erlang支持 9个 9级别的故障率 ,一年只有几 分钟的故障时间。 (4) 软实时 它可以提供毫秒级别的响应。
23、(5) 热代码升级 对于不能中断运行的系统, Erlang允许程序代 码在 运行系统中被修改。旧代码被逐步淘汰后能被新代码 替换。在此过渡期间,新旧代码是共存的 这也使得安 装 bug补丁在运行系统上升级而不干扰系统操作成为 了可能。 (6) 递増式代码装载 用户能够控制代码被装载的细节。在嵌入式系统中, 所有代码通常是在启动时就被完全装载。在开发系统中, 代码是按需装载的,甚至在系统运行时被装载的。如果测 试到了未覆盖的 bug,那么需替换有 bug的代码。 (7) 外部接口 Erlang进程与外部世界之间的通信使用和在 Erlang 进程之间通信相同的消息传送机制。这种机制被用于 和操 作
24、系统通信、与其他语言编写的程序交互。 使用 Erlang编写出的应用程序运行时通常由成千上 万个轻量级进程组成,并通过消息传递相互通信。进程间 上下文切换对于 Erlang来说仅仅只是一两个环节,比起 C电信科学 2011年第 12期 程序的线程切换要高效得多了。 使用 Erlang来编写分布式应用要简单得多,因为它的 分布式机制是透明的,对于程序来说并不知道自己是在分 布式运行 , Erlang运行时的环境是一个虚拟机,有点像 Java虚拟 机,这样代码一经编译,同样可以随处运行。它运行时的系 统甚至允许代码在不被中断的情况下更新。另外,如果需 要更高效的话,字节代码也可以编译成本地代码运行
25、 9 Erlang能够创建和管理大量的进程(不是操作系统级 别的)。那些进程在不同的操作系统上有同样的行为,可以 被垃圾回收,对运行地点透明 ( location transparent ),不会 破坏其他进程的运行。任意两个进程间完全独立,不共享 任何状态,一切交流通过消息来传递,当然也就无需上锁。 这样的设计思想造就了适合解决如下问题的 Erlang。 (1) 系统高度并发 Erlang具有优秀的并行性能,特别适合高度并发操作。 (2) 实时处理 在并行情况下, Erlang响应迅速,性能优良。 (3) 计算高度分布 Erlang适合集群节点间的并行,也就是基于网络的分 布式并行 , (4
26、) 系统要求高度可靠 每年的脱机时间以分钟算,甚至永不宕机。 (5) 可靠性高 Erlang内容的检测原语,极大地提高了系统的容错 性,进而提高了系统的可靠性。 (6) 系统要求持续在线更新 对于经常需要更新、升级的系统, Erlang能够在线更 新,无需中断系统运行,新旧代码可以同时运行 9 可以看出, Erlang非常适合于电信领域的应用,只是 它是个小众产品和方案,熟悉它的人太少。其实,应该高度 重视 Erlang,并进行深入研宄,根据研宄结果引入到支撑 系统的开发当中。 5 云 计 算 及 并 行 计 算 在 中 国 电 信 的 应 用 和研究 5.1中国电信丨 T支撑系统实施云计算的
27、指导思想、目标 和策略 随着云计算不断向广度和深度发展,中国电信对于云 计算的探索和研宄投入很大,但在应用上比较谨慎。 云计算专栏 5.1.1云计算实施指导思想 按照中国电信企业信息化战略规划的要求,根据其内 部 IT支撑系统的特点,密切跟踪云计算技术的演进趋势, 充分利用云计算技术带来的优势,积极、务实、稳妥地探索 企业内部 MB0SS云计算技术的应用;有效降低 IT系统总 体拥有成本,同时规避云计算应用过程中存在的各种风 险,保证 MB0SS稳定、可靠、安全运营,确保有效支撑企业 业务经营、网络运营和内部管理的各项需求。 5.1.2计算实施目标 (1) 降低 IT系统总体拥有成本 (TC0
28、) 重点基于 PC服务器构建 IaaS云计算平台,实现多应 用基于 IaaS平台的共享部署,提高基础设施资源利用率, 降低硬件成本占比,实现 IT投资结构的优化及 IT总体拥 有成本的降低,并做到系统的稳定、可靠运行。 (2) 更快、更好地满足业务需要 在云计算适用的应用范围内,积极推进云计算的实 施,利用 IaaS云计算平台能根据业务需要快速分配资源 并能够弹性扩展的特点,实现应用快速部署及处理资源动 态伸缩,更好地满足业务需要。 (3) 提升云计算平台的管理和运营能力 积极推进云计算应用的同时,加强云计算平台管理系 统建设,提高平台的自动化配置及管理能力,加强 IT人员 云计算技术培训,提
29、高云计算平台管理及运营能力。 目前的指导思想是云计算在技术上分为两类:一类为 以虚拟化为代表的资源分割技术,另一类则为以并行计算 为代表的资源聚合技术。 5.1.3 IT支撑云实施策略 IT支撑系统的云计算实施是中国电信整个云计算实 施的一个非常重要的组成部分。中国电信 IT支撑云的实 施核心在于提高支撑系统的运行效率,提高运行的可靠 性,降低系统的运行成本。随着电信用户数量的不断攀升、 业务种类迅速增加、业务规模不断扩大,支撑系统软件的 规模和复杂性也在快速増加,超过了硬件性能的提升速 度,用于购置、维护硬件的费用也在不断増加。 实施基于集群架构的并行计算,则是满足 IT支撑云 核心需求的基
30、本策略。原因如下: 实施并行计算的集群总体性能,其性能提升可以随 集群节点的増加而近似线性提升,目前业界的集群 节点已经达到数千个,集群的总体性能远远超过单 台高性能主机; 电信科学 2011年第 12期 集群内节点互相冗余,整个集群的可靠性远远超过 单台主机; 集群的节点可以采用廉价主机,未来的方向是使用 x86主机集群代替高性能 Unix主机。 5.2并行计算应用现状 电信支撑系统大多属于高负载应用,这些长期以来需 要运行在高性能的小型机上。近年来,逐渐引入并行计算 已摆脱对高性能小型机的依赖,解决了硬件成本过高、性 能提升有限的问题,主要包括以下两类。 (1) 对数据库进行分库是实现数据
31、的分布存储和并行 操作 对于计费、账务这类海量数据的存储和操作规模比较 大的省公司,一般是根据地域对数据进行分割,不同地域 的数据存放到不同的位置,由不同的节点处理。这种并行 比较原始,各节点之间耦合度很小,不需要复杂的协同。其 优点是对应用无需进行改变即可利用多节点的优势。但并 行度较低,资源利用率不高。 (2) 利用负载均衡工具实现并行计算 对于应用层面,目前已经较普遍地利用负载均衡工具 实现一定程度的并行计算。 4层交换机是较为常见的工 具,此外还有中间件服务器的负载均衡功能也得到较为普 遍的应用 近几年,企业服务总线 (ESB)也逐步被引入。 除此以外,近年也在开发阶段引入并行计算。在
32、 CRM 中部分采用 SOA架构,模块可以由 ESB等工具进行调度, 实现一定程度的并行。 5.3并行计算研究 中国电信 MBOSS系统的支撑云建设重点在于并行计 算。支撑系统云计算的实施主要不是对资源进行分割,而 是对资源进行聚合。因为支撑系统大都属于 “ 重型 ” 应用, 占用计算和存储资源较多 ,一 般单节点资源已经难以满足 需求,再对单节点实施分割意义不大。 对于电信应用的并行化,首先需要对应用特点进行分 类,根据不同的特点采用不同的并行策略。并行策略,也要 充分考虑到当前的运行状况,在可靠性、成本等限制条件 下,逐步实施。其中,可靠性是需要特别注意的 对电信应用的划分,可以有多个维度
33、。这里根据计算 量、并发性和数据量的大小属性进行分类。 具体说,这 3个 属性为任务执行时间、任务的并发量、单个任务输入(即 处理)的数据量。可以只对每个特点分为 2个等级:大和 小,至于介于大和小之间的,则呈不典型特征,可以根据偏大还是偏小而决定,具体有待进一步研宄。目前,对属 性值大小的判断,主要还是定性的判断,定量的判断有 待进一步深入研宄。下面对属性值的分类进行示例,仅 供参考。 应用 3个特点的 2个等级,可以有 8个组合,但有些 组合在实际中不可能存在,或者在电信行业不存在。具体 见表 1。 根据上面的分析,在电信的实际应用场景中,需要实 施并行计算的有以下 2类应用: 大任务小并
34、发大数据; 小任务大并发小数据。 下面针对具备这两个典型特点的应用,探讨并行化 策略。 5.3.1大任务小并发大数据 这类应用一般为批处理应用。这类应用可以按功能 耦合度和数据耦合度划分。功能耦合度指的是模块之间 的功能耦合度,数据耦合度指的是各部分数据之间的耦 合度。每个维度取 “ 强 ” 和 “ 弱 ”2 个值,则有表 2所列 4个 组合。 需要指出的是,就总体而言,电信应用属于数据密集 型应用,在应用逻辑上并不十分复杂。 (1)现状 目前,这类应用也做了不少集群部署,能够进行一定 程度的负载均衡。其方法如下 :是多实力部署,每台服务器 上部署相同的应用,服务器环境配置也大致相同,实现方
35、法不对应用逻辑进行分割,只是做多实例部署,对数据进 行静态分割,具体如以下 2个分布式实现方法。 服务器在负载均衡器调度下形成集群,达到负载 均衡 , 表 1 电信应用的划分 任务 并发 单任务数据量实际存在状态 大 大 大 不存在,因为大任务不可能是大 并发的 大 大 小 不存在,原因同上 大 小 大 存在,如计费 、 EDW 大 小 小 不存在,在其他行业存在,主要是 对小规模数据的复杂处理,但电 信应用不存在 小 大 大 不存在,小任务不可能处理大数据 小 大 小 存在,如 Web服务器 小 小 大 不存在,小任务不可能处理大数据 小 小 小 实际可能存在,但改进意义不大 云计算专栏 对
36、数据进行分片,片与片之间数据基本没有关联, 不同的实例处理不同片的数据。这种情况下,只是 实施了负载分担,没有形成一个统一的集群,因为 实例之间没有任何关系,也没有统一的管理平台进 行管理,不能达到真正的负载均衡。 (2)并行化策略 应用并行化的策略,首先是总体架构实施 SOA, 对于 大任务的应用更是如此。在功能上拆分的方法常常是根据 任务处理的流程,将相对独立的流程处理模块独立出来, 进行解耦、封装 9 不过,电信处理逻辑属于商业处理逻辑,总体来说并 不复杂,从逻辑功能上对应用进行拆分,由于这些逻辑大 多是流程性的,即使经过解耦,在技术上可以实施并行,但 由于其对应的实际业务是流程性的,执
37、行必须有先后顺 序,所以事实上这些服务只能是分布式部署,并不一定能 并行执行 但是,这类应用数据量的特点提供了根据数据对应用 进行拆分的可能性。从前面的现状分析可以看出,目前事 实上的分布式多实例部署,很多就是根据数据进行的。电 信数据有一个很重要的特点,就是数据的地域独立性,同 一个业务,不同地区的数据是彼此独立的。如计费数据,广 州的数据和珠海的数据是彼此独立的,虽然广州的计费应 用和珠海的计费应用是相同的。对同一个本地网来说,不 同区的数据也是彼此独立的,如广州花都区的计费数据和 广州番禺区的计费数据是彼此独立的。根据这个特点,就 可以进行任务拆分,实施集群并行计算。可以选择的 方法 有
38、MPI和 MapReduce,但是 MapReduce方法目前的实现是 基于 Hadoop的开源,并非是 Google公开的其本身所采用 的,所以其具体效果有待验证,目前中国移动已经使用 MapReduce进行了较大规模的试验,中国电信股份有限公 司广东研宄院(简称广东电信研宄院)也进行了这方面的 大量研宄和测试,就广东电信研宄院的测试情况来看,基 于 Hadoop的 MapReduce实现,在处 理 大 任 务 大 数 据 方 面效果明显。 MPI的方法经过多年充分的实践,应该可以认 为非常可靠,但是 MPI模式处理失效节点方面需要设计 人员予以更多的关注,因为它本身不能直接处理节点失 效的
39、情况,但由于电信应用逻辑的并发特别复杂,并发 属于计算密集型,所以由应用逻辑实现节点的管理也是 可以接受的。 5.3.2小任务大并发小数据 这类应用一般都是实时在线处理,对相应速度要求很 高。一般应用中的 Web层以及 0CS、 ABM都属于这类。这 类应用有以下特点: 实时性强,用户在线等待任务处理结果,任务处理 时间短暂,响应速度必须快速; 并发性高,短时间内,一般会有大量请求发生; 稳定性高,这也是实时性的要求,如果服 务出现 不稳定 ( 指软件故障而不是硬件故障,硬件故障 有集群保证其可用性),将严重影响应用的响应 速度。 (1) 现状 目前的解决方案也是借助负载均衡器实施集群部署,
40、按照一定的策略,根据请求的特点,将请求发送到集群中 不同的节点进行处理。 (2) 并行化策略 虽然这类任务往往是 Web服务,已经表现为 S0A架 构,但并行化还是首先按照统一标准化的 S0A架构对其 进行封装 ,_,一般而言,这类应用无需再进行拆分,可以将整 个应用封装为统一的、标准的 S0A服务。 在算法上有 2种实现方法 :一种为依然借助负载均衡 设备 实现集群节点间的负载均衡,在节点内部采用 OpenMP实现节点内部的并行运行;另一种为米用 Erlang 实现全面、高效率的并行,集群节点间和节点内部的并行 计算都由 Erlang及其运行环境实现。 (3) 并行化策略总结 根据上面的分析
41、,应用的并行化按照以下两个步骤实 施:对应用实施 S0A服务化封装;根据特点,在算法模式 上按照表 3所列实施。 6 结束语 并行计算和虚拟化一起构成了云计算技术的骨干。对 于大型应用系统实施云计算的主要内容就是实施并行计 算。并行计算技术除了目前炙手可热的 MapReduce以外, 表 2功能耦合度和数据耦合度组合 功能耦合度 数据耦合度 强 强 强 弱 弱 强 弱 弱 电信科学 2011年第 12期 表 3并行化策略算法模式 序号 并发 功能耦合度 数据耦合度 并行化策略 1 大 X X 采用 Erlang进行重新设计和编码 2 小 强 强 借助 S0A总线和集群数据库 3 小 强 弱 数
42、据分布式存储,采用 MPI+OpenMP或者 MapReduce实现集群 4 小 弱 强 对应用进行拆分,形成较小粒度的服务 5 小 弱 弱 先按照第 3种情况并行化,再按照第 4种情况并行化 值得推荐的还有 OpenMP、 MPI和 Erlang。 这 3个技术 主要应用于并行程序的开发,和其他并行策略(如 SOA) 起,用于从根本上实现应用的并行化。中国电 信在支撑云的研宄、建设中,计划在多个层面实施并行 计算,以提高应用运行效率和可靠性,降低采购和运营 成本 对于条件成熟的应用,拟从业务并行开始,在开 发层面即实现并行计算。目前,经过研宄分析和测试, 针对不同的应用,初步制定出不同的并行
43、化解决方案, 采用合适的并行计算技术实现不同层次的并行计算。 参考文献 1中国电信股份有限公司广东研究院 .IT支撑云技术和建设研 宄报告 , 2011 2 Joe Armstrong. Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf, 2007 3 施岩 .云计算研宄及 Hadoop应用程序的开发与测试 .北京邮电 大学硕士学位论文 , 2008 4 宋伟 .关联规则并行算法的研宄与分析 .郑州大学硕士学位论 文 ,2011 5邱涌 .并行归并排序算法及其在 PC集群中的实现 .郑州大学 硕士学
44、位论文 , 2004 6 顾宏军 .走近 Erlang 世界 .http:/tech.itl68.eom/j/2008-01-30/ 200801301830516.shtml,2004 7 李俊照 ,罗家融 .基于 Linux集群的并行计算 .计算机测量与控 制, 2004(11) 8李秀芳 .基于多核的多线程算法并行优化 .郑州大学硕士学位 论文 ,2008 9单莹 .科学计算程序的综合优化技术研究 .国防科学技术大学 硕士学位论文 , 2005Technolical Analysis of Parallel Computing in Cloud Computing Zheng Wenwu
45、, Li Xianxu, Huang Zhiqin (Guangdong Research Institute of China Telecom Co., Ltd., Guangzhou 510630, China) Abstract This article described the relationship between parallel computing and cloud computing, brief review of the history of parallel computing.lt analyze云计算专栏 d the important technologies
46、 of parallel computing, OpenMP, MPI and Erlang, researched the apply methods of these technlogies in China Telecom, and introduced the guidelines, principals and strategies of implementing cloud computing, parallel computing in China Telecom. Key words parallel computing, openMP, MPI, Erlang (收稿日期 : 2011-ll-25)