分布式计算、云计算与大数据(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 分布式计算模式

随着互联网与移动互联网应用的快速发展,出现了很多新的分布式计算模式与范型,如云计算、雾计算、大数据计算等。这些新型计算模式或新技术本质上是分布式计算的发展和延伸。与分布式计算相关的计算模式有很多,下面讨论单机计算、并行计算、网络计算、对等计算、集群计算、网格计算、云计算、雾计算、边缘计算、移动边缘计算、移动云计算和大数据计算等,以便大家更好地理解和区分各种分布式计算模式。

1.2.1 单机计算

与分布式计算相对应的是单机计算,或称集中式计算。在单机计算模式下,计算机不与任何网络互连,因而只使用本计算机系统内可被即时访问的所有资源。在最基本的单机计算模式中,一台计算机在任何时刻只能被一个用户使用。用户在该系统上执行应用程序,不能访问其他计算机上的任何资源。在PC上使用文字处理程序或电子表格处理程序时,应用的就是这种被称为单用户单机计算的计算模式。

多用户也可参与单机计算。在该计算模式中,并发用户可通过分时技术共享单台计算机中的资源,我们称这种计算方式为集中式计算。通常将提供集中式资源服务的计算机称为大型机(mainframe)。用户可通过终端设备与大型机系统相连,并在终端会话期间与之交互。

如图1-1所示,与集中式计算模式不同,分布式计算包括在通过网络互连的多台计算机上执行的计算,每台计算机都有自己的处理器及其他资源。用户可以通过工作站完全使用与其互连的计算机上的资源。此外,通过与本地计算机及远程计算机交互,用户可访问远程计算机上的资源。WWW是该类计算的最佳例子。当通过浏览器访问某个Web站点时,一个诸如IE的程序将在本地系统运行并与运行于远程系统中的某个程序(即Web服务器)交互,从而获取驻留于另一个远程系统中的文件。

图1-1 集中式计算与分布式计算

1.2.2 并行计算

并行计算(parallel computing)或称并行运算是相对于串行计算的概念(如图1-2所示),最早出现于20世纪六七十年代,是指在并行计算机上所做的计算,即采用多个处理器来执行单个指令。并行计算通常同时使用多种计算资源解决计算问题,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干部分,各个部分均由一个独立的处理机来计算。

并行计算可分为时间上的并行计算和空间上的并行计算。时间上的并行计算是指流水线技术,而空间上的并行计算则是指用多个处理器并发地执行计算。传统意义上的并行计算与分布式计算的区别是:分布式计算强调任务的分布执行,而并行计算强调任务的并发执行。特别要注意的是,随着互联网技术的发展,越来越多的应用利用网络实现并行计算,这种基于网络的并行计算实际上也属于分布式计算的一种模式。

图1-2 串行计算与并行计算

1.2.3 网络计算

首先介绍“计算”的概念。“计算”这个词在不同的时代有不同的内涵,一般人们都会想到最熟悉的数学和数值计算。自计算机技术诞生以来,人类就进入了“计算机计算时代”。随着技术的进一步发展,网络宽带迅速增长,人们开始进入“网络计算时代”。

网络计算(network computing)是一个比较宽泛的概念,随着计算机网络的出现而出现,并且随着网络技术的发展,在不同的时代有不同的内涵。例如,网络计算有时是指分布式计算,有时是指云计算或其他新型计算方式。总之,网络计算的核心思想是把网络连接的各种自治资源和系统组合起来,以实现资源共享、协同工作和联合计算,为各种用户提供基于网络的各类综合性服务。网络计算在很多学科领域发挥了巨大作用,改变了人们的生活方式。

1.2.4 对等计算

对等计算又称为peer-to-peer计算,简称为P2P计算。对等计算源于P2P网络,P2P网络是无中心服务器,是依赖用户群交换的互联网体系。与客户机-服务器结构的系统不同,在P2P网络中,每个用户端既是节点,又有服务器的功能,任何一个节点都无法直接找到其他节点,必须依靠其用户群进行信息交流。

与传统的客户机-服务器模式不同,对等计算的体系结构让传统意义上作为客户机的各台计算机直接互相通信,而这些计算机实际上同时扮演着服务器和客户机的角色。因此,对等计算模式可以有效减少传统服务器的压力,使这些服务器可以更加有效地执行其专属任务。例如,利用对等计算模式的分布式计算技术,我们有可能将网络上成千上万的计算机连接在一起,使其共同完成极其复杂的计算。将成千上万台PC和工作站集结在一起所能达到的计算能力是非常可观的,这些计算机形成的“虚拟超级计算机”能达到的运算能力甚至是现有的单个大型超级计算机无法达到的。

1.2.5 集群计算

集群计算(cluster computing)是指计算机集群将一组松散集成的计算机软件或硬件连接起来,使其高度紧密地协作完成计算工作。在某种意义上,它们可以被看作一台计算机。集群系统中的单个计算机通常被称为节点,通过局域网连接,也有其他可能的连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下,集群计算机的性价比比单个计算机(比如工作站或超级计算机)的性价比要高得多。

根据组成集群系统的计算机之间的体系结构是否相同,可将集群分为同构集群与异构集群。集群计算机按功能和结构可以分为高可用性集群(high-availability cluster)、负载均衡集群(load balancing cluster)、高性能计算集群(high-performance cluster)。集群计算与网格计算有以下区别:网格本质上就是动态的,资源则可以动态出现,可以根据需要将资源添加到网格中或从网格中删除资源,而且网格的资源可以分布在本地网、城域网或广域网上;而集群计算中包含的处理器和资源的数量通常都是静态的。

1.2.6 网格计算

网格计算(grid computing)是指利用互联网把地理上广泛分布的各种资源(计算、存储、带宽、软件、数据、信息、知识等)连成一个逻辑整体,就像一台超级计算机,为用户提供一体化信息和应用服务(计算、存储、访问等)。网格计算强调资源共享,任何节点都可以请求使用其他节点的资源,任何节点都需要贡献一定资源给其他节点。

具体来说,网格计算是伴随着互联网技术而迅速发展起来的,它将地理上分布的计算资源(包括数据库、贵重仪器等各种资源)充分运用起来,协同解决复杂的大规模问题,特别是解决仅靠本地资源无法解决的复杂问题,是专门针对复杂科学计算的新型计算模式。如图1-3所示,这种计算模式利用互联网把分散在不同地理位置的计算机组织成一个“虚拟的超级计算机”,其中每一台参与计算的计算机就是一个“节点”,而整个计算机是由成千上万个“节点”组成的“一张网格”,所以这种计算方式叫作网格计算。这样组织起来的“虚拟的超级计算机”有两个优势,一是数据处理能力超强,二是能充分利用网络的闲置处理能力。简单地讲,网格是把整个网络整合成一台巨大的超级计算机,实现计算资源、存储资源、数据资源、信息资源、知识资源、专家资源的全面共享。

图1-3 网格计算模式

1.2.7 云计算

云计算(cloud computing)的概念最早由Google公司提出。如图1-4所示。这个概念包含两层含义,一是商业层面,即以“云”的方式提供服务,二是技术层面,即各种客户端的“计算”都由网络负责完成。通过把云和计算相结合,Google在商业模式和计算架构上展现了与传统的软件和硬件公司的不同。

图1-4 云计算概念示意图

目前,人们对于云计算的认识在不断发展变化,对于云计算仍没有普遍一致的定义。通常,云计算是指由分布式计算、集群计算、网格计算、并行计算、效用计算等传统计算机和网络技术融合而形成的一种商业计算模型。从技术上看,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机和其他设备。当前,云计算的主要形式包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。

1.2.8 雾计算

雾计算(fog computing)这个词在2011年由美国哥伦比亚大学的斯特尔佛教授首先提及,他当时的目的是利用“雾”来阻挡黑客入侵。雾计算是思科公司(Cisco)在2014年的Cisco Live 2014会议上首次提出的概念,是云计算的延伸,这个架构可以将计算需求分层次、分区域处理,以化解可能出现的网络塞车现象。

雾计算是一种分布式的计算模型,作为云数据中心和物联网(IoT)设备/传感器之间的中间层,提供计算、网络和存储设备,让基于云的服务离物联网设备和传感器更近(如图1-5所示)。雾计算的名字源自“雾比云更贴近地面(数据产生的地方)”。雾计算是使用一个或多个终端用户或用户边缘设备,以分布式协作架构进行大量数据的存储(不是将数据集中存储在云数据中心)、通信(不是通过互联网骨干路由)、控制、配置、测试和管理的一种计算体系结构。

图1-5 雾计算概念示意图

雾计算环境由传统的网络组件(例如路由器、开关、机顶盒、代理服务器、基站等)构成,可以安装在离物联网终端设备和传感器较近的地方。这些组件可以提供不同的计算、存储、网络功能,支持服务应用的执行。思科、ARM、戴尔、英特尔、微软和普林斯顿大学边缘实验室等于2015年11月19日成立了目前唯一的雾计算组织——OpenFog联盟,创建了雾计算标准——OpenFog,以实现物联网(IoT)、5G和人工智能(AI)应用的数据密集型需求,促进雾计算的发展。

1.2.9 边缘计算

云计算大多采用集中式管理的方法,使云服务创造出较高的经济效益。在万物互联的背景下,应用服务需要低延时、高可靠性以及数据安全,而传统云计算无法满足这些需求。当前,线性增长的集中式云计算能力已无法匹配爆炸式增长的海量边缘数据,基于云计算模型的单一计算资源已不能满足大数据处理的实时性、安全性和低能耗等需求。在现有以云计算模型为核心的集中式大数据处理的基础上,需要以边缘计算模型为核心,面向海量边缘数据的边缘式大数据处理技术,二者相辅相成,应用于云中心和边缘端大数据处理,解决万物互联时代云计算服务不足的问题。

边缘计算(edge computing)是指在网络边缘执行计算的一种新型计算模型,边缘计算中边缘的下行数据表示云服务,上行数据表示万物互联服务,而边缘计算的边缘是指从数据源到云计算中心路径之间的任意计算和网络资源。图1-6表示基于双向计算流的边缘计算模型。云计算中心不仅从数据库收集数据,也从传感器和智能手机等边缘设备收集数据,这些设备既是数据生产者又是数据消费者,因此,终端设备和云中心之间的请求传输是双向的。网络边缘设备不仅从云中心请求内容及服务,还可以执行部分计算任务,包括数据存储、数据处理、数据缓存、设备管理、隐私保护等。因此,需要更好地设计边缘设备硬件平台及其软件关键技术,以满足边缘计算模型中可靠性和数据安全性的需求。

图1-6 边缘计算模型

边缘计算产业联盟(Edge Computing Consortium,ECC)对边缘计算的定义为:边缘计算是指在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的开放平台,就近提供边缘智能服务,满足行业数字化在敏捷连接、实时业务、数据优化、应用智能、安全与隐私保护等方面的关键需求。万物联网应用需求的发展催生了边缘式大数据处理模式,即边缘计算模型,其能在网络边缘设备上增加执行任务计算和数据分析的处理能力,将原有云计算模型的部分或全部计算任务迁移到网络边缘设备上,降低云计算中心的计算负载,减缓网络带宽的压力,提高万物互联时代数据的处理效率。

边缘计算与雾计算的概念相似,原理也相似,即都是在网络边缘进行的计算。边缘计算和雾计算的关键区别在于以下两点。一是智能和计算发生的位置。雾计算中的智能发生在本地局域网络层,数据的处理是在雾节点或者IoT网关进行的。边缘计算则是将智能、处理能力和通信能力都放在边缘网关或者直接的应用设备中。二是雾计算具有层次性更强且更平坦的架构,其中几个层次形成网络,而边缘计算依赖于不构成网络的单独节点。雾计算在节点之间具有广泛的对等互连能力,边缘计算在孤岛中运行其节点,需要通过云实现对等流量传输。边缘计算可以广泛应用于云端向网络边缘侧转移的各个场景,包括但不限于以下场景。

●云计算任务迁移:云计算中的大多数计算任务在云计算中心执行,这会导致响应延时较长,损害用户体验。根据用户设备的环境可确定数据分配和传输方法,EAWP(Edge Accelerated Web Platform)模型改善了传统云计算模式下较长响应时间的问题,一些学者已经开始研究解决云迁移在移动云环境中的能耗问题。在边缘计算中,边缘端设备借助其一定的计算资源实现从云中心迁移部分或全部任务到边缘端执行。移动云环境借助基站等边缘端设备的计算、存储、网络等资源,实现从服务器端迁移部分或全部任务到边缘端执行,例如通过分布式缓存技术提高网页加载和DNS解析速度,或者将深度学习的分析、训练过程放在云端,生成的模型部署在边缘网关直接执行,优化效率、提升产能。

●边缘视频分析:在本地对视频进行简单处理,选择性地丢弃一些静止或无用的画面,只将有用的数据传输到云端,减少带宽浪费,节省时间。

●车联网:将汽车需要的云服务扩展到高度分散的移动基站环境中,并使数据和应用程序能够安置在车辆附近,从而减少数据的往返时间并提供实时响应、路边服务、附近消息互通等功能。

●智能家居:通过家庭内部的边缘网关提供Wi-Fi、蓝牙、ZigBee等多种连接方式,连接各种传感器和网络设备,同时出于数据传输负载和数据隐私的考虑,在家庭内部就地处理敏感数据,降低数据传输带宽的负载,向用户提供更好的资源管理和分配。

●智能制造(工业互联网):将现场设备封装成边缘设备,通过工业无线和工业SDN网络将现场设备以扁平互联的方式连接到工业数据平台,与大数据、深度学习等云服务对接,解决工业控制高实时性要求与互联网服务质量的不确定性之间的矛盾。

●智慧水务:利用先进的传感技术、网络技术、计算技术、控制技术、智能技术,对二次供水等设备进行全面感知,集成城市供水设备、信息系统和业务流程,实现多个系统间大范围、大容量数据的交互,从而进行全程控制,实现故障自诊断、可预测性维护,以降低能耗,保证用水安全。

●智慧物流:通过专用车载智能物联网终端,实时全面采集车辆、发动机、油箱、冷链设备、传感器等的状态参数、业务数据以及视频数据,视频、温控、油感、事件联动,全面感知车辆运行状况,形成高效低耗的物流运输综合管理服务体系。

1.2.10 移动边缘计算

万物互联的发展实现了网络中多类型设备(如智能手机、平板计算机、无线传感器及可穿戴的健康设备等)的互联,而大多数网络边缘设备的能量和计算资源有限,这使万物互联的设计变得尤为困难。移动边缘计算是在接近移动用户的无线电接入网范围内提供信息技术服务和云计算能力的一种新的网络结构,并已成为一种标准化、规范化的技术。

2014年,ETSI提出对移动边缘计算术语进行标准化,并指出移动边缘计算提供了一种新的生态系统和价值链。利用移动边缘计算,可将密集型移动计算任务迁移到附近的网络边缘服务器。ETSI是欧盟正式承认为欧洲标准化组织(ESO)的三个机构之一,在全球拥有超过800个成员组织,成员包括大型和小型私营公司、研究机构、学术界、政府和公共组织的多元化组合,例如微软、英特尔、思科、华为等。ETSI的多接入边缘计算(Multi-access Edge Computing,MEC)定义为:为应用程序开发人员和内容提供商提供云计算功能和位于网络边缘的IT服务环境,其特点是超低延迟和高带宽以及可以被应用程序实时访问的无线网络信息。多接入边缘计算是移动边缘计算的扩展。

如图1-7所示,移动边缘计算是指利用无线接入网络就近提供电信用户所需服务和云端计算功能,创造出一个具备高性能、低延迟与高带宽的电信级服务环境,加速网络中各项内容、服务及应用的下载,让消费者享有不间断的高质量网络体验。移动边缘计算把无线网络和互联网两种技术有效融合在一起,在无线网络侧增加计算、存储、处理等功能,构建开放式平台以植入应用,并通过无线API开放无线网络与业务服务器之间的信息交互,对无线网络与业务进行融合,将传统的无线基站升级为智能化基站。

图1-7 移动边缘计算概念示意图

移动边缘计算模型强调在云计算中心与边缘设备之间建立边缘服务器,在边缘服务器上完成终端数据的计算任务,但移动边缘终端设备基本不具有计算能力。相比而言,边缘计算模型中,终端设备具有较强的计算能力,因此,移动边缘计算是一种边缘计算服务器,是边缘计算模型的一部分。

1.2.11 移动云计算

移动云计算被定义为“移动云生态系统中云计算服务的可用性。这合并了许多元素,包括使用者、企业、家庭基站、转码、端到端安全性、家庭网关和启用移动宽带的服务”。

基于云计算的定义,移动云计算是指通过移动网络以按需、易扩展的方式获得所需的基础设施、平台、软件(或应用)等的一种IT资源或(信息)服务的交付与使用模式。如图1-8所示,移动云计算是云计算技术在移动互联网中的应用,本质上是基于移动终端获取各种云端服务的技术。

图1-8 移动云计算概念示意图

此外,IBM对移动云计算的定义为:移动云计算利用云计算向移动设备交付应用。这些移动应用可以通过快速、灵活的开发工具进行远程部署。在cloMobile上,云应用可以通过云服务快速构建或修改。这些应用可以交付到具备不同操作系统、计算任务和数据存储功能的许多不同设备上。因此,用户可以访问在其他情况下不受支持的应用。

1.2.12 大数据计算

随着互联网与计算机系统需要处理的数据量越来越大,大数据计算逐渐成为一种重要的数据分析处理模式。当前在大数据计算方面,主要模式有基于MapReduce的批处理计算、流式计算、基于Spark的内存计算。下面简单介绍这三种计算模式。

1.基于MapReduce的批处理计算

批处理计算是指先对数据进行存储,然后再对存储的静态数据进行集中计算。MapReduce是大数据分析处理方面最成功的主流计算模式,被广泛用于大数据的线下批处理分析计算。

MapReduce计算模式的主要思想是将要执行的问题(例如程序)拆解成Map和Reduce两个函数操作,然后对分块的大数据采用“分而治之”的并行处理方式分析和计算数据。MapReduce计算流程如图1-9所示,通过Map函数的程序将数据映射成不同的分块,分配给计算机集群处理以达到分布式运算的效果,再通过Reduce函数的程序将结果汇总,输出所需要的结果。MapReduce提供了一个统一的并行计算框架,把并行计算涉及的诸多系统层细节都交给计算框架去完成,因此大大减轻了程序员进行并行化程序设计的负担。

图1-9 MapReduce计算流程

2.流式计算

大数据批处理计算关注数据处理的吞吐量,而大数据流式计算更关注数据处理的实时性。如图1-10所示,在流式计算中,无法确定数据的到来时刻和到来顺序,也无法将全部数据存储起来。因此不再进行流式数据的存储,而是当流动的数据到来后在内存中直接进行数据的实时计算。流式计算具有很强的实时性,需要对应用源源不断产生的数据实时地进行处理,使数据不积压、不丢失,常用于处理电信、电力等行业应用以及互联网行业的访问日志等。Facebook的Scribe、Apache的Flume、Twitter的Storm、Yahoo的S4、UC Berkeley的Spark Streaming都是典型的流式计算系统。

图1-10 大数据流式计算

3.基于Spark的内存计算

Spark是UC Berkeley AMP实验室开源的类似Hadoop MapReduce的分布式计算框架,输出和结果保存在内存中,不需要频繁读写HDFS,数据处理效率更高。如图1-11所示,由于在MapReduce计算过程中需要读写HDFS存储(访问磁盘I/O),而在Spark内存计算过程中,使用内存替代了使用HDFS存储中间结果,即在进行大数据分析处理时使用分布式内存计算,访问内存要比访问磁盘快得多,因此,基于Spark的内存计算的数据处理性能会提高很多,特别是针对需要多次迭代大数据计算的应用。

图1-11 Spark内存计算

1.2.13 无服务器计算

无服务器计算英文为Serverless Computing,通常也被简称为Serverless,它并不是指没有服务器,而是指对于用户,服务器变得“不可见”(或者“无感知”),是指开发者不需要直接管理服务器资源。Serverless是一种云计算模型,它允许开发者编写和部署功能单元(函数)而无须关心底层的服务器基础设施。在Serverless架构中,云服务提供商负责动态管理和分配服务器资源,根据实际需要为函数执行提供计算资源。

Serverless的核心目的就是在云计算的基础上向前迈进一步,彻底“包揽”所有的环境工作,直接提供计算服务。在Serverless架构下,开发者只需编写代码并上传,云平台就会自动准备好相应的计算资源,完成运算并输出结果,从而大幅简化开发运维过程。也就是说,Serverless是云计算的进一步延伸,所以,它继承了云计算最大的特点——按需弹性伸缩、按需付费。

从层级上来看,Serverless在传统云计算SaaS的应用层级上又加了一层——函数层,如图1-12所示。函数层的颗粒度更细,可以更灵活地满足用户的算力需求。

图1-12 FaaS与IaaS、PaaS、SaaS的关系

按照CNCF对Serverless的定义,Serverless架构是采用FaaS和BaaS来解决问题的一种设计,即Serverless=FaaS+BaaS。FaaS就是Function as a Service(函数即服务)。每个函数都是一个服务,函数可以由任何语言编写,直接托管在云平台,以服务的形式运行,通过事件触发。BaaS则是Backend as a Service(后端即服务)。云平台提供后端组件整合,开发者无须开发和维护后端服务,通过API/SDK的调用,便可获得数据存储、消息推送、账号管理等功能。

Serverless的背后依然是虚拟机和容器。只不过,服务器部署、运行时安装、编译等工作都由Serverless计算平台负责完成。对开发人员来说,只需要维护源代码和Serverless执行环境的相关配置即可。这就叫“无服务器计算”。Serverless架构的最大优势就是帮助用户彻底摆脱基础设施管理这样的“杂事”,使用户更加专注于业务开发,从而提升效率,降低开发和运营成本。根据业界的统计,在商业和企业数据中心的典型服务器,日常只提供了5%~15%的平均最大处理能力的输出,这是一种算力资源的巨大浪费。总之,Serverless的出现,可以让用户按照实际算力使用量进行付费,属于真正的“精确计费”。