论文阅读笔记(二)

简介:
接着上一篇《论文阅读笔记(一)》,继续记录《The Google File System》的阅读体会:

(16)主节点在启动时轮询各个子节点上包含的数据块信息,这通过正向心跳包来实现。这样做的好处是避免了主节点和子节点的信息同步问题,因为子节点的信息是随时在动态变化的,并且只有子节点才对它包含的数据块信息有话语权。

(17)操作日志包含了关键元数据更改的历史记录,定义了并发操作的逻辑时序。因此必须在多个远端机器上备份,而且只有在将操作记录写入本地硬盘和远端备份后才继续响应客户端的操作。为了减小对整个系统吞吐量的影响,主节点会对多个操作日志记录进行组批。

主节点可以通过重做操作日志恢复文件系统,且当日志超过一定大小时主节点会对此时的系统设置检查点。检查点以一棵压缩的B-树形式存在,能被直接映射到内存中,不需要额外的解析就可以用于名称空间的查找。

(18)构建一个检查点是一个耗时的操作,为了不影响接下来的更改操作,主节点会转换到一个新的日志文件,并在一个单独的线程中创建新的检查点。新的检查点包括了转换前的所有更改操作。当新检查点创建完成后,它会被写入到本地和远端机器。

(19)文件名称空间的更改(例如创建文件)是原子性操作。主节点通过名称空间加锁机制确保其原子性和正确性。操作日志也为这些操作定义了一个全局的总顺序。

(20)一次更改操作会改变数据块的元数据或内容,比如写操作和数据追加操作。更改动作必须在数据块所有的备份上进行。作者使用租约来在多个备份之间维护一个一致性的更改顺序。主节点首先将一个数据块租约授权给备份之一,这个备份称为主备份。由主备份来对数据块的所有更改操作选择一个连续的顺序。其他备份在对数据块进行更改操作时都遵循这个顺序。租约机制减小了主节点的管理负担。租约有效期位60秒,当然,主备份也可以向主节点申请续约。它们之间的请求和授权信息会捎带在心跳包中。主节点也可以在一份租约过期之前收回(比如主节点向禁止对一个正在改名的文件进行更改操作)。甚至当主节点与主备份失去连接后,只要在老的租约过期后,它也可以向一个新的备份发放租约。


 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上图来说明租约的管理:

1,客户端询问主节点哪个子节点拥有数据块的当前租约以及其他备份的位置。若没有子节点拥有租约,主节点就选择一个子节点,发放租约给它。

2,主节点回复主备份的标识符以及从备份的位置信息给客户端。客户端缓存这些信息,用于将来的更改操作。只在主备份不可达时或主备份不在拥有租约时,客户端才再次询问主节点。

3,客户端将所有数据推向所有的备份节点,这可以任何顺序进行。每个子节点会以LRU缓存的形式存储这些数据。

4,一旦所有的备份节点都声明已经接收到这些数据,客户端就向主备份发出一个写操作请求。主备份会对它接收到的所有操作信息赋予一耳光连续的序号,然后以此顺序对本地数据进行操作。

5,主备份将写操作请求广播给所有其他从备份节点。每个从备份节点按照主备份定义的顺序进行操作。

6,从备份完成操作后,向主备份发出回复信息。

7,主备份再向客户端发出回复信息。任何备份节点上发生错误,都会向客户端报告。若发生错误,客户端可以要求重试。

(21)作者对数据流和控制流进行了解耦操作,控制流从客户端流向主备份,然后到所有的从备份,而数据是以一个顺序链的形式(而不是按某些拓扑形式)在子节点间流动。目的是充分利用每个机器的网络带宽,避免产生网络瓶颈。每个机器都尽快将数据传给最近的没有接收过数据的机器,而这个距离可以通过IP地址来精确计算。

(22)GFS提供了一个原子性的记录追加操作。在传统的写文件操作中,用户指定数据要写入的偏移位置,而这对于同一位置的并发写操作来说是不可线性化的。而对于记录追加来说,用户只指定数据,GFS会选择一个偏移位置并原子性地至少将记录追加一次到文件中,并返回此偏移值给用户。

(23)当将要追加的数据送到文件的最后一个数据块的所有备份处后,客户给主备份发出数据追加的请求,此时主备份会检查若将记录追加到当前数据块后,是否会超出块的最大长度(64M).若会超过,主备份将当前数据块填充满,并通知从备份也这么做,然后向客户报告操作应该在下一个数据块处重试。若不会超过,当然就很简单了。若记录追加操作在任何一个备份节点处失败,客户端会重试此操作。

(24)镜像操作是在几乎不影响其他更改操作的同时,对一个文件或一棵目录树进行拷贝,主要用于在做更改操作前设置检查点,以便以后回滚或提交。和AFS一样使用了写时复制的技术来实现镜像。

(25)当主节点收到镜像的操作请求后,它首先收回要镜像的文件所包含的数据块的所有租约,这确保接下来任何对这些数据块的写操作多必须询问主节点,以便查找租约所有者。这就给主节点创建数据块拷贝的一个机会了。当租约收回或过期后,主节点将操作日志到硬盘上。然后通过复制源文件或目录树的元数据,从而将此日志记录作用到内存中的状态。新创建的镜像文件指向源文件一样的数据块。在镜像操作完成后,客户端首次想写数据块C时会向主节点询问当前的租约所有者。主节点会发现数据块C的引用计数大于1.它会选择一个新的数据块句柄C’,然后通知所有拥有数据块C的备份节点创建一个名为C’的数据块。然后主节点发放C’的租约,回复给客户端。


本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/11/14/1333869.html,如需转载请自行联系原作者
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
人工智能 Kubernetes 安全
阿里云 ACK 新升级,打造智算时代的现代化应用平台
阿里云 ACK 新升级,打造智算时代的现代化应用平台
71515 10
|
9月前
|
Web App开发 人工智能 自然语言处理
2025年企业AI客服系统建设费用全解析:中小企业如何控制预算?
2025年,AI客服转向场景适配与成本可控,中小企业如何选型?本文解析主流系统费用与选型策略,推荐瓴羊Quick Service等高性价比方案,助力企业以合理预算实现智能服务升级。
|
前端开发 安全 UED
HTML 链接怎么写才能好看又拥有最好的性能
要编写既美观又性能优良的 HTML 链接,请遵循以下最佳实践:使用语义化 `<a>` 标签并优化链接文本,使其描述性和简洁;使用 `rel="noopener noreferrer"` 和 `target="_blank"` 属性提高安全性和性能;通过 CSS 美化链接样式;合理控制链接数量,避免分散用户注意力;使用图标增强视觉效果;确保链接对所有用户都可访问;利用 CDN 提升加载速度;最后,测试页面性能以保证整体加载速度。
|
数据采集 人工智能 Serverless
AI 克隆声音,只需 3 分钟(附最全教程)
文章介绍了GPT-Sovits,一个开源的生成式语音模型,因其在声音克隆上的高质量和简易性而受到关注。阿里云函数计算(Function Compute)提供了一个快速托管GPT-Sovits的方法,让用户无需管理服务器即可体验和部署该模型。通过函数计算,用户可以便捷地搭建基于GPT-Sovits的文本到语音服务,并享受到按需付费和弹性扩展的云服务优势。此外,文章还列举了GPT-Sovits在教育、游戏、新能源等多个领域的应用场景,并提供了详细的步骤指导,帮助用户在阿里云上部署和体验GPT-Sovits模型。
37264 8
|
存储 边缘计算 前端开发
边缘计算与云边协同
边缘计算是指在靠近物或数据源头的一侧,融合网络、计算、存储、应用核心能力的分布式开放平台,就近提供边缘计算服务,满足应用的实时性和数据保护等方面的需求。
805 56
|
自然语言处理 监控 供应链
项目十大管理(三)进度管理
项目进度管理是指在项目实施过程中,对各阶段的进展程度和项目最终完成的期限所进行的管理。它的目的是保证项目能在满足其时间的约束条件的前提下实现项目的总体目标。也就是**把项目按时完成,所必须的管理过程**
1083 1
项目十大管理(三)进度管理
|
机器学习/深度学习 自然语言处理 搜索推荐
深度学习中的自注意力机制:原理与应用
在深度学习领域,自注意力机制(Self-Attention Mechanism)已经成为一种强大的工具,它允许模型在处理序列数据时更加高效和灵活。本文将深入探讨自注意力机制的工作原理、数学基础以及在不同应用场景下的表现。我们将通过具体案例分析,展示自注意力如何提升神经网络对长距离依赖的捕捉能力,以及它在自然语言处理(NLP)、计算机视觉(CV)等领域的应用成效。
1361 0
|
前端开发 JavaScript 安全
深度解析跨域技术:打破界限的前沿探索
本文深度解析了跨域问题,首先介绍了同源策略的基本概念,阐述了为何浏览器限制跨域请求。接着,详细探讨了常见的跨域解决方案,包括JSONP、CORS和代理,并指出它们各自的优缺点。随后,文章提出了跨域问题的新趋势,包括WebAssembly、WebSocket和ESM等新兴技术的应用,展示了它们对跨域挑战的新思路。最后,结语强调了持续关注新技术趋势的重要性,以更高效地构建安全、稳定且灵活的Web应用程序。
833 1
|
Ubuntu Linux 虚拟化
ubunt配置samba服务器,匿名访问
ubunt配置samba服务器,匿名访问
1125 1
ubunt配置samba服务器,匿名访问