kfs代码研究(二、meta server处理流程)
来源:互联网 发布:java多泛型转换 编辑:程序博客网 时间:2024/06/06 15:45
二、meta server处理流程
Metaserver_main.cc:
这个就是metaserver的main函数所在的文件,main函数在读取输入参数和配置文件并且初始化日志模块后,就进入了kfs_startup函数,这个函数就是meta server的启动过程,位置在startup.cc中。
kfs_startup:
1、首先调用setup_initial_tree重新建立metatree或者从检查点文件恢复metatree。
2、接着调用replayer.playAllLogs播放检查点后所有的日志,恢复metatree。
3、调用metatree.recomputeDirSize计算所有目录的大小。
4、调用ChangeIncarnationNumber增加chunk的版本号(没搞懂具体作用是什么)。
5、调用emptyDumpsterDir清空垃圾文件目录中的文件。
6、调用initialize_request_handlers初始化命令处理函数
kfs_startup函数调用结束后调用gNetDispatch.Start启动网络处理模块
NetDispatch.cc:
NetDispatch::Start:
1、调用mClientManager->StartAcceptor,mChunkServerFactory->StartAcceptor分别启动客户端和chuck server的监听。
2、调用globalNetManager().MainLoop进入网络管理模块主循环
NetDispatch::Dispatch:
在每个客户端或者chunk server请求处理完毕以后会调用此函数(在process_request函数中调用)
ClientSM.cc:
meta server收到客户端请求后会调用ClientSM::HandleRequest来处理请求
ClientSM::HandleRequest:
1、如果是读网络数据事件(EVENT_NET_READ)调用ClientSM::HandleClientCmd处理客户端命令,ClientSM::HandleClientCmd又调用ParseCommand(在request.cc中实现)解析具体的命令和执行对应的动作
2、如果是命令处理完事件(EVENT_CMD_DONE)调用ClientSM::SendResponse对客户端做应答。
3、如果是写网络数据事件(EVENT_NET_WROTE)调用ClientSM::SubmitOp提交对应操作。
ChuckServer.cc:
meta server收到chuck server的请求后会调用ChunkServer::HandleRequest处理chuckserver的命令
ChunkServer::HandleRequest:
1、如果是读网络数据事件(EVENT_NET_READ)调用ChunkServer::HandleMsg处理chuckserver的消息
2、如果是命令处理完事件(EVENT_CMD_DONE)调用ChunkServer::SendResponse给chuckserver应答
3、如果是写网络数据事件则不作操作
- kfs代码研究(二、meta server处理流程)
- kfs代码研究(二、meta server处理流程)
- kfs代码研究(三、meta server具体消息处理)
- kfs代码研究(三、meta server具体消息处理)
- kfs代码研究(五、chunk server处理流程)
- kfs代码研究(五、chunk server处理流程)
- kfs代码研究(四、LayoutManager分析)
- kfs代码研究(六、ChunkManager分析)
- kfs代码研究(七、网络部分)
- kfs代码研究(磁盘异步IO)
- kfs代码研究(写操作流程图)
- kfs代码研究(四、LayoutManager分析)
- kfs代码研究(六、ChunkManager分析)
- kfs代码研究(七、网络部分)
- kfs代码研究(磁盘异步IO)
- kfs代码研究(一、kfs代码目录结构)
- kfs代码研究(一、kfs代码目录结构)
- kfs嵌入式文件系统应用指南(二)
- SVN操作
- 微软面试题答案
- 关于寻址的一点猜想,以后真正了解了再修改
- the pointer to a structure
- poj 1003 Hangover
- kfs代码研究(二、meta server处理流程)
- C语言链表的创建、插入、查找、删除、清空操作
- 使用Validator改进数据向导生成的Flex应用
- Android模拟机出现Installation failed due to invalid APK file错误
- java哈希表
- 最大连续子序列--acm2479
- FLEX学习笔记:TileList点击到不同的部分,返回的event.target类型
- kfs代码研究(三、meta server具体消息处理)
- java读取配置文件的几种方法