kfs代码研究(四、LayoutManager分析)
来源:互联网 发布:2017年win10平板 知乎 编辑:程序博客网 时间:2024/06/01 09:14
LayoutManager.cc:
介绍几个主要的函数
LayoutManager::AddNewServer:
添加新chunk server到chunk server的数组中
1、如果发现chunkserver数组中和新加入到server相同,调用ServerDown把老的标志为
down
2、ServerDown会更新rank数组的信息
3、接着吧chunk server信息放到mChunkServers数组中
4、接下来遍历要加入的这个chunk server中的所有chunk,如果不在mChunkToServerMap
中,则标志为失效的chunk,并做统计。
如果在mChunkToServerMap中,但是mChunkToServerMap中的chunk信息已经有了该
server,则chunk中的server信息可能失效。
如果chunk的版本号小于mChunkToServerMap中的chunk的版本号,这标志chunk
信息为失效。
5、添加有效块集合和无效块集合
6、通知chunk server chunk版本号变化
LayoutManager::AllocateChunk:
分配策略:假如有n个机架,m个server,chunk冗余数位k,则随机选择n个server
,再找出这个n个server对应的机架,再找出这些机架中所有的server,然后选择k个
server。
LayoutManager::AllocateChunkForAppend:
1、找到最后分配给文件的chunk,如果请求的偏移量必须小于最后分配的chunk的偏移量
2、把分配chunk的请求发送到chunk server
介绍几个主要的函数
LayoutManager::AddNewServer:
添加新chunk server到chunk server的数组中
1、如果发现chunkserver数组中和新加入到server相同,调用ServerDown把老的标志为
down
2、ServerDown会更新rank数组的信息
3、接着吧chunk server信息放到mChunkServers数组中
4、接下来遍历要加入的这个chunk server中的所有chunk,如果不在mChunkToServerMap
中,则标志为失效的chunk,并做统计。
如果在mChunkToServerMap中,但是mChunkToServerMap中的chunk信息已经有了该
server,则chunk中的server信息可能失效。
如果chunk的版本号小于mChunkToServerMap中的chunk的版本号,这标志chunk
信息为失效。
5、添加有效块集合和无效块集合
6、通知chunk server chunk版本号变化
LayoutManager::AllocateChunk:
分配策略:假如有n个机架,m个server,chunk冗余数位k,则随机选择n个server
,再找出这个n个server对应的机架,再找出这些机架中所有的server,然后选择k个
server。
LayoutManager::AllocateChunkForAppend:
1、找到最后分配给文件的chunk,如果请求的偏移量必须小于最后分配的chunk的偏移量
2、把分配chunk的请求发送到chunk server
- kfs代码研究(四、LayoutManager分析)
- kfs代码研究(四、LayoutManager分析)
- kfs代码研究(六、ChunkManager分析)
- kfs代码研究(六、ChunkManager分析)
- kfs代码研究(七、网络部分)
- kfs代码研究(磁盘异步IO)
- kfs代码研究(写操作流程图)
- kfs代码研究(七、网络部分)
- kfs代码研究(磁盘异步IO)
- kfs代码研究(二、meta server处理流程)
- kfs代码研究(三、meta server具体消息处理)
- kfs代码研究(五、chunk server处理流程)
- kfs代码研究(二、meta server处理流程)
- kfs代码研究(三、meta server具体消息处理)
- kfs代码研究(五、chunk server处理流程)
- kfs代码研究(一、kfs代码目录结构)
- kfs代码研究(一、kfs代码目录结构)
- 分布式文件系统KFS源码阅读与分析(四):RPC实现机制(KfsClient端)
- FLEX学习笔记:TileList点击到不同的部分,返回的event.target类型
- kfs代码研究(三、meta server具体消息处理)
- java读取配置文件的几种方法
- 一步一步构建自己的launcher(V0.1——提供功能入口)(2)
- oracle学习笔记--游标(一)
- kfs代码研究(四、LayoutManager分析)
- 我的n81
- Microsoft Foundation Class Library Version 7.0(MFC类结构图7.0)
- oracle学习笔记--游标(二)
- 基本的gdb命令
- flex——双击datagrid编辑、验证、保存
- 两种图片加载方式的区别
- RPC for C/C++
- java 内存管理与垃圾回收