版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
清华大学出版社《云计算与大数据技术理论及应用》配套课件林伟伟彭绍亮编著第1章绪论提纲分布式计算概念分布式计算模式CAP定理分布式计算的定义分布式计算是一门计算机科学,主要研究对象是分布式系统。在介绍分布式计算概念前,首先简单了解一下什么是分布式系统。简单地说,一个分布式系统是由若干通过网络互联的计算机组成的软硬件系统[1],且这些计算机互相配合以完成一个共同的目标(往往这个共同的目标称为“项目”)分布式计算指在分布式系统上执行的计算。分布式计算是将一个大型计算任务分成很多部分分别交给其他的计算机处理,并将所有的计算结果合并为原问题的解决方案。这里与并行计算不同的是,并行计算是使用多个处理器并行执行单个计算。分布式计算的优缺点优点
高可伸缩性
资源共享
高性价比
容错性
超大规模
通用性弱点
多点故障一台或多台计算机的故障,或一条或多条网络链路的故障,都会导致分布式系统出现问题
安全性低分布式系统为非授权用户的攻击提供了更多机会分布式系统介绍分布式系统:指通过网络互连,可协作执行某个任务的独立计算机集合。分布式系统介绍经典分布式系统/项目介绍Web全球最大的分布式系统,互联网服务之一统一资源标识符(URI)资源定位器(URL)超文本传输协议(HTML)客户机/服务器(Client/Server)模式分布式系统介绍经典分布式系统介绍SETI@home(SearchforExtraTerrestrialIntelligenceatHome)由互联网上的多个计算机组成处理天文数据的分布式计算系统搜寻证实地球外智能生物存在的证据志愿参加人数最多的分布式项目(Project)屏幕保护模式下的后台运行(客户端计算为主)1999-2005543万用户、243万年累计计算没有发现外星文明直接证据分布式系统介绍经典分布式系统介绍BOINC项目(BerkeleyOpenInfrastructureforNetworkComputing)传统客户端/服务器架构服务器端配置:数据库服务器、数据处理服务器、资源任务调配服务器、Web服务器等子系统组成客户端设置志愿计算功能服务器(软件)用于:数学、物理、化学、生物科学、地理科学等项目计算最为流行的分布式计算平台分布式系统介绍分布式系统介绍经典分布式系统介绍其他分布式计算项目C(模拟全球气象变化)Quake-CatcherNetwork(强力地震观测预测网)WorldCommunityGrid(查询人类疾病的治疗方法)Einstein@Home(寻找脉冲星的引力波)FightAIDS@home(研究艾滋病生理原理和相关药物)Folding@home(了解蛋白质折叠)GIMPS(寻找新的梅森素数)D(破解密锁)…提纲分布式计算概念分布式计算模式CAP定理分布式云计算相关计算形式分布式云计算相关计算形式集中计算与分布式计算串行运算与并行运算并行运算与分布式计算的区别:分布式计算强调的是任务的分布执行,而并行计算强调的是任务的并发执行云计算概念提出提出者:Google工程师,比希利亚,27岁出发点:推广Google超级强大的计算资源,招贤纳士结果:蜂拥而至,名噪一时,被视为“云”的起源*-16-云计算分类私有云公有云混合云操作系统+应用服务引擎应用系统基础设施(IaaS)应用平台(PaaS)应用软件(SaaS)InfrastructureasaService以服务的形式提供虚拟硬件资源,如虚拟主机/存储/网络/数据库管理等资源。用于无需购买服务器、网络设备、存储设备,只需通过互联网租赁即可搭建自己的应用系统典型应用:AmazonWeb
Service(AWS)PlatformasaService提供应用服务引擎,如互联网应用编程接口/运行平台等。用户基于该应用服务引擎,可以构建该类应用。典型应用:GoogleAppEngine,F,MicrosoftAzure服务平台SoftwareasaService用户通过Internet(如浏览器)来使用软件。用户不必购买软件,只需按需租用软件典型应用:GoogleDoc,S,OracleCRMOnDemand,OfficeLiveWorkspace面向外部用户需求,通过开放网络提供云计算服务IDC,GoogleApp,Saleforce在线CRM按提供的服务类型按云服务的对象大型企业按照云计算的架构搭建平台,面向企业内部需求提供云计算服务企业内部数据中心等兼顾以上两种情况的云计算服务AmazonWebServer等既为企业内部又为外部用户提供云计算服务云计算与网格计算网格计算:利用互联网把地理上广泛分布的各种资源(计算、存储、带宽、软件、数据、信息、知识等)连成一个逻辑整体,就像一台超级计算机一样,为用户提供一体化信息和应用服务(计算、存储、访问等)。网格计算强调资源共享,任何节点都可以请求使用其它节点的资源,任何节点都需要贡献一定资源给其他节点。云计算强调专有,请求或获取的资源是专有的,并且由少数团体提供,使用者不需要贡献自己的资源。网格计算侧重并行的计算集中性需求,并且难以自动扩展。云计算侧重事务性应用,大量的单独的请求,可以实现自动或半自动的扩展。云计算包含的网格计算特征:(1)提供在线的计算、存储等服务(2)超大规模的资源组合(3)资源的虚拟化*18云计算与分布式计算分布式计算(狭义):将待解决问题分成多个小问题,再分配给许多计算系统处理,最后将处理结果加以综合。特点:把计算任务分派给网络中的多台独立的机器优点稀有资源可以共享通过分布式计算可以在多台计算机上平衡计算负载可以把程序放在最适合运行它的计算机上流行的分布式项目SETI@Home:寻找外星文明RC-72:密码分析破解,研究和寻找最为安全的密码系统Folding@home:研究蛋白质折叠、聚合问题UnitedDevices:寻找对抗癌症的有效的药物GIMPS:寻找最大的梅森素数(解决较为复杂的数学问题)云计算包含的分布式计算特征:1)通过资源调度和组合满足用户的资源请求;2)对外提供统一的、单一的接口云计算是分布式计算的发展,是分布式计算的一种新形式。分布式邮箱系统19云计算与并行计算并行计算:是相对于串行计算的概念,最早出现于上个世纪六七十年代,指在并行计算机上所做的计算。现通常指同时使用多种计算资源解决计算问题的过程,即一个程序的多个部分同时运行于多个处理器上。分类:可分为时间上的并行(流水线)和空间上的并行(多处理器并发)并行计算问题的特征将工作分离成离散部分,有助于同时解决随时并及时地执行多个程序指令(多条线同时运行)多计算资源下解决问题的耗时要少于单个计算资源下的耗时云计算包含的并行计算特征:用户资源(单一类型和组合类型)请求的同时处理*20云计算与对等计算对等计算系统中,每个节点都拥有对等的功能与责任,既可以充当服务器向其他节点提供数据或服务,又可以作为客户机享用其他节点提的供数据或服务,节点之间的交互可以是直接对等的,任何节点可以随时自由地加入或离开系统。对等计算:有可能作为云计算的一个类型预测:将可能以“对等子云”的形式出现在云计算中。依据:云计算对超大规模、多类型资源的统一管理是困难的;对等计算具有鲁棒性、可扩展性、成本、搜索等方面的优点Google的云计算服务曾出现严重问题,Gmail、Blogger和Spreadsheet等服务均长时间当机。亚马逊S3云计算服务也曾出现问题。而P2P系统则有更强的抗毁能力。*21雾计算基本概念雾计算是个很形象的名称,提出它的GinnyNichols提了一个有趣的说法“雾是接近地面的云”。这句话有两层含义:1)雾计算和云计算有很多相似。例如:它们都基于虚拟化技术,从共享的资源池中为多用户提供资源。2)“接近地面”。这也指出了雾和云的一个不同——网络拓扑中的位置。雾的概念:雾节点所使用的设备:
雾主要使用边缘网络中的设备。这些设备可以是传统网络设备(早已部署在网络中的路由器,交换机,网关等等),也可以是专门部署的本地服务器。雾计算基本原理雾计算概念示意图雾计算实例智能交通灯系统雾计算的引入将为智能交通灯系统带来更多的可能性。如:监控过程中,相邻帧间画面只有部分变化,非常适于在雾节点处缓存若干帧画面,压缩后再传向中心机房,这样从雾节点到机房的网络带宽将得到很大缓解。在雾节点处,可判断监控画面中是否有救护车头灯闪烁,做出实时决策发送给对应交通灯,协助救护车通过。
边缘计算基本概念边缘计算(EdgeComputing)指的是接近于事物,数据和行动源头处的计算也被称为:邻近计算或者接近计算(ProximityComputing)边缘计算的概念:边缘网络:
边缘计算让数据在边缘网络处处理。边缘网络基本上由终端设备(例如移动手机、智能物品等等)、边缘设备(例如边界路由器、机顶盒、网桥、基站、无线接入点等等)、边缘服务器等构成。边缘计算基本原理云计算、雾计算、边缘计算关系:雾计算也可以进行边缘计算。除了边缘网络,雾计算也可以拓展到核心网络。边缘和核心网络(例如核心路由器、区域服务器、广域网路开关等等)的组件都可以作为雾计算基础设施。边缘计算依赖于不构成网络的单独节点,需要通过云实现孤岛中节点的对等流量传输。雾计算用几个层次形成网络,节点之间具有广泛的对等互连能力。雾计算以及边缘计算都不是用来代替云计算,它们共同形成一个彼此受益的计算模型。边缘计算实例智能交通灯系统无人驾驶汽车走向规模化应用必须存储和运算海量的数据。无人驾驶汽车要在高速行驶过程中,通过无线网络与云端进行大量超低时延、超大流量的数据交互,现有网络根本没有能力支撑。依靠移动边缘计算,数据可以就近存储于车辆附近位置甚至车身上。在车辆高速度运动过程中,位置信息变化十分迅速,被置于车身上的最末端的移动边缘计算服务器能够精确地实时感知车辆位置的变动,并将分析所得结果以极低延迟(通常是毫秒级)传送给临近区域内其他联网车辆,以便车辆做出决策。
大数据计算概念随着互联网与计算机系统需要处理的数量越来越大,大数据计算成为一种非常重要的数据分析处理模式。大数据计算一般是指利用分布式计算技术对海量数据进行在线或离线的实时性或批处理分析计算。当前大数据计算的主要模式有:基于MapReduce的批处理计算、流式计算、基于Spark的内存计算。基于MapReduce的批处理计算InputsplitshuffleoutputMapReduce计算模式的主要思想是将自动分割要执行的问题(例如程序)拆解成Map和Reduce两个函数操作,然后对分块的大数据采用“分而治之”的并行处理方式分析计算数据。大数据流式计算大数据批处理计算关注数据处理的吞吐量,而大数据流式计算更关注数据处理的实时性。流式计算具有很强的实时性,需要对应用源源不断产生的数据实时进行处理,使数据不积压、不丢失,常用于处理电信、电力等行业应用以及互联网行业的访问日志等。基于Spark的内存计算由于MapReduce计算过程中需要读写HDFS存储(访问磁盘IO),而在Spark内存计算过程中,使用内存替代了使用HDFS存储中间结果,即在进行大数据分析处理时使用分布式内存计算,内存访问要比磁盘快得多。因此,基于Spark的内存计算的数据处理性能会提升很多,特别是针对需要多次迭代大数据计算的应用。提纲分布式计算概念分布式计算模式CAP定理2000年7月,来自加州大学伯克利分校EricBrewer教授首次提出了著名的CAP猜想。2年后,来自麻省理工学院的SethGilbert和NancyLynch从理论上证明了Brewer教授CAP猜想。从此,CAP理论正式在学术上成为了分布式计算领域的公认定理,并深深地影响了分布式计算的发展。分布式系统的CAP理论:对于一个分布式计算系统来说,不可能同时满足以下三点:一致性(C)、可用性(A)、分区容忍性(P)。一致性(C):即Consistency,所有节点访问同一份最新的数据副本。在分布式系统中的所有数据备份,在同一时刻是否同样的值。可用性(A):即Availability,对数据更新具备高可用性。在集群中一部分节点故障后,集群整体还能响应客户端的读写请求。。分区容错性(P):即Partitiontolerance,当分布式系统集群中的某些结点无法联系时仍能正常提供服务。*33分布式系统的CAP定理CAP理论一个说明CAP理论的分布式应用例子1)正常情况:服务器N1和N2分别写、读数据,且服务器N1和N2通过同步消息来实现数据读写的一致性。2)当服务器N1和N2之间的通信异常中断时:则系统(服务器N2)要么只能读取旧数据,牺牲一致性;要么服务器N1的写操作就会随着数据更新消息发送失败而回滚,系统无法使用,违背了可用性。2026/9/3DistributedComputing36Questions1)并行计算与分布式计算区别?2)分布式计算的核心技术是?3)什么是BONIC架构?如何应用在分布式计算应用中?4)有哪些分布式计算模式?举例说明相关实际应用?5)分布式系统的CAP理论是什么?清华大学出版社《云计算与大数据技术理论及应用》配套课件林伟伟彭绍亮编著第2章分布式计算编程基础提纲进程间通信Socket编程RMI编程P2P编程进程间通信的定义分布式计算的核心技术是进程间通信(interprocesscommunication,IPC),即在互相独立的进程(进程是程序的运行时表示)间通信及共同协作以完成某项任务的能力。计算机1计算机2互联网单播通信与组播通信在分布式计算中,两个或多个进程按约定的某种协议进行IPC,此处协议是指数据通信各参与进程必须遵守的一组规则。在协议中,一个进程有些时候可能是发送者,在其他时候则可能是接收者。单播组播IPC设施系统级IPC设施消息队列共享内存。。。高层的IPCAPI抽象开发分布式应用往往工作量比较大且复杂更好地把注意力集中在应用逻辑上API:ApplicationProgrammingInterface,应用编程接口或应用程序接口IPCAPI的四种基本操作发送(Send):该操作由发送进程发起,旨在向接收进程传输数据。操作必须允许发送进程识别接收进程和定义待传数据。接收(Receive):该操作由接收进程发起,旨在接收发送进程发来的数据操作必须允许接收进程识别发送进程和定义保存数据的内存空间,该内存随后被接收者访问。连接(Connect):对面向连接的IPC,必须有允许在发起进程和指定进程间建立逻辑连击的操作:其中以进程发出请求连接操作而另一进程发出接受连接操作。断开连接(Disconnect):对面向连接的IPC,该操作允许通信的双方关闭先前建立起来的某一逻辑连接。IPC使用示例:HTTP提纲进程间通信Socket编程RMI编程P2P编程Socket历史SocketAPI最早作为BerkeleyUnix操作系统的程序库,出现于20世纪80年代早期,用于提供IPC功能。现在所有主流操作系统都支持SocketAPI。在BSD、Linux等基于Unix的系统中,SocketAPI都是操作系统的一部分。在个人计算机操作系统如MS-DOS、WindowsNT、Mac-OS、OS\2中,SocketAPI都是以程序库形式提供的(在Windows系统中,SocketAPI称为Winsocket)。Java语言在设计之初就考虑到了网络编程,也将SocketAPI作为语言核心类的一部分提供给用户。所有这些API都使用相同的消息传递模型和非常类似的语法。Socket现状SocketAPI是实现进程间通信的第一种编程设施。SocketAPI非常重要的原因主要有以下两点:1)SocketAPI已经成为IPC编程事实上的标准,高层IPC设施都是构建于SocketAPI之上的,即它们基于SocketAPI实现的。2)对于响应时间要求较高或在有限资源平台上运行的应用来说,用SocketAPI实现是最合适的。基本Socket机制两种主要的传输层协议UDP:允许使用无连接通信传输报文(即在传输层发送和接受)。被传输报文称为数据报(datagram)。根据无连接通信协议,每个传输的数据包都被分别解析和路由,并且可按任何顺序到达接收者。TCP:面向连接的协议,它通过在接受者和发送者之间建立的逻辑连接来传输数据流。由于有连接,从发送者到接受者的数据能保证以与发送次序相同的顺序被接受。两种主要的传输层协议UDP:如果主机A上的进程1通过顺序传输数据包m1、m2,向主机B上的进程2发送消息,这些数据包可以通过不同路由在网络上传输,并且可按下列任何一种顺序到达接收进程:m1-m2或m2-m1。TCP:如果主机A上的进程1顺序传输m1、m2,向主机B上的进程2发送消息,接收进程可以认为消息将以m1-m2顺序到达,而不是m2-m1。在数据通信网络的术语中,“包”(或称分组,英文为packet)是指在网络上传输的数据单位。每个包中都包含有效数据(载荷,payload)以及一些控制信息(头部信息),如目的地址。两种类型的SocketAPI数据报Socket(DatagramSocket)流式Socket(StreamSocket)流式SocketAPIJava流式Socket
API在Java中,有两个类提供了流式SocketAPI:1)ServerSocket用于接受连接,我们将称之为连接socket2)Socket用于数据交换,我们将称之为数据socket流式Socket程序流类ServerSocket的主要方法和构造函数Method/constructorDescriptionServerSocket(int
port)Createsaserversocketonaspecifiedport.Socketaccept()throwsIOExceptionListensforaconnectiontobemadetothissocketandacceptsit.Themethodblocksuntilaconnectionismade.publicvoidclose()throwsIOException
Closesthissocket.voidsetSoTimeout(int
timeout)throwsSocketExceptionSetatimeoutperiod(inmilliseconds)sothatacalltoaccept()forthissocketwillblockforonlythisamountoftime.Ifthetimeoutexpires,ajava.io.InterruptedIOExceptionisraised类Socket的主要方法和构造函数Method/constructorDescriptionSocket(InetAddress
address,int
port)CreatesastreamsocketandconnectsittothespecifiedportnumberatthespecifiedIPaddressvoidclose()throwsIOExceptionClosesthissocket.InputStreamgetInputStream()throwsIOExceptionReturnsaninputstreamsothatdatamaybereadfromthissocket.OutputStreamgetOutputStream()throwsIOExceptionReturnsanoutputstreamsothatdatamaybewrittentothissocket.voidsetSoTimeout(int
timeout)throwsSocketExceptionSetatimeoutperiodforblockingsothataread()callontheInputStreamassociatedwiththisSocketwillblockforonlythisamountoftime.Ifthetimeoutexpires,ajava.io.InterruptedIOExceptionisraised流式Socket基本语法ServerSocketconnectionSocket=newServerSocket(portNo);SocketdataSocket=connectionSocket.accept();OutputStreamoutStream=dataSocket.getOutputStream();PrintWritersocketOutput=newPrintWriter(newOutputStreamWriter(outStream));socketOutput.println(message);socketOutput.flush();dataSocket.close();connectionSocket.close();SocketAddresssockAddr=newInetSocketAddress(acceptorHost,acceptorPort);SocketmySocket=newSocket();inttimeoutPeriod=2000;//2secondsmySocket.connect(sockAddr,timeoutPeriod);InputStreaminStream=mySocket.getInputStream();BufferedReadersocketInput=newBufferedReader(newInputStreamReader(inStream));Stringmessage=socketInput.readLine();mySocket.close();类Example4ConnectionAcceptor类Example4ConnectionRequestor流式Socket基本语法在本例中有一些值得关注的地方:1)由于这里处理的是数据流,因此可使用Java类PrinterWriter向socket写数据和使用BufferedReader从流中读取数据。这些类中所使用的方法与向屏幕写入一行或从键盘读取一行文本相同。2)尽管本例将Acceptor和Requestor分别作为数据发送者和数据接收者介绍,但两者的角色可以很容易地进行互换。在那种情况下,Requestor将使用getOutputStream向socket中写数据,而Acceptor将使用getInputStream从socket中读取数据。3)事实上,任一进城都可以通过调用getInputStream和getOutputStream从流中读取数据或向其中写入数据。4)在本例中,每次只读写一行数据(分别使用readLine和println方法),但其实也可以每次只读写一行中的一部分数据(分别使用read和print方法来实现)。然而,对于以文本形式交换消息的文本协议来说,每次读写一行是标准做法。事件状态图隐藏数据Socket细节ServerSocketconnectionSocket=newServerSocket(portNo);MyStreamSocketdataSocket=newMyStreamSocket(connectionSocket.accept());dataSocket.sendMessage(message);dataSocket.close();connectionSocket.close();MyStreamSocketmySocket=newMyStreamSocket(acceptorHost,acceptorPort);Stringmessage=mySocket.receiveMessage();mySocket.close();类Example5ConnectionAcceptor类Example5ConnectionRequestor提纲进程间通信Socket编程RMI编程P2P编程RMI的定义RMI是RemoteMethodInvocation的缩写,即远程方法调用。RMI是RPC模型的面向对象实现,是一种用于实现远程过程调用的应用程序编程接口,它使客户机上运行的程序可以调用远程服务器上的对象。JavaRMI由于RMIAPI只适用于Java程序,所以,我们一般称为JavaRMI。但该API相对简单,因此,非常适合于用作学习网络应用中分布式对象技术的入门资料。
JavaRMI使用接口化编程。在需要服务端的某一个远程对象时,编程人员通过定义一个该对象的接口来隐藏它的实现,并在客户端定义一个相同的接口,客户端使用该接口可以像本地调用一样实现远程方法调用。通过调用RMI的API,对象服务器通过目录服务导出和注册远程对象,这些对象提供一些可以被客户程序调用的远程方法。从语法上来看,RMI通过远程接口声明远程对象,该接口是Java接口的扩展;远程接口由对象服务器实现;对象客户使用与本地方法调用类似的语法访问远程对象,并调用远程对象的方法。RMI基本分布式应用远程接口定义服务器端软件客户端软件RMI基本分布式应用:远程接口定义在RMIAPI中,分布式对象的创建开始于远程接口。Java接口是为其他类提供模板的一种类:它包括方法声明或签名,其实现由实现该接口的类提供。Java远程接口是继承Java类remote的一个接口,该类允许使用RMI语法实现接口。与必须为每个方法签名定义扩展和RemoteException不同,远程接口语法与常规或本地Java接口相同。RMI基本分布式应用:远程接口定义importjava.rmi.*;publicinterfaceSomeInterfaceextendsRemote{//signatureoffirstremotemethodpublicStringsomeMethod1()throwsjava.rmi.RemoteException;//signatureofsecondremotemethodpublicintsomeMethod2(intx)throwsjava.rmi.RemoteException;//signatureofotherremotemethodsmayfollow}//endinterfaceRMI基本分布式应用:服务器端软件对象服务器是指这样的一种对象,它可以提供某一分布式对象的方法和接口。每个对象服务器必须:1)实现接口部分定义的每个远程方法;2)向目录服务注册包含了实现的对象。RMI基本分布式应用:服务器端软件importjava.rmi.*;importjava.rmi.server.*;publicclassSomeImplextendsUnicastRemoteObjectimplementsSomeInterface{publicStringsomeMethod1()throwsRemoteException{//codetobesupplied}publicintsomeMethod2()throwsRemoteException{//codetobesupplied}}//endclass1)远程接口实现RMI基本分布式应用:服务器端软件1)远程接口实现RMI基本分布式应用:服务器端软件2)stub和skeleton生成在RMI中,分布式对象需要为每个对象服务器和对象客户提供代理,分别成为对象skeleton和stub。这些代理可通过使用JavaSDK提供的RMI编译器rmic,编译远程接口实现生成。可在命令行下输入下述命令生成stub和skeleton文件:rmic<classnameoftheremoteinterfaceimplementation>例如:rmicSomeImplRMI基本分布式应用:服务器端软件2)stub和skeleton生成如果编译成功,将生成两个代理文件,每个文件的名都以实现类的类名为前缀:SomeImpl_stub.classSomeImpl_skel.class但在Java2版本以上的平台下,只生成stub文件。对象的stub文件及远程接口文件,必须被每个对象客户所共享:这些文件是编译客户程序时所必须的文件。可以手工为对象客户提供每个文件的一个拷贝。此外JavaRMI具有stub下载特征,允许客户端动态获取stub文件。RMI基本分布式应用:服务器端软件3)对象服务器的实现SomeImplexportedObj=newSomeImpl();startRegistry(1234);registryURL="rmi://localhost:"+portNum+"/some";Naming.rebind(registryURL,exportedObj);listRegistry(registryURL);主机名
端口号引用名类Naming提供从注册表获取和存储引用的方法。具体来说,rebind方法允许如下形式URL将对象引用存储到注册表中:主机名应该是服务器名,或简写成localhost,引用名指用户选择的名称,该名称在注册表中应该是惟一的。rebind方法将覆盖注册表中与给定引用名绑定的任何引用。如果不希望覆盖,可以使用bind方法。URL:rmi://<hostname>:<portnumber>/<referencename>//检查RMI注册表当前是否运行在默认端口上。如果不在,RMI注册表将被激活。RMI基本分布式应用:服务器端软件3)对象服务器的实现此外,可以使用JDK中的rmiregistry工具在系统提示符输入下列命令,手工激活RMI注册表:rmiregistry<portnumber>
端口号(默认1099)RMI对象服务器是并发服务器:每个对象客户请求都使用服务器上的一个独立线程服务。由于远程方法调用可并发执行,因此远程对象实现的线程安全性非常重要。RMI基本分布式应用:客户端软件查找远程对象:如果对象服务器先前在注册表中保存了对象引用,可以用类Naming的lookup方法获取这些引用。注意,应将获取的引用传给远程接口类。StringregistryURL="rmi://localhost:"+portNum+"/some";SomeInterfaceh=(SomeInterface)Naming.lookup(registryURL);调用远程方法:远程接口引用可以调用远程接口中的任何方法,例如:Stringmessage=h.method1();System.out.println(message);注意,调用远程方法的语法与调用本地方法相同。RMI应用构建步骤1)服务器端软件开发算法为该应用的所有待生成文件创建一个目录。在SomeInterface.java中定义远程服务器接口。编译并修改程序,直到不再有任何语法错误。SomeImpl.java中实现接口,编译并修改程序,直到不再有任何语法错误。使用RMI编译器rmic处理实现类,生成远程对象的stub文件rmicSomeImpl可以从目录中看到新生成文件SomeImpl_Stub.class,每次修改接口实现时,都要重新执行步骤3和步骤4创建对象服务器程序SomeServer.java,编译并修改程序,直到不再有任何语法错误。激活对象服务器javaSomeServerRMI应用构建步骤2)客户端软件开发算法为该应用的所有待生成文件创建一个目录获取远程接口类文件的一个拷贝,也可获取远程接口源文件的一个拷贝,使用javac编译程序,生成接口文件。获取接口实现stub文件SomeImpl_stub.class的一个拷贝开发客户程序SomeClient.java,编译程序,生成客户类激活客户javaSomeClientRMI应用构建步骤2)客户端软件开发算法RMI应用构建步骤3)测试和调试构建最小RMI程序的一个模板。从一个远程接口开始,其中包括一个方法签名,一个stub实现,一个输出对象的服务器程序以及一个足以用来调用远程方法的客户程序。在单机上测试模板程序,直到远程方法调用成功。每次在接口中增加一个方法签名。每次增加后都修改客户程序来调用新增方法。完善远程方法定义内容,每次只修改一个。在继续下一个方法之前,测试并彻底调试每个新增方法。完全测试所有远程方法后,采用增量式方法开发客户应用。每次增加后,都测试和调试程序。将程序部署到多台机器上,测试并调试。RMI和socketAPI的比较远程方法调用API作为分布式对象计算范型的代表,是构建网络应用的有效工具。它可用来取代socketAPI快速构建网络应用。在RMIAPI和socketAPI之间权衡时,需要考虑以下因素:1)socketAPI的执行与操作系统密切相关,因此执行开销更小,RMI需要额外的中间件支持,包括代理和目录服务,这些不可避免地带来运行时开销。对有高性能要求的应用来说,socketAPI仍将是惟一可行途径。2)RMIAPI提供了使软件开发任务更为简单的抽象。用高级抽象开发的程序更易理解,因此也更易调试。RMI和socketAPI的比较由于运行在低层,socketAPI通常是平台和语言独立的,RMI则不一定。例如JavaRMI需要特定的Java运行时支持。结果是,使用JavaRMI实现的应用必须用Java编写,并且也只能运行在Java平台上。在设计应用系统时,是否能选择适当的范型和API是非常关键的。依赖于具体环境,可以在应用的某些部分使用某种范型或API,而在其他部分使用另一种范型或API。由于使用RMI开发网络应用相对简单,RMI是快速开发应用原型的一个很好的候选工具。提纲进程间通信Socket编程RMI编程P2P编程P2P的定义P2P,即Peer-to-Peer的缩写,常称它为“点对点”或者“端对端”,而学术界常称它为“对等计算”。P2P是一种以非集中化方式使用分布式资源来完成计算任务的一种分布式计算模式。非集中化:P2P系统中并非采用传统的以服务器为中心管理所有客户端的方法,而是消除“中心”的概念,将原来的客户端视为服务器和客户端的综合体;分布式资源:P2P系统的参与者共享自己的一部分空闲资源供系统处理关键任务所用,这些资源包括处理能力、数据文件、数据存储和网络带宽等。P2P的优点P2P技术打破了传统的Client/Server(缩写为C/S)模式,在P2P网络中所有结点的地位都是对等的,每个结点既充当服务器,又充当客户端,这样缓解了中心服务器的压力,使得资源或任务处理更加的分散化。由于P2P网络中结点是Client和Server的综合体,因此结点也被形象地称为“SERVENT”。C/S模式与P2P模式对比C/S模式P2P模式C/S模式与P2P模式对比C/S模式:服务器和客户端之间是一对多的主从关系,系统的信息和数据都保存在中心服务器上若要索取信息,必须先访问服务器,才能得到所需的信息,且客户端之间是没有交互能力的。P2P模式:不区分提供信息的服务器和请求信息的客户端,每一个结点都是信息的发布者和请求者,对等结点之间可以实现自治交互,无需使用服务器。每个对等结点都可以在网络中发布和分享信息,使得网络中闲散的资源得到充分利用。不需要花费高昂的费用来维护中心服务器。基于P2P范型的即时聊天系统开发由于演示的是简单的P2P即时聊天系统,所以,我们仅仅设计了如下几个功能:(1)点对点单人聊天;(2)多人同时在线聊天;(3)用户可以自由加入和退出系统;(4)具备用户在线状态监视。1)确定系统实现功能为了更好地理解P2P分布式计算模式和P2P应用的开发方法,本节使用JavaSocket来实现一个简单的基于P2P范型的即时聊天系统。基于P2P范型的即时聊天系统开发为了简单起见,我们采用类似于中心化拓扑结构的P2P模式,所有客户都需要与中心服务器相连,并将自己的网络地址写入服务器中,服务器只需要监听和更新用户列表信息,并发送给客户最新的用户列表信息即可。当需要点对点聊天时,客户端只需要从本地用户列表中读取目标用户的网络地址,并连接目标用户,即可实现通信。因为是P2P系统,客户端要同时扮演服务器和客户端两个角色,所以,用户登录后都会创建一个接收其他用户连接的监听线程,以实现服务器的功能。2)确定P2P模式基于P2P范型的即时聊天系统开发创建Socket、绑定地址和端口号,监听并接受客户端的连接请求。服务器端在客户连接后自动获取客户端用户名、IP地址和端口号,并将其保存在服务器端的用户列表中,同时更新所有在线用户的客户端在线用户列表信息,以方便客户了解上下线的实时情况,以进行聊天。当有用户下线时,服务器端要能即时监听到,并更新用户列表信息,发送给所有在线客户端。对在线用户数量进行统计。3)确定服务器主要任务基于P2P范型的即时聊天系统开发客户端创建Socket,并调用connect()函数,向中心服务器发送连接请求。客户端在登录后也必须充当服务器,以接收其他用户的连接请求,所有需要创建一个用户接收线程来监听。用户登录后需要接收来自服务器的所有在线用户信息列表,并更新本地的用户列表信息,以方便选择特定用户进行聊天。客户端可以使用群发功能,向在线用户列表中的所有用户发送聊天信息。4)确定客户端主要任务基于P2P范型的即时聊天系统开发中心服务器启动后会自动创建一个监听线程,以接受客户端发来的连接请求。当客户端与服务器连接后,客户端会将自己的信息(用户名、IP地址和端口号等)写入socket,服务器端从此socket中读取该用户信息,并登记到用户信息列表中。然后,服务器将最新的用户信息列表群发给所有在线的客户端,以便客户端得到最新的用户列表。步骤1、2展示了客户登陆服务器的过程。5)确定交互过程:登陆基于P2P范型的即时聊天系统开发每个连接到中心服务器的客户都会得到最新的用户信息列表。如步骤3所示,若Client2欲与Client3聊天,则Client2检索自己的用户信息列表,得到Client3的用户信息后,便可与Client3进行连接,实现通信。此过程,并不需要中心服务器的干预。5)确定交互过程:通信基于P2P范型的即时聊天系统开发当有一个客户需要下线时,例如图中的Client1,那么Client1首先将下线请求写入socket,中心服务器接收到含有下线请求标记的信息后,Client1便通过握手机制下线(为了安全关闭socket)。Client1安全下线后,中心服务器会将Client1的用户信息从在线列表中删除,并将更新后的用户列表、下线用户名称和当前网络的在线用户情况等群发给所有在线客户端,以便客户端得到最新的在线用户列表。5)确定交互过程:登出基于P2P范型的即时聊天系统开发客户端的群发功能与服务器端的群发类似,都采用遍历用户列表的方法。例如,图中Client3欲与所有在线用户聊天,则只要遍历Client3的在线用户列表,与所有在线用户进行连接,便可以进行群聊。5)确定交互过程:群聊基于P2P范型的即时聊天系统开发6)系统实现类图基于P2P范型的即时聊天系统开发7)确定系统界面:Server端基于P2P范型的即时聊天系统开发7)确定系统界面:Client端基于P2P范型的即时聊天系统开发8)部分类功能说明Node:P2P网络结点类,其中包含用户名、IP地址、端口号和一个结点变量next。RandomPor:用于客户端分配随机可用端口号,由网络知识可知,可用端口号要小于65535。用Random类提供的方法生成一个随机端口值后,再用此端口来初始化ServerSocket对象,以检查此端口是否可用。UserInfo:用户列表类,它用于维护中心服务器端和客户端的在线用户信息。UserInfo类中含有一个ArrayList<Node>类型的UserNodeList属性,用于保存在线用户信息,以及一些向UserNodeList中添加用户结点、删除用户结点、统计用户列表结点数、按Node.username检索列表和按索引检索列表等行为。基于P2P范型的即时聊天系统开发8)部分类功能说明Server:中心服务器类,Server类中除了包含系统界面上的一些组件成员外,还有用于维护在线用户信息的UserInfo对象、用于连接的ServerSocket对象和Socket对象,及用于套接字输入、出流的对象。服务器生成后会进行相应的初始化,并监听服务器界面中按钮动作,予以相应处理。基于P2P范型的即时聊天系统开发9)系统运行详细过程当单击“启动服务器”按钮时,会触发调用类Server的startServer()方法,该方法为服务器选定特定的端口号,并创建服务器端监听线程serverListenThread(服务器端监听线程类ServerListenThread的一个实例),等待客户端的连接请求。同时,服务器还会创建一个线程ServerReceiveThread,用于接收客户端发来的下线请求,并将更新后的用户列表群发给所有用户。当客户端与服务器连接后,会创建一个线程ComWithServer,用于将自己的信息发送给服务器,并获取服务器返回的最新用户列表。同时,客户端创建ClientSendThread线程,用于发送本端的聊天信息。此外,还创建了接收线程ClientReceiveThread,把自己当做服务器,接收来自其他客户端发来的信息。基于P2P范型的即时聊天系统开发10)系统测试:服务器端基于P2P范型的即时聊天系统开发10)系统测试:客户端基于P2P范型的即时聊天系统开发10)系统测试:点对点聊天2026/9/3DistributedComputing102Questions1)分布式应用的最流行的计算范型是?用图形化的方式描述该范型的通信原理2)分布式应用最基本的计算范型是?3)什么是peer-to-peer范型?请举出三个使用该范型的软件?4)考虑本书讨论的各种范型的权衡因素,比较每种范型的优缺点?清华大学出版社《云计算与大数据技术理论及应用》配套课件林伟伟彭绍亮编著第3章云计算原理与技术提纲云计算概述云计算关键技术Google云计算原理亚马逊云服务基于亚马逊云的大数据分析案例阿里云云计算的起源随着信息和网络通信技术的快速发展,计算模式从最初的把任务交给大型处理机集中计算,逐渐发展为更有效率的基于网络的分布式任务处理模式,自上世纪80年代起,互联网得到快速发展,基于互联网的相关服务的增加,以及使用和交付模式的变化,云计算模式应运而生。云计算的起源早期的单处理机模式计算能力有限,网络请求通常不能被及时响应,效率低下。用户通过配置具有高负载通信能力的服务器集群来提供急速增长的互联网服务,但在遇到负载低峰的时候,通常会有资源的浪费和闲置,导致用户的运行维护成本提高。云计算把网络上的服务资源虚拟化并提供给其他用户使用,整个服务资源的调度、管理、维护等工作都由云端负责,用户不必关心“云”内部的实现就可以直接使用其提供的各种服务。云计算的目标云计算的目标云计算是分布式计算、效用计算、虚拟化技术、Web服务、网格计算等技术的融合和发展,其目标是用户通过网络能够在任何时间、任何地点最大限度地使用虚拟资源池,处理大规模计算问题。云计算厂商云计算的定义对一般用户而言:云计算是指通过网络以按需、易扩展的方式获得所需的服务。即随时随地只要能上网就能使用各种各样的服务,如同钱庄、银行、发电厂等。这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务。云计算的定义对专业人员而言:云计算是分布式处理、并行处理和网格计算的发展,或者说是这些计算机科学概念的商业实现。是指基于互联网的超级计算模式--即把原本存储于个人电脑、移动设备等个人设备上的大量信息集中在一起,在强大的服务器端协同工作。云计算的定义目前比较权威的云计算定义是美国国家标准技术研究院NIST提出的,包括以下4点:1)云计算是一种利用互联网实现随时随地、按需、便捷地访问共享资源池(如计算设施、存储设备、应用程序等)的计算模式;2)云计算模式具有5个基本特征:按需自助服务、广泛的网络访问、共享的资源池、快速弹性能力、可度量的服务;3)3种服务模式:软件即服务(SaaS)、平台即服务(PaaS)、基础设施即服务(IaaS);4)4种部署方式:私有云、社区云、公有云、混合云。云计算的两种不同技术模式在我们看来,要理解云计算概念,应该区分云计算的两种不同技术模式:1)以大分小(Amazon模式):硬件虚拟化技术,统一的资源池管理动态分配资源,提高资源利用率,降低硬件投资成本,适合于公共云平台提供商和面向中小型租赁用户。2)以小聚大(Google模式):分布式存储(适合海量数据存储),并行计算(适合海量数据处理),线性的水平扩展能力,适合海量数据存储、检索、统计、挖掘,在互联网企业应用成熟。云计算与分布式计算按照狭义的概念来讲,分布式计算是将待解决问题分成多个小问题,再分配给许多计算系统处理,最后将处理结果加以综合。分布式计算的特点是把计算任务分派给网络中的多台独立的机器并行计算,与传统的单机计算形式相比,分布式计算的优点主要有:1.
稀有资源可以共享2.通过分布式计算可以在多台计算机上平衡计算负载3.可以把程序放在最适合运行它的计算机上云计算是分布式计算的一种新形式,但云计算提供的服务包含了更复杂的商业模式,云计算包含的分布式计算特征主要有:1.通过资源调度和组合满足用户的资源请求2.对外提供统一的单一的接口流行的分布式项目分布式计算已经在很多领域加以应用,目前比较流行的分布式项目主要有:SETI@Home:寻找外星文明RC-72:密码分析破解,研究和寻找最为安全的密码系统Folding@home:研究蛋白质折叠、聚合问题UnitedDevices:寻找对抗癌症的有效的药物GIMPS:寻找最大的梅森素数(解决较为复杂的数学问题)云计算与网格计算网格计算有了十几年的历史,提出时主要用于科学计算。网格计算目的是整合大量异构计算机的闲置资源(如计算资源和磁盘存储等),组成虚拟组织,以解决大规模计算问题。云计算是从网格计算演化来的,发展并包含了网格计算的内容。网格计算与云计算主要区别有:网格主要是通过聚合式分布的资源,通过虚拟组织提供高层次的服务,而云计算资源相对集中,通常以数据中心的形式提供对底层资源的共享使用,而不强调虚拟组织的观念;网格聚合资源的主要目的是支持挑战性的应用,主要面向教育和科学计算,而云计算一开始就是用来支持广泛的企业计算、web应用等;网格用中间件屏蔽异构性,而云计算承认异构,用提供服务的机制来解决异构性的问题。云计算与对等计算对等计算(P2P)是一种高效的计算模式。在对等计算系统中,每个节点都拥有对等的功能与责任,既可以充当服务器向其他节点提供数据或服务,又可以作为客户机享用其他节点提的供数据或服务;节点之间的交互可以是直接对等的,任何节点可以随时自由地加入或离开系统。云计算对超大规模、多类型资源的统一管理是困难的,而对等计算具有鲁棒性、可扩展性、成本、搜索等方面的优点,在云计算体系结构和平台设计方面多有应用。云计算与并行计算早期的并行计算就是在并行计算机上所做的计算,它与常说的高性能计算、超级计算是同义词,因为任何高性能计算和超级计算总离不开并行计算。目前比较正式的定义是,并行计算是相对于串行计算来说的,是指同时使用多种计算资源解决计算问题的过程。并行计算可以划分成时间并行和空间并行,从程序和算法设计人员的角度来看,并行计算又可分为数据并行和任务并行。云计算与并行计算的区别:(1)云计算萌芽于并行计算;(2)并行计算、高性能计算、网格计算等只用于特定的科学领域,专业的用户;(3)并行计算追求的高性能;(4)云计算对于单节点的计算能力要求低,主要目的是资源共享。云计算分类云计算分类IaaS:基础设施即服务IaaS是云计算的基础,为上层云计算服务提供必要的硬件资源,同时在虚拟化技术的支持下,IaaS层可以实现硬件资源的按需配置,创建虚拟的计算、存储中心,使得其能够把计算单元、存储器、I/O设备、带宽等计算机基础设施,集中起来成为一个虚拟的资源池来对外提供服务(如硬件服务器租用)。云计算分类IaaS:基础设施即服务Amazon的云计算平台弹性计算云EC2(elasticcomputecloud)可以为用户或开发人员提供一个虚拟的集群环境,既满足了小规模软件开发人员对集群系统的需求,减小维护的负担,又有效解决了设备闲置的问题。云计算分类PaaS:平台即服务一些大型电子商务企业,为支持搜索引擎和邮件服务等需要海量数据处理能力的应用,开发了分布式并行技术的平台,在技术和经验有一定积累后,逐步将平台能力作为软件开发和交付的环境进行开放。AppEngine是基于Google数据中心的开发、托管Web应用程序的平台。通过该平台,程序开发者可以构建规模可扩展的Web应用程序,而不用考虑底硬件基础设施的管理。云计算分类PaaS:平台即服务PaaS既要为SaaS层提供可靠的分布式编程框架,又要为IaaS层提供资源调度,数据管理,屏蔽底层系统的复杂性等,同时PaaS又将自己的软件研发平台作为一种服务开放给用户。例如:软件的个性化定制开发。PaaS层需要具备存储与处理海量数据的能力,用于支撑SaaS层提供的各种应用。因此,PaaS的关键技术包括并行编程模型、海量数据库、资源调度与监控、超大型分布式文件系统等分布式并行计算平台技术。云计算分类SaaS:软件即服务多租户技术:云计算要求硬件资源和软件资源能够更好地被共享,具有良好的伸缩性,任何一个用户都能够按照自己的需求进行客户化配置而不影响其他用户的使用。多租户技术就是云计算环境中能够满足上述需求的关键技术。SaaS层部署在PaaS和IaaS平台之上,同时用户可以在PaaS平台上开发并部署SaaS服务,SaaS面向的是云计算终端用户,提供基于互联网的软件应用服务。随着网络技术的成熟与标准化,SaaS应用近年来发展迅速。典型的SaaS应用包括GoogleApps、Salesforce等。GoogleApps包括GoogleDocs,Gmail等大量SaaS应用,GoogleApps将我们常用的一些传统的桌面应用程序(如文字处理软件、电子邮件服务、照片管理、通讯录、日程表等)迁移到互联网,并托管这些应用程序。用户通过网络浏览器便可随时随地使用GoogleApps提供的应用服务,而不需要下载、安装或维护任何硬件或软件。提纲云计算概述云计算关键技术Google云计算原理亚马逊云服务基于亚马逊云的大数据分析案例阿里云体系结构核心服务层:将硬件基础设施、软件运行环境、应用程序抽象成服务,这些服务具有可靠性强、可用性高、规模可伸缩等特点,满足多样化的应用需求。服务管理层:为核心服务提供支持,进一步确保核心服务的可靠性、可用性与安全性。用户访问接口层:实现端到云的访问。体系结构:核心服务层云计算核心服务通常可以分为3个子层:基础设施即服务层(IaaS,infrastructureasaservice)平台即服务层(PaaS,platformasaservice)软件即服务层(SaaS,softwareasaservice)体系结构:核心服务层(IaaS)IaaS提供硬件基础设施部署服务,为用户按需提供实体或虚拟的计算、存储和网络等资源。在使用IaaS层服务的过程中,用户需要向IaaS层服务提供商提供基础设施的配置信息,运行于基础设施的程序代码以及相关的用户数据。为了优化硬件资源的分配,IaaS层引入了虚拟化技术。借助于Xen、KVM、VMware等虚拟化工具,可以提供可靠性高、可定制性强、规模可扩展的IaaS层服务。体系结构:核心服务层(PaaS)PaaS是云计算应用程序运行环境,提供应用程序部署与管理服务。通过PaaS层的软件工具和开发语言,应用程序开发者只需上传程序代码和数据即可使用服务,而不必关注底层的网络、存储、操作系统的管理问题。由于目前互联网应用平台(如Facebook、Google、淘宝等)的数据量日趋庞大,PaaS层应当充分考虑对海量数据的存储与处理能力,并利用有效的资源管理与调度策略提高处理效率。体系结构:核心服务层(SaaS)SaaS是基于云计算基础平台所开发的应用程序。企业可以通过租用SaaS层服务解决企业信息化问题,如企业通过GMail建立属于该企业的电子邮件服务。该服务托管于Google的数据中心,企业不必考虑服务器的管理、维护问题。对于普通用户来讲,SaaS层服务将桌面应用程序迁移到互联网,可实现应用程序的泛在访问。体系结构:服务管理层服务管理层对核心服务层的可用性、可靠性和安全性提供保障。服务管理包括服务质量(QoS,qualityofservice)保证和安全管理等。此外,数据的安全性一直是用户较为关心的问题。云计算数据中心采用的资源集中式管理方式使得云计算平台存在单点失效问题。保存在数据中心的关键数据会因为突发事件(如地震、断电)、病毒入侵、黑客攻击而丢失或泄露。根据云计算服务特点,研究云计算环境下的安全与隐私保护技术(如数据隔离、隐私保护、访问控制等)是保证云计算得以广泛应用的关键。除了QoS保证、安全管理外,服务管理层还包括计费管理、资源监控等管理内容,这些管理措施对云计算的稳定运行同样起到重要作用。体系结构:用户访问接口层用户访问接口实现了云计算服务的泛在访问,通常包括命令行、Web服务、Web门户等形式。命令行和Web服务:既可为终端设备提供应用程序开发接口,又便于多种服务的组合。Web门户:云计算将用户的桌面应用迁移到互联网,从而使用户随时随地通过浏览器就可以访问数据和程序,提高工作效率。数据存储ACID特性:原子性(atomicity)一致性(consistency)隔离性(isolation)持久性(durability)BASE特性:基本可用(basicallyavailable)柔性状态(softstate)最终一致性(eventuallyconsistent)可扩展性极其有限!数据存储:NoSQLNoSQL并没有一个准确的定义,但一般认为NoSQL数据库应当具有以下的特征:模式自由(schema-free)支持简易备份(easyreplicationsupport)简单的应用程序接口(simpleAPI)最终一致性(或者说支持BASE特性,不支持ACID)支持海量数据(hugeamountofdata)数据存储:NoSQL数据库分类类别产品特性列存储HbaseCassandraHypertable顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对某一列或者某几列的查询有非常大的IO优势。文档存储MongoDBCouchDB文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。key-value存储Tokyo
Cabinet/TyrantBerkeley
DBMemcacheDBRedis可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)数据存储:NoSQL数据库分类类别产品特性图存储Neo4JFlockDB图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。对象存储db4oVersant通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。xml数据库Berkeley
DB
XMLBaseX高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。数据中心分布式文件系统分布式文件系统(DistributedFileSystem,DFS)是云存储的核心,一般作为云计算的数据存储系统,对DFS的设计既要考虑系统的IO性能,又要保证文件系统的可靠性与可用性。文件系统是支撑上层应用的基础,Google自行研发的GFS(GoogleFileSystem)是一种构建在大量服务器之上的一个可扩展的分布式文件系统,采用主从架构,通过数据分块,追加更新等方式实现海量数据的高效存储。Google以论文的形式公开其在云计算领域研发的各种技术,使得以GFS和Bigtable为代表的一系列大数据处理技术被广泛了解并得到应用,并催生出以Hadoop为代表的一系列云计算开源工具。计算模型:MapReduce计算模型:Dryad资源调度PaaS层的海量数据处理以数据密集型作业为主,其执行能力受到IO带宽的影响。网络带宽是计算集群中的急缺的资源:1)云计算数据中心考虑成本因素,很少采用高带宽的网络设备2)IaaS层部署的虚拟机集群共享有限的网络带宽3)海量数据的读写操作占用了大量带宽资源。因此PaaS层海量数据处理平台的任务调度需要考虑网络带宽因素目前对于云计算资源管理方面进行的研究主要在降低数据中心能耗,提高系统资源利用率等方面:通过动态调整服务器CPU的电压或频率来节省电能。关闭不需要的服务器资源实现节能。负载低峰或高峰时,通过有效放置虚拟机达到系统资源的有效利用。虚拟化虚拟化是IaaS层的重要组成部分,也是云计算的最重要特点。虚拟化技术可以提供以下特点。1)资源共享:通过虚拟机封装用户各自的运行环境,有效实现多用户分享数据中心资源。2)资源定制:用户利用虚拟化技术,配置私有的服务器,指定所需的CPU数目、内存容量、磁盘空间,实现资源的按需分配。3)细粒度资源管理:将物理服务器拆分成若干虚拟机,可以提高服务器的资源利用率,减少浪费,而且有助于服务器的负载均衡和节能。提纲云计算概述云计算关键技术Google云计算原理亚马逊云服务基于亚马逊云的大数据分析案例阿里云Google云计算原理GoogleFileSystem(GFS)MapReduceBigTableChubbyDremelGFS网页搜索业务需要海量的数据存储,同时还需要满足高可用性、高可靠性和经济性等要求。为此,Google基于以下几个假设开发了分布式文件系统——GoogleFileSystem:1)硬件故障是常态:充分考虑到大量节点的失效问题,需要通过软件将容错以及自动恢复功能集成在系统中2)支持大数据集:系统平台需要支持海量大文件的存储,文件通常大小以G字节计,并包含大量小文件3)一次写入、多次读取的处理模式:充分考虑应用的特性,增加文件追加操作,优化顺序读写速度4)高并发性:系统平台需要支持多个客户端同时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届长治市襄垣县三年级数学下学期期中教学质量检测模拟试题含答案
- 中职客房重点试题及答案梳理
- 2026年商务拓展经理校招面试题及答案
- 施工电工理论试题及答案详解
- 2026年软件开发工程师招聘面试题及答案
- 2025-2026年人教版小学语文三年级下册第6单元同步练习题
- 2026年江苏省部编版七年级语文下册第7章文言文综合测试卷
- 2026年广东省部编版初中英语下册阅读理解专项训练习题
- 2025-2026年天津市苏教版七年级英语第7单元课时作业
- 2026年天津市人教版初中物理八年级下册第12章综合测试题
- 九年级上册文学文本&小说阅读理解16篇(含解析)
- 2025至2030中国精制茶市场盈利模式与未来销售渠道分析报告
- 开学第一课+课件-2025-2026学年人教版(2024)七年级英语上册
- 迪士尼生产授权管理办法
- 高校校卫队管理制度
- 人工智能幼儿科普课件
- 2025年淮南新东辰控股集团有限责任公司招聘笔试参考题库附带答案详解
- 烙铁焊接操作技术培训
- 2024-2025学年人教版新英语教材七年级上册词汇
- 新能源汽车电气系统检修(微课版) 课件 项目五任务1新能源汽车空调制冷系统检修
- 2024用电信息采集系统技术规范第1部分:专变采集终端
评论
0/150
提交评论