GFS中Master的容错
上一篇日志 中提到Master中维护了元数据(即,描述数据的数据)。那么元数据包括哪些呢?
① Name Space,即文件系统的目录结构
② Chunk 与 文件名的映射 (因为一个文件会被划分成多个Chunk*,因此需要一个映射来告诉系统,这个文件对应哪几个chunk)
③ Chunk副本的位置信息 (一个chunk会存储三个副本*)
① 和 ② 的容错是通过“操作日志”来完成的。也就说存在operation log里。当系统发生故障时,通过分析log就可以知道当时存了哪些文件,这些文件又被分成了哪些个chunks
③是存储在Chunk Server上的,当发生故障时,进行磁盘恢复即可。
* 三个副本,意思是一份数据存储三份。如此一来,看似磁盘利用率不高,但对比与磁盘的廉价成本以及算法容错的复杂性,这无疑是一种简单有效且实现难度最小的方法。
** chunk。在GFS中,一个文件被划分成多个chunk,每个chunk的默认大小是64MB。而每个chunk又会被划分为多个block,每个block为64K。并且,每个Block都会对应32bit的校验码。当读取某个chunk中的某个block时,如果与校验码产生出入,则表示此block存在错误,那么将抛弃这个chunk,转而读取另一个chunk副本(每一个chunk都被存储了三次,所以这个坏了还可以读别的)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构