亲亲E宝贝
GFS的诞生来源于google日益增长的数据量的处理需求,它是一个可扩展的分布式文件系统,用于大型分布式数据密集型应用,在廉价的通用硬件上运行时提供容错机制,并且可以为大量客户端提供较高的聚合性能。 它的设计由当前和预期的应用负载(当时的)和技术环境驱动,与以前的文件系统的假设有着明显不同,因此gfs在设计上有几个不同的points:
当前已部署多个集群用于不同目的,最大的拥有1000多个存储节点,超过300TB的存储服务,并且有数百个客户端连续不断地高负载请求。
前面提到一些对应用负载和技术环境的观察,现在更详细地进行阐述:
虽然GFS不能提供像POSIX标准的API,但它提供一个相似的文件系统接口。文件在目录中按层次结构组织,并以路径名作为标识。支持create、delete、open、close、read and write files。
gfs支持快照和record append操作。快照以低代价创建文件副本或者目录树,record append支持多个客户端并发地写文件,保证每个独立客户端append的原子性。
一个gfs集群包含一个master和多个chunkservers,chunkserver被多个客户端访问,如图1所示。每一个都是普通linux机器上运行的用户态服务进程。资源允许的情况下,客户端可以和chunkserver部署在同一台机器上。
文件被划分为固定大小的块。每个chunk由一个独一无二的64位大小的chunk handle所标识,chunk handle在chunk被创建时由master分配。每个chunk的副本分布在多个机器上,系统默认为三副本模式,用户也可以为不同namespace的文件指定不同级别的副本。
master包含文件系统的所有元信息。包含namespace、访问控制权限信息、文件到chunks的映射、当前chunks的位置信息。也控制着全局的活动,像chunk租约管理、gc、chunk迁移等。master通过心跳的方式与每个chunkserver交流来发送它的指令和收集状态。
客户端与master的交互涉及元信息操作,所有数据操作直接与chunkserver交互。gfs不提供POSIX标准API,因此不需要挂接到linux的vnode层。
客户端和chunkserver都不缓存文件数据。大多数应用传输大文件,客户端缓存收益很低。chunks作为本地的文件存储,linux系统有自己的buffer cache,chunkserver不需要再增加缓存。
单master简化了系统的设计,但是会有单点的瓶颈问题,这是必须要解决的。客户端不会从master读写数据文件,客户端请求master它需要的交互的chunkserver信息,并且将其缓存一段时间,后续的操作直接与chunkservers交互。
客户端会发送请求给离它最近的一个副本。实际上,客户端通常会向master请求多个chunk的信息,以减少未来与maser交互的代价。
chunk size定为64MB,相比普通的文件系统的block size更大。每个chunk副本以linux文件的形式存在chunkserver上,仅根据需要来扩展。使用lazy space allocation的方式避免空间浪费。
large chunk size有以下几个优点:
但是large chunk size with lazy space allocation也有其缺点:单个文件可能包含很少数量的chunks,或许只有一个,当许多客户端访问相同文件时这些chunks成为热点。但由于目标应用大多是顺序的读多个large chunk文件,热点并不是主要的问题。 然而GFS第一次用于批处理队列系统时确实出现了热点问题,数百个客户端同时访问一个单chunk文件,存储这个文件的几个chunkserver超负荷运转,当时通过错开应用的启动时间避免了这个问题,一个潜在、长期的解决方法是允许客户端从其它客户端读取数据。
master保存三种类型的元数据:
所有元数据都保存在内存中 。对于元数据的内存操作是很快的,后台任务周期巡检整个状态也是比较简单高效的。周期巡检用于实现chunk gc、在chunkserver故障时重新构造副本、chunk迁移以平衡多个chunkserver的负载和disk usage。 虽然系统的容量受master内存大小的限制,但这并不是一个严重的问题,64MB的chunk只需要不到64byte大小的元信息,如果一定需要更大的文件系统,那么增加内存的代价相比为可靠性、性能和灵活性等付出的代价是较小的。
前两种类型的元数据通过写日志来保证持久化,并且会复制日志到远程机器上。master不需要将chunks的位置信息持久化,而是在master启动和新的chunkserver加入集群时向每个chunkserver询问它的位置信息,之后通过心跳信息监控chunk位置变更信息。chunkserver作为最后一关是确切知道自己本地有没有哪些chunk的,因此维护一个一致性的视图是没有必要的。
operation log 包含元数据的变更记录, 它是GFS的核心 ,它不仅仅是唯一的元数据持久化记录,也表明了并发操作的逻辑时间线。文件、chunks和它们的版本都是由逻辑时间线唯一标识。元数据变更记录在持久化之前对客户端是不可见的,而且日志被复制到多个远程的机器,只有相应的记录在本地和远程都持久化到硬盘了才可以回复客户端。master使用批处理log的方式提高系统的吞吐。
master通过回放日志来恢复文件系统的状态,为提高恢复速度需要保持log量足够小。当log增长超过特定大小时,master会checkpoint它的状态,以加速恢复提高可用性。构建checkpoint可能需要花费一段时间,因此master以一种不delay后续变化的方式来组织内部状态,先switch到一个新的日志文件,使用独立的线程创建checkpoint,新的checkpoint包含了所有switch之前的变化。几百万个文件的集群在一分钟内可以完成,完成后将同时被写入本地和远程。恢复只需要最新的checkpoint和之后的日志文件,旧的checkpoints和日志文件可以完全删除。
GFS使用一个宽松的一致性模型,这种模型可以很好地支持分布式应用程序,而且实现起来简单有效。 file namesapce变化(例如文件创建)是原子的,使用namespace锁。 master的operation log定义了这些操作的全局顺序。
数据变化后文件region的状态取决于变化的类型,是否成功、失败或者是并发的。Table1做了总结。如果所有客户端都能看到相同的数据,无论它们读的是哪个副本,则这个file region是一致的。
数据变化有两种:writes或者record appends。write是指从应用指定offset处开始写数据,record append指即使存在并发冲突,数据也要被原子地append到文件至少一次,但offset是由GFS选定。
GFS保证在一系列成功的mutations后,file region是defined,通过下面两点来保证:
过期的副本将不会再涉及到任何mutation,master也不会将其位置信息回应给客户端,不久后将会被gc。但客户端缓存的信息可能包含过期的副本,缓存失效存在一个时间窗口,文件再次打开也会清除该文件的所有chunk信息。由于大多数文件是append-only,过期的副本通常返回的是过早的结尾???而不是过期的数据。
介绍客户端、master和chunkserver之间如何交互来实现数据变化、原子追加写和快照的。
使用租约的方式维护多个副本间一致的mutation order。master授权租约给副本中的一个,称之为primary。primary为chunk的mutaions选择一个顺序,所有副本都按照这个顺序apply。 租约机制最小化了master的管理overhead。租约初始的超时时间是60s,如果chunk一直在变化过程中,primary可以申请续租。这些授权和续租请求由master和chunkserver之间的心跳信息携带。master也可以尝试撤销租约,即使它与primary失去了联系,也可以等租约过期后安全地授权给另外一个副本。
在Figure2中,跟随着写入控制流展示了处理过程:
如果一个写请求比较大或者超出了chunk边界,GFS客户端将它拆为多个写操作,但是多个操作可能与其它客户端并发交叉写入,因此共享的fie region最终可能包含多个不同客户端的碎片,这会造成 一致性模型 中所描述的file region处于consistent but undefined状态。
数据以pipline的机制在chunkserver链上线性传输,而控制流是从客户端到primary再到所有的其它副本。分离数据流和控制流可以更高效地使用网络。可以带来以下好处:
GFS提供原子的append operaton叫作 record append 。传统的write中,客户端指定offset,并发写相同region时不是serializable,最终region可能包含多个客户端的碎片数据。而对于record append,客户端仅指定数据,GFS保证至少一次成功的原子append,offset由GFS选定,与Unix的O_APPEND模式相似。
多个客户端并发操作相同文件是比较重的。如果处理传统的write,客户端需要额外复杂和昂贵的同步逻辑,像分布式锁。而record append仅需要primary增加一点额外的逻辑:primary检查是否并发append数据的chunk会超出max size,如果会超出则将chunk填充到max size,并且告诉所有二级副本同样操作,然后回应客户端指出这个操作应该选择另一个chunk重试;大多数情况下记录是在max size内的,primary将数据append到自己的副本,并告诉所有二级副本按照确切的offset写数据,最后回应给客户端。
如果中间出现错误,客户端重试,相同chunk的副本可能包含不同的数据,可能包含相同的记录或者一部分相同,GFS不保证bytewise identical,仅仅保证数据至少有一次被成功地原子写入。从report success逻辑可以容易得出,数据必须是在某个chunk的所有副本上以相同的offset写入。在此之后,所有副本都与记录end一样长,即使后面不同的副本成为primary,任何将来的记录也将分配到更高的offset或者不同的chunk。根据上述的一致性保证,成功的record append的region是defined和一致的,而中间的region是不一致的(undefined)。GFS的应用可以处理这种不一致的region()。
snapshot 操作拷贝一份文件或者目录树,几乎是实时的,同时最大程度减少对正在进行中的mutation的干扰。 像AFS一样,使用标准的COW技术实现snapshot。当master接收到一个snapshot请求,首先将所有涉及到chunks的租约撤销,这保证了这些chunks后续的write将会先请求master查找租约持有者,master会创建一个新的副本来回应。
租约被撤销或者过期后,master将这个操作记录日志到disk。新创建的snapshot引用元数据相同的chunks。 当snapshot操作完成后,客户端第一次要写chunk C,发送请求给master查询持有租约者,master察觉到chunk C的引用大于1,则让每个含有当前chunk副本的chunkserver创建一个新的chunk叫作C',所有创建都使用本地的副本,相比100Mb的网络本地速度大约是三倍速度。master授权租约给新的chunk C'中的一个并且回复给客户端,之后正常地写chunk。整个过程对客户端是透明的。
master执行所有的namespace操作。另外,它管理整个系统的chunk副本:
接下来,详细探讨这些细节。
许多master操作可能花费较长一段时间,比如snapshot操作需要撤销相关的所有chunks的租约。因此为了不delay其它master操作,在namesapce的regions上使用locks来确保串行化。 GFS没有按目录列出该目录中所有文件的结构,也不支持文件和目录的别名(unix中的硬链和软链)。GFS将完整的路径名到元数据的映射表作为它的逻辑namespace。使用前缀压缩,这个表可以有效保存在内存中。namespace tree中的每个节点都有一个关联的读写锁。 每个master操作在运行前都会获取一组锁。如果涉及到/d1/d2/../dn/leaf,它将获取目录名称/d1、/d1/d2、...、/d1/d2/.../dn上的读锁,完整路径/d1/d2/../dn/leaf的读锁或者写锁。leaf可以是文件或者目录。
创建文件不需要对父级目录加锁,因为没有"目录"的概念不会修改它,而加读锁是防止它被删除、重命名或者snapshot。这种锁机制的好处是允许相同目录下并发的mutations。
一个GFS集群通常具有分布在多个机架上的数百个chunkserver,这些chunkserver也会被相同或者不同机架的数百个客户端访问。不同机架上的两台计算机之间的通信可能会跨越一个或者多个网络交换机。另外进出机架的带宽可能小于机架内所有计算机的总带宽。多级分布式对如何分发数据以实现可伸缩性、可靠性和可用性提出了独特的挑战。 副本放置策略有两个目的:最大化数据可靠性和可用性,最大化网络带宽利用率。不仅要在多台机器上放置,还要在多个racks上,即使整个racks损坏也可以确保部分副本保持可用。也可以利用多个racks的总带宽。
chunk副本创建有三个原因:
当master创建新的chunk时,根据几个因素考虑如何放置新的副本:
当chunk可用副本的数量低于用户指定时,master会重新复制。可能发生在几种情况:
需要重新复制的chunk根据以下几个因素确定优先级:
master限制集群和每一个chunkserver内的活跃的clone数量,另外chunkserver通过限制其对源chunkserver的读请求来限制在每个clone操作上花费的带宽。
master会定期重新平衡副本:检查当前副本的分布,迁移副本以获得更好的磁盘空间利用率和负载平衡。同样通过此过程,master逐渐填充一个新的chunkserver。另外,master通常更倾向于移除具有低磁盘利用率chunkservers上的副本,以平衡空间使用。
当文件被删除时,master记录日志,但不会立即回收资源,而是将文件重命名为包含删除时间戳标记的隐藏名称。如果这些文件存在时间超过三天(时间可配置),master巡检时会将其删除。在此之前,仍然可以用特殊名称来读取文件,并且可以重命名为正常名称来取消删除。当从namesapce中删除隐藏文件时,其内存元数据将被删除,这有效切断了所有chunk的连接,在对chunk namespace的扫描中,master识别出孤立的chunk并清除元数据。在心跳信息中,每个chunkserver报告其拥有的chunks子集,而master将回应不在存在于master元数据中的所有的chunk的标识。chunkserver可以自由删除此类chunk的副本。
这种gc机制相比立即删除有以下几个优点:
这种机制主要的缺点是当存储空间紧张时,延迟有时会影响用户的使用,重复创建和删除临时文件的应用可能无法立即重用存储。如果删除的文件再次被明确删除,GFS将通过加快存储回收来解决这些问题。还允许用户将不同的复制和回收策略应用于不同的namespace的不同部分中。
如果一个chunkserver故障或者chunk丢失了mutations,这个chunk副本可能是过期的。对于每个chunk,master都维护了一个chunk版本号。
当master授权租约给一个chunk时,这个chunk的版本号增加1,如果一个副本当前不可用了,则其版本号将不会领先。当chunkserver重新启动并报告其chunks集合和相关联的版本号时,master将检测到该chunkserver上具有过期的副本。如果master看到的版本号大于它记录的版本号,则认为在授权租约时失败了,因此将较高的版本号更新。
master在常规gc中删除旧的副本。另一个保护措施,在master回应客户端哪个chunk持有租约或者clone操作中chunkserver从另一个chunkserver读取chunk时会包含chunk的最新版本号。客户端或者chunkserver在执行操作时会验证版本号。
这个系统最大的挑战之一是处理经常故障的组件。组件的质量和数量造成的问题会超出预期,组件故障可能造成系统不可能,甚至数据错误。接下来讨论GFS如何应对这些挑战,还有系统如何诊断不可避免问题。
使用两个简单有效的方式保证系统的高可用:快速恢复和复制。 master和chunkserver的恢复都是秒级别的。 master维护每个chunk的副本数量,当chunkserver下线或者checksum检测出错误副本时,master会通过已有副本来复制。尽管复制提供了很好的解决方式,但仍在探索其它形式的跨服务器冗余方案,例如奇偶校验或者纠删码,以适应不断增长的只读存储需求。在非常松耦合的系统中实现这些更复杂的冗余方案更具有挑战性。
master的操作日志和checkpoint会被复制到多台机器上,状态的变化只有在本地和所有副本上都持久化以后才可以commit。master进程负责所有的mutations以及后台任务,当它宕机时可以很快重启,如果机器或者磁盘故障,GFS的外部监控将使用日志在其它节点重启新的master进程。在master宕机时,master的备节点只提供只读服务,它们不与master保持强一致,可能会落后于master,通常在1/4秒内。它们保证了那些不介意读到过期数据的应用的高可用读。类似于chunk的primary机制,master的备按照相同的序列应用日志。与master一样,在启动时从每个chunkserver拉取chunks的位置信息,与它们频繁交换握手消息来监控其状态。
每个chunkserver使用checksum来检测存储数据的损坏。数据损坏的chunk可以通过其它的副本来恢复,但是通过副本间比较来检验数据是不切实际的。正常的副本也不是完全一样的,如前文所讲,原子的append并不能保证完全一样的副本。因此每个chunkserver会维护自己的checksum。 每个chunk分为多个64kb的blocks,每个block包含一个32位的checksum,与其它元数据一样,checksum保存在内存中,依靠log持久化,与用户数据分离。
对于读,chunkserver在返回数据给请求者前先检测checksum,确保不会将出错的数据传输给其它chunkservers或者客户端。如果数据是坏的,chunkserver将错误返回给请求者并报告给master,请求者将会去读其它副本, master将会根据其它副本重新克隆一份。当新的副本创建以后,master指示chunkserver将错误的副本删除。checksum的计算不涉及I/O,对读的影响比较小,客户端通常尝试使用对齐block边界读来减少overhead。
为append写是做了checksum计算上的优化的,因为append写是主要的负载(相比于overwrite)。GFS只增量地更新最后部分block的checksum,为新的block的计算新的checksum。这样即使block已经损坏,新的checksum将与存储的数据不会匹配,下次读时将会与正常一样被检测出来。 如果一个写请求要写一个chunk中已存在的region,必要要先检验region的第一个和最后一个block的checksum,然后再重写,最后计算新的checksums。因为第一个和最后一个block可能含有不被重写的内容,如果这部分数据是损坏的,则新的checksum将包含错误的数据。
在idle时,checkserver可以扫描并检查不活跃的chunks,可以检测到冷chunks的错误,一旦错误被检测到,master可以创建一个新的副本。
GFS在设计上与传统文件系统有很多不同,这些点是基于对当时应用负载和技术环境的观察所重新设计,将组件故障看作平常的事件而非异常,为大文件的读取和追加写做优化,扩展和放宽了标准的文件系统接口以改善整个系统。通过监控、复制以及快速恢复能力提供容错能力,使用checksum机制来校验数据的正确性。通过将控制流和数据流分离,数据直接在chunkservers、客户端之间传输,为许多并发的各种任务的读取和写入提供了高吞吐量。大chunk size和租约机制使得master的操作足够轻量化,使得这样一个简单中心化的master不会成为瓶颈。
GFS成功地满足了google的存储需求,作为研究、开发和数据处理的存储平台广泛地应用于google内部。
catcat654321
这个链接你看是不是提纲式的浅谈云计算 摘要云计算是当前计算机领域的一个热点。它的出现宣告了低成本提供超级计算时代的到来。云计算将改变人们获取信息、分享内容和互相沟通的方式。此文阐述了云计算的简史、概念、特点、现状、保护、应用和发展前景,并对云计算的发展及前景进行了分析。关键词: 云计算特点, 云计算保护, 云计算应用.1云计算简史著名的美国计算机科学家、 图灵奖 (Turing Award) 得主麦卡锡 (John McCarthy,1927-) 在半个世纪前就曾思考过这个问题。 1961 年, 他在麻省理工学院 (MIT) 的百年纪念活动中做了一个演讲。 在那次演讲中, 他提出了象使用其它资源一样使用计算资源的想法,这就是时下 IT 界的时髦术语 “云计算” (Cloud Computing) 的核心想法。云计算中的这个 “云” 字虽然是后人所用的词汇, 但却颇有历史渊源。 早年的电信技术人员在画电话网络的示意图时, 一涉及到不必交待细节的部分, 就会画一团 “云” 来搪塞。 计算机网络的技术人员将这一偷懒的传统发扬光大, 就成为了云计算中的这个 “云” 字, 它泛指互联网上的某些 “云深不知处” 的部分, 是云计算中 “计算” 的实现场所。 而云计算中的这个 “计算” 也是泛指, 它几乎涵盖了计算机所能提供的一切资源。麦卡锡的这种想法在提出之初曾经风靡过一阵, 但真正的实现却是在互联网日益普及的上世纪末。 这其中一家具有先驱意义的公司是甲骨文 (Oracle) 前执行官贝尼奥夫 (Marc Benioff, 1964-) 创立的 Salesforce 公司。 1999 年, 这家公司开始将一种客户关系管理软件作为服务提供给用户, 很多用户在使用这项服务后提出了购买软件的意向, 该公司却死活不干, 坚持只作为服务提供, 这是云计算的一种典型模式, 叫做 “软件即服务” (Software as a Service, 简称 SaaS)。 这种模式的另一个例子, 是我们熟悉的网络电子邮箱 (因此读者哪怕是第一次听到 “云计算” 这个术语, 也不必有陌生感, 因为您多半已是它的老客户了)。 除了 “软件即服务” 外, 云计算还有其它几种典型模式, 比如向用户提供开发平台的 “平台即服务” (Platform as a Service, 简称 PaaS), 其典型例子是谷歌公司 (Google) 的应用程序引擎 (Google App Engine), 它能让用户创建自己的网络程序。 还有一种模式更彻底, 干脆向用户提供虚拟硬件, 叫做 “基础设施即服务” (Infrastructure as a Service, 简称 IaaS), 其典型例子是亚马逊公司 (Amazon) 的弹性计算云 (Amazon Elastic Compute Cloud, 简称 EC2), 它向用户提供虚拟主机, 用户具有管理员权限, 爱干啥就干啥, 跟使用自家机器一样。1.2云计算的概念狭义云计算是指计算机基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软件)。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。广义云计算是指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是计算机和软件、互联网相关的,也可以是其他的服务。云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。云计算是虚拟化(Virtualization)、效用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。云计算的特点和优势(一)超大规模性。“云”具有相当的规模,Google云计算已经拥有100多万台服务器,Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般拥有数百上千台服务器。“云”能赋予用户前所未有的计算能力。(二)虚拟化。云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现用户需要的一切,甚至包括超级计算这样的任务。[2](三)高可靠性。“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。(四)通用性。云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。(五)高可扩展性。“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。(六)价格合适。由于“云”的特殊容错措施可以采用具有经济性的节点来构成“云”,“云”的自动化集中式管理使大量企业无需负担日益高昂的数据中心管理成本,“云”的通用性使资源的利用率较之传统系统大幅提升,因此用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完成以前需要数万美元、数月时间才能完成的任务。云计算作为一种技术,与其它一些依赖互联网的技术——比如网格计算 (Grid Computing)——有一定的相似之处,但不可混为一谈。拿网格计算来说, 科学爱好者比较熟悉的例子是 SETI@Home,那是一个利用互联网上计算机的冗余计算能力搜索地外文明的计算项目,目前约有来自两百多个国家和地区的两百多万台计算机参与。它在 2009 年底的运算能力相当于当时全世界最快的超级计算机运算能力的三分之一。有些读者可能还知道另外一个例子:ZetaGrid,那是一个研究黎曼 ζ 函数零点分布的计算项目, 曾有过一万多台计算机参与 (但现在已经终止了,原因可参阅拙作 超越 ZetaGrid)。从这两个著名例子中我们可以看到网格计算的特点,那就是计算性质单一,但运算量巨大 (甚至永无尽头,比如 ZetaGrid)。而云计算的特点恰好相反,是计算性质五花八门,但运算量不大[注三],这是它们的本质区别,也是云计算能够面向大众成为服务的根本原因。云计算能够流行,它到底有什么优点呢? 我们举个例子来说明,设想你要开一家网络公司。按传统方法,你得有一大笔启动资金, 因为你要购买计算机和软件,你要租用机房,你还要雇专人来管理和维护计算机。 当你的公司运作起来时,业务总难免会时好时坏,为了在业务好的时候也能正常运转, 你的人力和硬件都要有一定的超前配置, 这也要花钱。 更要命的是, 无论硬件还是软件厂商都会频繁推出新版本, 你若不想被技术前沿抛弃, 就得花钱费力不断更新 (当然, 也别怪人家, 你的公司运作起来后没准也得这么赚别人的钱)。如果用云计算, 情况就不一样了: 计算机和软件都可以用云计算, 业务好的时候多用一点, 业务坏的时候少用一点, 费用就跟结算煤气费一样按实际用量来算, 无需任何超前配置[注四]。 一台虚拟服务器只需鼠标轻点几下就能到位, 不象实体机器, 从下定单, 到进货, 再到调试, 忙得四脚朝天不说, 起码得好几天的时间。虚拟服务器一旦不需要了, 鼠标一点就可以让它从你眼前 (以及账单里)消失。至于软硬件的升级换代,服务器的维护管理等,那都是云计算服务商的事,跟你没半毛钱的关系。更重要的是,开公司总是有风险的, 如果你试了一两个月后发现行不通,在关门大吉的时候,假如你用的是云计算,那你只需支付实际使用过的资源。假如你走的是传统路子,买了硬件、软件,雇了专人,那很多投资可就打水漂了。浅谈云计算的一个核心理念大规模消息通信:云计算的一个核心理念就是资源和软件功能都是以服务的形式进行发布的,不同服务之间经常需要通过消息通信进行协助。由于同步消息通信的低效率,我们只考虑异步通信。如Java Message Service是J2EE平台上的一个消息通信标准,J2EE应用程序可以通过JMS来创建,发送,接收,阅读消息。异步消息通信已经成为面向服务架构中组件解耦合及业务集成的重要技术。大规模分布式存储:分布式存储的目标是利用多台服务器的存储资源来满足单台服务器所不能满足的存储需求。分布式存储要求存储资源能够被抽象表示和统一管理,并且能够保证数据读写操作的安全性,可靠性,性能等各方面要求。下面是几个典型的分布式文件系统:◆Frangipani是一个可伸缩性很好的高兴能分布式文件系统,采用两层的服务体系架构:底层是一个分布式存储服务,该服务能够自动管理可伸缩,高可用的虚拟磁盘;上层运行着Frangipani分布式文件系统。◆JetFile是一个基于P2P的主播技术,支持在Internet这样的异构环境中分享文件的分布式文件系统。◆Ceph是一个高性能并且可靠地分布式文件系统,它通过把数据和对数据的管理在最大程度上分开来获取极佳的I/O性能。◆Google File System(GFS)是Google公司设计的可伸缩的分布式文件系统。GFS能够很好的支持大规模海量数据处理应用程序。在云计算环境中,数据的存储和操作都是以服务的形式提供的;数据的类型多种多样;必须满足数据操作对性能,可靠性,安全性和简单性的要求。在云计算环境下的大规模分布式存储方向,BigTable是Google公司设计的用来存储海量结构化数据的分布式存储系统;Dynamo是Amazon公司设计的一种基于键值对的分布式存储系统,它能提供非常高的可用性;Amazon公司的Simple Storage Service(S3)是一个支持大规模存储多媒体这样的二进制文件的云计算存储服务;Amazon公司的SimpleDB是建立在S3和Amazon EC2之上的用来存储结构化数据的云计算服务。许可证管理与计费:目前比较成熟的云环境计费模型是Amazon公司提供的Elastic Compute Cloud(EC2)和Simple Storage Service(S3)的按量计费模型,用户按占用的虚拟机单元,IP地址,带宽和存储空间付费。云计算的现状云计算是个热度很高的新名词。由于它是多种技术混合演进的结果,其成熟度较高,又有大公司推动,发展极为迅速。Amazon、Google、IBM、微软和Yahoo等大公司是云计算的先行者。云计算领域的众多成功公司还包括Salesforce、Facebook、Youtube、Myspace等。Amazon使用弹性计算云(EC2)和简单存储服务(S3)为企业提供计算和存储服务。收费的服务项目包括存储服务器、带宽、CPU资源以及月租费。月租费与电话月租费类似,存储服务器、带宽按容量收费,CPU根据时长(小时)运算量收费。Amazon把云计算做成一个大生意没有花太长的时间:不到两年时间,Amazon上的注册开发人员达44万人,还有为数众多的企业级用户。有第三方统计机构提供的数据显示,Amazon与云计算相关的业务收入已达1亿美元。云计算是Amazon增长最快的业务之一。Google当数最大的云计算的使用者。Google搜索引擎就建立在分布在200多个地点、超过100万台服务器的支撑之上,这些设施的数量正在迅猛增长。Google地球、地图、Gmail、Docs等也同样使用了这些基础设施。采用Google Docs之类的应用,用户数据会保存在互联网上的某个位置,可以通过任何一个与互联网相连的系统十分便利地访问这些数据。目前,Google已经允许第三方在Google的云计算中通过Google App Engine运行大型并行应用程序。Google值得称颂的是它不保守。它早已以发表学术论文的形式公开其云计算三大法宝:GFS、MapReduce和BigTable,并在美国、中国等高校开设如何进行云计算编程的课程。IBM在2007年11月推出了“改变游戏规则”的“蓝云”计算平台,为客户带来即买即用的云计算平台。它包括一系列的自动化、自我管理和自我修复的虚拟化云计算软件,使来自全球的应用可以访问分布式的大型服务器池。使得数据中心在类似于互联网的环境下运行计算。IBM正在与17个欧洲组织合作开展云计算项目。欧盟提供了亿欧元做为部分资金。该计划名为RESERVOIR,以“无障碍的资源和服务虚拟化”为口号。2008年8月, IBM宣布将投资约4亿美元用于其设在北卡罗来纳州和日本东京的云计算数据中心改造。IBM计划在2009年在10个国家投资3亿美元建13个云计算中心。微软紧跟云计算步伐,于2008年10月推出了Windows Azure操作系统。Azure(译为“蓝天”)是继Windows取代DOS之后,微软的又一次颠覆性转型——通过在互联网架构上打造新云计算平台,让Windows真正由PC延伸到“蓝天”上。微软拥有全世界数以亿计的Windows用户桌面和浏览器,现在它将它们连接到“蓝天”上。Azure的底层是微软全球基础服务系统,由遍布全球的第四代数据中心构成。云计算的新颖之处在于它几乎可以提供无限的廉价存储和计算能力。纽约一家名为Animoto的创业企业已证明云计算的强大能力(此案例引自和讯网维维编译《纽约时报》2008年5月25日报道)。Animoto允许用户上传图片和音乐,自动生成基于网络的视频演讲稿,并且能够与好友分享。该网站目前向注册用户提供免费服务。2008年年初,网站每天用户数约为5000人。4月中旬,由于Facebook用户开始使用Animoto服务,该网站在三天内的用户数大幅上升至75万人。Animoto联合创始人Stevie Clifton表示,为了满足用户需求的上升,该公司需要将服务器能力提高100倍,但是该网站既没有资金,也没有能力建立规模如此巨大的计算能力。因此,该网站与云计算服务公司RightScale合作,设计能够在亚马逊的网云中使用的应用程序。通过这一举措,该网站大大提高了计算能力,而费用只有每服务器每小时10美分。这样的方式也加强创业企业的灵活性。当需求下降时,Animoto只需减少所使用的服务器数量就可以降低服务器支出。在我国,云计算发展也非常迅猛。2008年5月10日,IBM在中国无锡太湖新城科教产业园建立的中国第一个云计算中心投入运营。2008年6月24日,IBM在北京IBM中国创新中心成立了第二家中国的云计算中心——IBM大中华区云计算中心;2008年11月28日,广东电子工业研究院与东莞松山湖科技产业园管委会签约,广东电子工业研究院将在东莞松山湖投资2亿元建立云计算平台;2008年12月30日,阿里巴巴集团旗下子公司阿里软件与江苏省南京市政府正式签订了2009年战略合作框架协议,计划于2009年初在南京建立国内首个“电子商务云计算中心”,首期投资额将达上亿元人民币;世纪互联推出了CloudEx产品线,包括完整的互联网主机服务"CloudEx Computing Service", 基于在线存储虚拟化的"CloudEx Storage Service",供个人及企业进行互联网云端备份的数据保全服务等等系列互联网云计算服务;中国移动研究院做云计算的探索起步较早,已经完成了云计算中心试验。中移动董事长兼CEO王建宙认为云计算和互联网的移动化是未来发展方向。我国企业创造的“云安全”概念,在国际云计算领域独树一帜。云安全通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,推送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。云安全的策略构想是:使用者越多,每个使用者就越安全,因为如此庞大的用户群,足以覆盖互联网的每个角落,只要某个网站被挂马或某个新木马病毒出现,就会立刻被截获。云安全的发展像一阵风,瑞星、趋势、卡巴斯基、MCAFEE、SYMANTEC、江民科技、PANDA、金山、360安全卫士、卡卡上网安全助手等都推出了云安全解决方案。瑞星基于云安全策略开发的2009新品,每天拦截数百万次木马攻击,其中1月8日更是达到了765万余次。势科技云安全已经在全球建立了5大数据中心,几万部在线服务器。据悉,云安全可以支持平均每天55亿条点击查询,每天收集分析亿个样本,资料库第一次命中率就可以达到99%。借助云安全,趋势科技现在每天阻断的病毒感染最高达1000万次。值得一提的是,云安全的核心思想,与刘鹏早在2003年就提出的反垃圾邮件网格非常接近[1][2]。刘鹏当时认为,垃圾邮件泛滥而无法用技术手段很好地自动过滤,是因为所依赖的人工智能方法不是成熟技术。垃圾邮件的最大的特征是:它会将相同的内容发送给数以百万计的接收者。为此,可以建立一个分布式统计和学习平台,以大规模用户的协同计算来过滤垃圾邮件:首先,用户安装客户端,为收到的每一封邮件计算出一个唯一的“指纹”,通过比对“指纹”可以统计相似邮件的副本数,当副本数达到一定数量,就可以判定邮件是垃圾邮件;其次,由于互联网上多台计算机比一台计算机掌握的信息更多,因而可以采用分布式贝叶斯学习算法,在成百上千的客户端机器上实现协同学习过程,收集、分析并共享最新的信息。反垃圾邮件网格体现了真正的网格思想,每个加入系统的用户既是服务的对象,也是完成分布式统计功能的一个信息节点,随着系统规模的不断扩大,系统过滤垃圾邮件的准确性也会随之提高。用大规模统计方法来过滤垃圾邮件的做法比用人工智能的方法更成熟,不容易出现误判假阳性的情况,实用性很强。反垃圾邮件网格就是利用分布互联网里的千百万台主机的协同工作,来构建一道拦截垃圾邮件的“天网”。反垃圾邮件网格思想提出后,被IEEE Cluster 2003国际会议选为杰出网格项目在香港作了现场演示,在2004年网格计算国际研讨会上作了专题报告和现场演示,引起较为广泛的关注,受到了中国最大邮件服务提供商网易公司创办人丁磊等的重视。既然垃圾邮件可以如此处理,病毒、木马等亦然,这与云安全的思想就相去不远了。2008年11月25日,中国电子学会专门成立了云计算专家委员会,聘任中国工程院院士李德毅为主任委员,聘任IBM大中华区首席技术总裁叶天正、中国电子科技集团公司第十五研究所所长刘爱民、中国工程院院士张尧学、Google全球副总裁/中国区总裁李开复、中国工程院院士倪光南、中国移动通信研究院院长黄晓庆六位专家为副主任委员,聘任国内外30多位知名专家学者为专家委员会委员。2009年5月22日,中国电子学会将于在北京中国大饭店隆重举办首届中国云计算大会。
js紫外线
分布式系统在互联网时代,尤其是大数据时代到来之后,成为了每个程序员的必备技能之一。分布式系统从上个世纪80年代就开始有了不少出色的研究和论文,我在这里只列举最近15年范围以内我觉得有重大影响意义的15篇论文(15 within 15)。1. The Google File System: 这是分布式文件系统领域划时代意义的论文,文中的多副本机制、控制流与数据流隔离和追加写模式等概念几乎成为了分布式文件系统领域的标准,其影响之深远通过其5000+的引用就可见一斑了,Apache Hadoop鼎鼎大名的HDFS就是GFS的模仿之作;2. MapReduce: Simplified Data Processing on Large Clusters:这篇也是Google的大作,通过Map和Reduce两个操作,大大简化了分布式计算的复杂度,使得任何需要的程序员都可以编写分布式计算程序,其中使用到的技术值得我们好好学习:简约而不简单!Hadoop也根据这篇论文做了一个开源的MapReduce;3. Bigtable: A Distributed Storage System for Structured Data:Google在NoSQL领域的分布式表格系统,LSM树的最好使用范例,广泛使用到了网页索引存储、YouTube数据管理等业务,Hadoop对应的开源系统叫HBase(我在前公司任职时也开发过一个相应的系统叫BladeCube,性能较HBase有数倍提升);4. The Chubby lock service for loosely-coupled distributed systems:Google的分布式锁服务,基于Paxos协议,这篇文章相比于前三篇可能知道的人就少了,但是其对应的开源系统zookeeper几乎是每个后端同学都接触过,其影响力其实不亚于前三篇;5. Finding a Needle in Haystack: Facebook's Photo Storage:facebook的在线图片存储系统,目前来看是对小文件存储的最好解决方案之一,facebook目前通过该系统存储了超过300PB的数据,一个师兄就在这个团队工作,听过很多有意思的事情(我在前公司的时候开发过一个类似的系统pallas,不仅支持副本,还支持Reed Solomon-LRC,性能也有较多优化);6. Windows Azure Storage: a highly available cloud storage service with strong consistency:windows azure的总体介绍文章,是一篇很好的描述云存储架构的论文,其中通过分层来同时保证可用性和一致性的思路在现实工作中也给了我很多启发;7. GraphLab: A New Framework for Parallel Machine Learning:CMU基于图计算的分布式机器学习框架,目前已经成立了专门的商业公司,在分布式机器学习上很有两把刷子,其单机版的GraphChi在百万维度的矩阵分解都只需要2~3分钟;8. Resilient Distributed Datasets: A Fault-Tolerant Abstraction forIn-Memory Cluster Computing:其实就是 Spark,目前这两年最流行的内存计算模式,通过RDD和lineage大大简化了分布式计算框架,通常几行scala代码就可以搞定原来上千行MapReduce代码才能搞定的问题,大有取代MapReduce的趋势;9. Scaling Distributed Machine Learning with the Parameter Server:百度少帅李沐大作,目前大规模分布式学习各家公司主要都是使用ps,ps具备良好的可扩展性,使得大数据时代的大规模分布式学习成为可能,包括Google的深度学习模型也是通过ps训练实现,是目前最流行的分布式学习框架,豆瓣的开源系统paracell也是ps的一个实现;10. Dremel: Interactive Analysis of Web-Scale Datasets:Google的大规模(近)实时数据分析系统,号称可以在3秒相应1PB数据的分析请求,内部使用到了查询树来优化分析速度,其开源实现为Drill,在工业界对实时数据分析也是比价有影响力;11. Pregel: a system for large-scale graph processing: Google的大规模图计算系统,相当长一段时间是Google PageRank的主要计算系统,对开源的影响也很大(包括GraphLab和GraphChi);12. Spanner: Google's Globally-Distributed Database:这是第一个全球意义上的分布式数据库,Google的出品。其中介绍了很多一致性方面的设计考虑,简单起见,还采用了GPS和原子钟确保时间最大误差在20ns以内,保证了事务的时间序,同样在分布式系统方面具有很强的借鉴意义;13. Dynamo: Amazon’s Highly Available Key-value Store:Amazon的分布式NoSQL数据库,意义相当于BigTable对于Google,于BigTable不同的是,Dynamo保证CAP中的AP,C通过vector clock做弱保证,对应的开源系统为Cassandra;14. S4: Distributed Stream Computing Platform:Yahoo出品的流式计算系统,目前最流行的两大流式计算系统之一(另一个是storm),Yahoo的主要广告计算平台;15. Storm @Twitter:这个系统不多说,开启了流式计算的新纪元,几乎是所有公司流式计算的首选,绝对值得关注;
毕业 时期,英语专业论文写作成为热门,面对导师的严格要求,要想顺利通过论文答辩,拟定 一个优秀的英语专业论文题目必不可少。下面我给大家带来英语专业优秀论文题
中国人为什么不能拍 AV
会计学方面的论文题目参考 1、战略性新兴企业的财务风险和预防控制策略研究--以XXX公司为例 2、高校财务风险与控制对策研究 3、中西方环境会计问题研究的比较、
GFS的诞生来源于google日益增长的数据量的处理需求,它是一个可扩展的分布式文件系统,用于大型分布式数据密集型应用,在廉价的通用硬件上运行时提供容错机制,并
1、环境艺术设计教育观念创新论2、中国传统图式的符号化研究3、徽州文化与地域环境艺术研究4、中国传统建筑装饰语素与现代环境艺术设计5、论文化建筑环境艺术的系统设