kfs代码研究(四、LayoutManager分析)

来源:互联网 发布:淘宝怎么投诉假货 编辑:程序博客网 时间:2024/05/18 17:44

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


原创粉丝点击