《云计算》学习笔记3——Google的云计算原理与应用(分布式锁服务——Chubby)
- 格式:pdf
- 大小:945.09 KB
- 文档页数:13
关于云计算的读书笔记云计算,这个在当今科技领域中频繁出现的词汇,正以其强大的影响力改变着我们的生活和工作方式。
在阅读了相关的书籍和资料后,我对云计算有了更深入的理解和认识。
云计算,简单来说,就是将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。
它就像是一个超级强大的计算工厂,用户不再需要自己购买昂贵的硬件设备和软件,只需要通过网络连接,就能按需使用各种计算资源。
云计算的特点十分显著。
首先是超大规模。
云计算的服务器数量众多,能够提供强大的计算能力。
这使得处理海量数据变得轻而易举,无论是大型企业的数据分析,还是科学研究中的复杂计算,都能在云计算平台上高效完成。
其次是虚拟化。
用户无需关心具体的硬件设施,只需要关注自己所需要的服务。
这就好像你在住酒店,不需要关心酒店的电路、管道是如何铺设的,只需要享受舒适的房间和服务。
再者是高可靠性。
云计算采用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,即使个别服务器出现故障,也不会影响整体的服务。
另外,通用性和高可扩展性也是其重要特点。
云计算不针对特定的应用,能够同时支撑不同的应用运行,并且可以根据用户的需求轻松地扩展和收缩资源。
云计算的服务模式主要有三种:IaaS(基础设施即服务)、PaaS(平台即服务)和 SaaS(软件即服务)。
IaaS 提供服务器、存储和网络等基础设施服务,用户可以在上面部署和运行自己的操作系统和应用程序。
就好比你租了一个空房子,里面的装修和布置都由你自己来决定。
PaaS 则提供了平台环境,包括操作系统、数据库、中间件等,用户可以在这个平台上开发、测试和部署自己的应用。
这类似于你租了一个带基本装修的房子,你只需要添置家具和软装就能入住。
SaaS则直接为用户提供了应用程序,用户可以通过网络使用这些应用,无需自己安装和维护。
比如你直接入住了一个设施齐全、服务周到的酒店。
云计算的应用场景非常广泛。
引言概述:云计算作为当今信息技术领域的热点技术之一,在现代社会中,已经成为了各行各业不可或缺的一部分。
作为全球最大的互联网公司之一,Google的云计算平台在业界有着极高的声誉。
本文将重点介绍Google云计算原理的相关内容,包括其架构、安全性、可扩展性以及机器学习等方面,旨在使读者对Google云计算平台有更深入的了解。
正文内容:一、Google云计算架构1.数据中心架构a.Google数据中心规模及分布情况b.数据中心的层次结构和组成元素c.数据中心网络架构及其优势2.虚拟化技术a.介绍Google在虚拟化领域的最新技术和发展b.虚拟机管理及资源调度c.虚拟化在Google云计算中的作用和优势3.分布式存储系统a.Google文件系统(GFS)的原理和优势b.分布式文件系统和对象存储的比较c.实现大规模数据处理的分布式文件系统架构二、Google云计算平台的安全性1.数据隔离与保护a.数据隔离的重要性及Google的解决方案b.访问控制和身份认证机制c.数据加密和解密技术2.系统和网络安全性a.Google网络安全架构的特点和设计原则b.服务器和虚拟机的安全管理c.防火墙和入侵检测系统的应用3.数据备份和恢复a.Google云计算平台的数据备份策略b.容错和故障恢复机制c.数据冗余和镜像技术的应用三、Google云计算平台的可扩展性1.水平扩容a.数据中心资源的动态调整和分配b.网络和存储的动态扩容策略c.负载均衡和自动扩展机制2.弹性计算a.弹性资源管理和优化b.虚拟机的自动迁移和负载均衡c.弹性计算的成本效益和应用案例3.可用性和可靠性a.服务水平协议(SLA)的实现和管理b.系统冗余和容错技术在Google云计算中的应用c.故障预测和自动恢复机制四、Google云计算平台上的机器学习1.云端机器学习平台a.机器学习在云计算平台中的应用场景b.Google云计算平台提供的机器学习服务和工具c.云端机器学习算法和模型的训练与部署2.数据处理和分析a.大规模数据处理和分析的需求b.Google云计算平台支持的大数据处理工具和框架c.数据流处理和实时分析的实现原理3.与机器学习a.深度学习和的关系b.GoogleTensorProcessingUnit(TPU)的介绍和应用c.机器学习在Google云计算平台上的最新进展五、总结通过对Google云计算原理的详细介绍,我们可以看到Google 在云计算领域的核心竞争力和创新能力。
Google_云计算三大论文中文版Google公司是全球最大的搜索引擎和云计算服务提供商之一。
Google的云计算架构和算法在业界受到广泛关注,其通过一系列论文来介绍这些技术,并分享了它们的最佳实践。
本文将针对Google公司发表的三篇云计算论文(论文名称分别为《MapReduce:Simplified Data Processing on Large Clusters》、《The Google File System》、《Bigtable: A Distributed Storage System for Structured Data》),进行分类讲解,以帮助读者更好地了解云计算领域的相关技术。
一、MapReduce:Simplified Data Processing on Large ClustersMapReduce论文是Google公司云计算领域中的重要代表作之一,它的作者是Jeffrey Dean和Sanjay Ghemawat。
MAPREDUCE是一种大规模数据处理技术,其主要目的是在一个大型集群中分Distribute and Parallel Execution(分布式和并行执行)处理任务。
MapReduce将计算逻辑分解成两个部分- Map阶段和Reduce阶段。
在Map阶段,数据被按键提取;在Reduce阶段,数据被收集以计算结果。
这两个阶段可以在许多物理节点上并行执行,大大提高了计算效率。
此外,该论文引入了GFS分布式文件系统,为MapReduce提供了强大的文件系统支持。
二、The Google File SystemGFS是由Sanjay Ghemawat、Howard Gobioff和Shun-TakLeung共同编写的一篇论文。
它旨在解决分布式文件系统上的问题,以应对Google的大规模数据集和两台甚至三台以上的机器发生故障的情况。
GFS可以处理超过100TB以上的数据集,加速数据读取和写入,处理大规模数据存储集群。
移动云计算导论复习资料1选择题1。
云计算是对( D )技术的发展与运用A. 并行计算B网格计算C分布式计算D三个选项都是2。
将平台作为服务的云计算服务类型是( B )A。
IaaS B.PaaS C。
SaaS D。
三个选项都不是3。
将基础设施作为服务的云计算服务类型是( A )A. IaaSB.PaaSC.SaaSD.三个选项都不是4. IaaS计算实现机制中,系统管理模块的核心功能是( A )A。
负载均衡 B 监视节点的运行状态C应用API D. 节点环境配置5. 云计算体系结构的( C )负责资源管理、任务管理用户管理和安全管理等工作A。
物理资源层 B. 资源池层C。
管理中间件层 D. SOA构建层6。
云计算按照服务类型大致可分为以下类(A、B、C )A。
IaaS B。
PaaS C. SaaS D。
效用计算7. 下列不属于Google云计算平台技术架构的是( D )A. 并行数据处理MapReduce B。
分布式锁ChubbyC。
结构化数据表BigTable D.弹性云计算EC28。
( B )是Google提出的用于处理海量数据的并行编程模式和大规模数据集的并行运算的软件架构.A. GFSB.MapReduce C。
Chubby D.BitTable9。
Mapreduce适用于( D )A。
任意应用程序B。
任意可在windows servet2008上运行的程序C。
可以串行处理的应用程序 D. 可以并行处理的应用程序10。
MapReduce通常把输入文件按照( C )MB来划分A. 16 B32 C64 D12811. 与传统的分布式程序设计相比,Mapreduce封装了( ABCD )等细节,还提供了一个简单而强大的接口.A。
并行处理B。
容错处理C。
本地化计算 D. 负载均衡12。
( D )是Google的分布式数据存储于管理系统A。
GFS B. MapReduce C。
Chubby D.Bigtable13. 在Bigtable中,( A )主要用来存储子表数据以及一些日志文件A。
《云计算技术与应用》在线考试复习题及参考答案第一题问题:请简要解释云计算的定义和主要特点。
参考答案:云计算是指通过互联网等网络进行数据的存储、管理和处理的一种计算方式。
其主要特点包括:1. 虚拟化:云计算利用虚拟化技术将计算资源进行抽象和隔离,实现资源的灵活分配和利用。
2. 弹性扩展:云计算可以根据实际需求动态地调整计算资源的规模,实现按需分配和释放。
3. 高可用性:云计算通过数据的冗余备份和多节点部署,提供高可用性的计算服务。
4. 资源共享:云计算通过多租户的方式,将计算资源共享给多个用户,提高资源利用率和经济效益。
5. 自助服务:云计算提供自助式的服务请求,用户可以根据需要自主选择和配置所需的计算资源。
第二题问题:请列举云计算的三种部署模式并简要说明其特点。
参考答案:云计算的三种部署模式分别是:公有云、私有云和混合云。
1. 公有云:公有云是由云服务提供商建立和管理的云平台,为广大用户提供公共的计算资源和服务。
其特点是可按需使用,无需自行构建和维护基础设施,但安全性和隐私性相对较低。
2. 私有云:私有云是由用户自行建立和管理的云平台,用于满足特定组织或企业的需求。
其特点是具备较高的安全性和隐私性,但需要投入较大的成本和资源进行建设和维护。
3. 混合云:混合云是公有云和私有云的混合部署模式,将公共云和私有云相互连接起来,形成统一的云计算平台。
其特点是可以按需扩展计算资源,同时兼顾安全性和灵活性。
第三题问题:请简述云计算的优势和挑战。
参考答案:云计算的优势包括:1. 成本节约:云计算通过资源共享和弹性扩展,可以降低组织和个人的计算成本。
2. 灵活性和可扩展性:云计算可以根据实际需求动态地调整计算资源的规模,提供灵活的计算能力。
3. 高可用性和容灾性:云计算通过数据冗余备份和多节点部署,可以保证计算服务的高可用性和容灾能力。
4. 资源共享和协同工作:云计算可以将计算资源共享给多个用户,提高资源利用率和协同工作的效率。
Google云计算原理Google云计算原理1.介绍1.1 概述Google云计算是一项基于云计算技术的服务,用户可以通过互联网访问Google云上的各种计算资源和服务,包括计算、存储、数据库、机器学习等。
1.2 优势- 弹性扩展:Google云计算支持根据需求动态扩展计算资源,以适应不同的业务需求。
- 可靠性:Google拥有全球范围的数据中心,提供高可用性和持久性的计算资源。
- 安全性:Google云计算提供多重安全保护措施,包括数据加密、身份验证和访问控制等,确保用户数据的安全。
- 灵活性:Google云计算提供多种计算模型和编程接口,方便用户根据需求选择最适合的解决方案。
2.计算模型2.1 虚拟机实例- 虚拟机实例是最基本的计算资源,用户可以根据需求创建和管理虚拟机实例,自定义大小、操作系统和软件配置等。
- 虚拟机实例的计费方式有按需计费和预付费两种模式,用户可以根据实际需求选择适合的计费方式。
2.2 容器- 容器是一种轻量级的计算单元,可以在不同的环境中运行,比如虚拟机、物理机或者云平台。
- Google提供的容器服务(Google Kubernetes Engine)可以帮助用户管理和调度容器,实现高效的容器化部署。
2.3 服务器无状态函数- 服务器无状态函数是一种无需预留或管理服务器的计算模型,用户只需要编写函数代码并到云平台,即可在需要时触发函数执行。
- Google提供的服务器无状态函数服务(Google Cloud Functions)可以自动扩展和管理函数实例,提供快速、无缝的函数执行环境。
3.存储服务3.1 对象存储- 对象存储是一种提供可扩展、高可用性的存储服务,用户可以将文件以对象的形式存储在云上,通过HTTP或者HTTPS访问。
- Google提供的对象存储服务(Google Cloud Storage)可以用于存储和管理各种类型的数据,包括图片、视频、日志文件等。
谷歌云计算的发展历程
谷歌云计算于2008年正式进入市场,开始提供云计算服务。
最初,谷歌云计算主要针对开发者和企业用户提供基础设施服务,包括虚拟服务器、存储、数据库等。
随着时间的推移,谷歌不断扩大其云计算业务,并推出了更多的产品和服务。
2010年,谷歌推出了App Engine,该服务允
许开发者构建和托管Web应用程序。
2012年,谷歌推出了谷
歌云存储,提供可扩展的对象存储解决方案。
2014年,谷歌推出了Google Compute Engine,允许用户在虚
拟机上运行应用程序。
同年,谷歌还推出了Container Engine,提供容器化应用程序的托管服务。
2015年,谷歌推出了Cloud Bigtable,提供高可扩展性的NoSQL数据库服务。
2018年,谷歌通过收购Elasticsearch服务商Elastic让其云计
算业务得到了增强。
谷歌还推出了Anthos,一个跨云平台的
应用程序管理解决方案,帮助用户在不同的云上部署和管理应用程序。
2019年,谷歌推出了Cloud Run,一项完全托管的服务器无关
的计算平台,支持使用任何语言和框架构建和运行容器化的Web应用程序。
随着谷歌云计算持续创新和不断推出新产品,其在云计算市场的地位也在不断增强。
谷歌云计算在提供安全、可靠、高性能
的云计算服务方面具有竞争优势,并为企业客户提供更好的创新和数字化转型解决方案。
G o o g l e云计算技术架构本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.MarchGoogle 云计算技术架构:Google 云计算技术架构应用均依赖于四个基本组件1.分布式文件存储(GFS),2,并行数据处理模型(MapReduce).3分布式锁(Chubby).4,结构化数据表(BigTable).Chubby的作用:1.为GFS提供锁服务,选择Master节点:记录Master的相关描述信息;2:通过独占锁记录Chunk Server的活跃情况;3:为BigTable提供锁服务,记录子表信息(如子表文件信息,子表分类信息,子表服务信息);4:记录MapReduce的任务信息;5:为第三方提供锁服务与文件存储.GFS的作用:1.存储Bigtable的子表文件,2:为第三方应用提供大尺寸文件存储功能;3:文件读操作流程(API与Mater通信,获取文件元信息,根据指定的读取位置与读取长度,API发动兵发起操作,分别从若干ChunkServer上读取数据,API组装所得数据,返回结果.BigTable的作用:1.为Google云计算应用(或第三方应用)提供数据结构化存储功能;2:类似于数据库;3:为应用提供简单数据查询功能(不支持联合查询);4:为MapReduce提供数据源或者数据结果存储. BigTable的存储于服务请求的响应:1.换分为子表存储,每一个子表对应一个子表文件,子表文件存储于GFS上;2:bigTable通过元数据组织子集;3:每个子集都被分配给一个子表服务器;4:一个子表服务器可同时分配多个子表;4:子表服务器负责对外提供服务,响应查询请求.MapReduce的作用:对BigTable中的数据进行并行计算处理;2使用BigTable或者GFS存储计算结果Google Analytics:免费的企业级网络分析解决方案;2:帮助企业了解网站流量和营销效果;3:能以灵活的反噬(各类报表)查看并分析流量数据Google网站流量分析的基本功能:统计网站的基本数据,包括会话,综合浏览量,点击量和字节流量;2:分析网站页面关注度,帮助企业调整或者增删页面;3:分析用户浏览路径,优化页面布局;4:分析用户访问来源连接,提供广告投资回报;5:分析用户访问环境,帮助美化页面EC2:Eastic Compute Cloud)简言之,EC2就是一部具有无限采集能力的虚拟计算机,用户能够用来执行一些处理任务EC2的主要特征:1:灵活性,可以自行配置的实例类型,数量,还可以选择实例运行的地理位置,可以根据影虎的需求随时改变实例的使用数量;2:低成本:SSH,可配置的防火墙机制,监控等;3:易用性:用户可以根据亚马逊提供的模块自由构建自己的应用程序,同时EC2还会对用户的服务请求自动进行负载均衡;3:容错性,弹性IP简单队列服务SQS:目标:解决低耦合系统间的通信问题,支持分布式计算机系统之间的工作流,简单队列服务SQS:特点:简单,无处不在简单队列服务SQS:的机制:冗余存储,给予加权随机分布的消息取样,并发管理和故障排除,消息的可见性超时值与生命周期SDB与S3的区别:S3是专为大型,费结构化的数据块设计的;SimpleDB是为复杂的,结构化数据建立的,支持数据的查找,删除,插入等操作2。
一、分布式锁服务今天,要接触有些难理解的知识点了,这也许就是涉及到当时赵致琢老师强调的在中国没人能有资格讲和讲得清的一块—分布式算法。
说实话,这块看了两遍了,到现在还不敢说自己人懂了一半啊·!ChubbyØGoogle设计的提供粗粒度锁服务(???)的一个文件系统,它基于松耦合分布式系统,解决了分布的一致性问题——一种建议性的锁(相信看过《UNIX环境下高级编程》的人对建议性的锁这个名词不会陌生),而不是一种强制性的锁:具有更大的灵活性ØGFS使用Chubby选取一个GFS主服务器ØBigtable使用Chubby指定一个主服务器并发现、控制与其相关的子表服务器ØChubby还可以作为一个稳定的存储系统存储包括元数据在内的小数据ØGoogle内部还使用Chubby进行名字服务(Name Server)想像一下,要在大规模集群的条件下,保证所有指令和数据的一致性(即:在初始状态相同情况下,要求各结点接收到同样相同指令,且最终状态一致)会遇到什么样的困难?——这也许正是分布式算法要发挥作用的境地,很多时候设计的算法根本不可能会是十全十美。
Chubby中即要用到Paxos算法1、Paxos算法试想想:该方案存在什么缺陷????试图由以下三点来保证数据的一致性:(1)决议只有被proposers提出后才能批准(2)每次只批准一个决议(3)只有决议确定被批准后learners才能获取这个决议系统的约束条件:p1:每个acceptor只接受它得到的第一个决议p1表明每个可以接收到多个决议,为区分,对每个决议进行编号,后得到的决议编号要大于先到的编号;p1不是很完备!!(??一个问题可能是:对于每个结点,其收到的所谓第一个编号是否都是一样??)P2:一旦某个决议通过,之后通过的决议必须和该决议保持一致P1+P2——>P2a:一旦某个决议V得到通过,之后任何acceptor再批准的决议必须是VP2a和P1是有矛盾的!(我的理解是:有可能这个V不是某个结点收到的第一个决议)P2a——》P2b:一旦某个决议V得到通过,之后任何proposer再提出的决议必须是VP1和P2b保证条件(2),彼此之间不存在矛盾。
但是P2b很难通过一种技术手段来实现它,因此提出了一个蕴涵P2b的约束P2cP2b——》P2c:如果一个编号为n的提案具有值v,那么存在一个“多数派”,要么它们中没有谁批准过编号小于n的任何提案,要么它们进行的最近一次批准具有值v决议通过的两个阶段:准备阶段:proposers选择一个提案并将它的编号设为n,然后将它发送给acceptors中的一个―多数派‖。
Acceptors收到后,如果提案的编号大于它已经回复的所有消息,则acceptors 将自己上次的批准回复给proposers,并不再批准小于n的提案(那么,可以问问:如果小于它已经回复的所有消息呢?这个思考之后,对算法的流程就有个印象——但似乎这样一想,这中间的延迟倒很是个问题,看来,这个算法还是未弄懂!!)批准阶段:当proposers接收到acceptors 中的这个―多数派‖的回复后,就向回复请求的acceptors发送accept请求,在符合acceptors一方的约束条件下,acceptors收到accept 请求后即批准这个请求解决一致性问题算法:为了减少决议发布过程中的消息量,acceptors将这个通过的决议发送给learners的一个子集,然后由这个子集中的learners去通知所有其他的learners;特殊情况:如果两个proposer在这种情况下都转而提出一个编号更大的提案,那么就可能陷入活锁。
此时需要选举出一个president,仅允许president提出提案2、Chubby的系统设计Chubby中还添加了一些新的功能特性;这种设计主要是考虑到以下几个问题:1、开发者初期很少考虑系统的一致性,但随着开发进行,问题会变得越来越严重。
单独的锁服务可以保证原有系统架构不会发生改变,而使用函数库很可能需要对系统架构做出大幅度的改动2、系统中很多事件发生是需要告知其他用户和服务器,使用一个基于文件系统的锁服务可以将这些变动写入文件中。
有需要的用户和服务器直接访问这些文件即可,避免因大量系统组件之间事件通信带来系统性能下降3、基于锁的开发接口容易被开发者接受。
虽然在分布式系统中锁的使用会有很大的不同,但是和一致性算法相比,锁显然被更多的开发者所熟知Paxos算法实现过程中需要一个“多数派”就某个值达成一致,本质上就是分布式系统中常见的quorum机制;为保证系统高可用性,需要若干台机器,但使用单独锁服务的话一台机器也能保证这种高可用性Chubby设计过程中一些细节问题值得关注:在Chubby系统中采用了建议性的锁而没有采用强制性的锁。
两者的根本区别在于用户访问某个被锁定的文件时,建议性的锁不会阻止访问,而强制性的锁则会阻止访问,实际上这是为了方便系统组件之间的信息交互另外,Chubby还采用了粗粒度(Coarse-Grained)锁服务而没有采用细粒度(Fine-Grained)锁服务,两者的差异在于持有锁的时间,细粒度的锁持有时间很短3、Chubby中的Paxos算法(个人疑问:从上面来看,似乎上面给我们的启发是——我们无需在整个系统的每个环节保持数据和指令的一致性,只需其操作日志是一致,那么说明其操作一致??)ØChubby设计者借鉴了Paxos的两种解决机制:给协调者指派序号或限制协调者可以选择的值F指派序号的方法–(1)在一个有n个副本系统中,为每个副本分配一个id ,其中0≤ir≤n-1。
则副本的序号,其中k的初始值为0 ("则副本的序号,其中k的初始值为0 "这句话可能写得有点问题,这里没看懂)–(2)某个副本想成为协调者之后,它就根据规则生成一个比它以前的序号更大的序号(实际上就是提高k的值),并将这个序号通过propose消息广播给其他所有的副本–(3)如果接受到广播的副本发现该序号比它以前见过的序号都大,则向发出广播的副本返回一个promise消息,并且承诺不再接受旧的协调者发送的消息。
如果大多数副本都返回了promise消息,则新的协调者就产生了F限制协调者可以选择的值–Paxos强制新的协调者必须选择和前任相同的值ØChubby做了一个重要优化来提高系统效率—在选择某一个副本作为协调者之后就长期不变,此时协调者就被称为主服务器(Master)F客户端的数据请求由主服务器完成,Chubby保证在一定时间内有且仅有一个主服务器,这个时间就称为主服务器租约期(Master Lease)F客户端需要确定主服务器的位置,可向DNS发送一个主服务器定位请求,非主服务器的副本将对该请求做出回应Ø Chubby对于Paxos论文中未提及的一些技术细节进行了补充,所以Chubby的实现是基于Paxos,但其技术手段更加的丰富,更具有实践性4、Chubby文件系统Chubby系统本质上就是一个分布式的、存储大量小文件的文件系统,它所有的操作都是在文件的基础上完成ØChubby最常用的锁服务中,每一个文件就代表一个锁,用户通过打开、关闭和读取文件,获取共享(Shared)锁或独占(Exclusive)锁Ø选举主服务器过程中,符合条件的服务器都同时申请打开某个文件并请求锁住该文件Ø成功获得锁的服务器自动成为主服务器并将其地址写入这个文件夹,以便其他服务器和用户可以获知主服务器的地址信息ØChubby的文件系统和UNIX类似F例如在文件名―/ls/foo/wombat/pouch‖中,ls代表lock service,这是所有Chubby文件系统的共有前缀;foo是某个单元的名称;/wombat/pouch则是foo这个单元上的文件目录或者文件名Ø Google对Chubby做了一些与UNIX不同的改变F例如Chubby不支持内部文件的移动;不记录文件的最后访问时间;另外在Chubby 中并没有符号连接(Symbolic Link,又叫软连接,类似于Windows系统中的快捷方式)和硬连接(HardLink,类似于别名)的概念Ø在具体实现时,文件系统由许多节点组成,分为永久型和临时型,每个节点就是一个文件或目录。
节点中保存着包括ACL(Access Control List,访问控制列表)在内的多种系统元数据o5、通信协议故障处理客户端租约过期Ø客户端向主服务器发出一个KeepAlive请求(上图1)Ø如果有需要通知的事件时则主服务器会立刻做出回应,否则等到客户端的租约期C1快结束的时候才做出回应(图2),并更新主服务器租约期为M2Ø客户端接到回应后认为该主服务器仍处于活跃状态,于是将租约期更新为C2并立刻发出新的KeepAlive请求(图3)Ø宽限期内,客户端不会立刻断开其与服务器端的联系,而是不断地做探询,当它接到客户端的第一个KeepAlive请求(图4)时会拒绝(图5)Ø客户端在主服务器拒绝后使用新纪元号来发送KeepAlive请求(图6)Ø新的主服务器接受这个请求并立刻做出回应(图7)如果客户端接收到这个回应的时间仍处于宽限期内,系统会恢复到安全状态,租约期更新为C3。
如果在宽限期未接到主服务器的相关回应,客户端终止当前的会话主服务器出错正常情况下旧的主服务器出现故障后系统会很快地选举出新的主服务器,新选举需要经历以下九个步骤:(1)产生一个新的纪元号以便今后客户端通信时使用,这能保证当前的主服务器不必处理针对旧的主服务器的请求(2)只处理主服务器位置相关的信息,不处理会话相关的信息(3)构建处理会话和锁所需的内部数据结构(4)允许客户端发送KeepAlive请求,不处理其他会话相关的信息(5)向每个会话发送一个故障事件,促使所有的客户端清空缓存(6)等待直到所有的会话都收到故障事件或会话终止(7)开始允许执行所有的操作(8)如果客户端使用了旧的句柄则需要为其重新构建新的句柄(9)一定时间段后(1分钟),删除没有被打开过的临时文件夹——如果这一过程在宽限期内顺利完成,则用户不会感觉到任何故障的发生,也就是说新旧主服务器的替换对于用户来说是透明的,用户感觉到的仅仅是一个延迟Ø系统实现时,Chubby还使用了一致性客户端缓存(Consistent Client-Side Caching)技术,这样做的目的是减少通信压力,降低通信频率F在客户端保存一个和单元上数据一致的本地缓存,需要时客户可以直接从缓存中取出数据而不用再和主服务器通信F当某个文件数据或者元数据需要修改时,主服务器首先将这个修改阻塞;然后通过查询主服务器自身维护的一个缓存表,向对修改的数据进行了缓存的所有客户端发送一个无效标志(Invalidation)F客户端收到这个无效标志后会返回一个确认(Acknowledge),主服务器在收到所有的确认后才解除阻塞并完成这次修改——这个过程的执行效率非常高,仅仅需要发送一次无效标志即可,因为对于没有返回确认的节点,主服务器直接认为其是未缓存6、正确性与性能一致性Ø每个Chubby单元是由五个副本组成的,这五个副本中需要选举产生一个主服务器,这种选举本质上就是一个一致性问题。