dataserver 源码分析(三) 读写数据
来源:互联网 发布:淘宝国际物流订单运费 编辑:程序博客网 时间:2024/06/01 22:46
超级块格式:
//| reserve | SuperBlockInfo | {BlockIndex| ... |BlockIndex} |
索引块格式:
//| IndexHeader | common::FileInfoV2|common::FileInfoV2| ... |common::FileInfoV2 |
数据块格式:
//| reserve | FileInfoInDiskExt + data|FileInfoInDiskExt + data| ... | FileInfoInDiskExt + data|
一、写数据
1、解析客户端请求包,如果本ds为本次写的master,从vector writable_中获取可写的WritableBlock,并从该writableBlock中获取blockId,servers,并产生block内的fileID,产生op_id,即lease_id。
2、将在该master上收到的写请求包,设置上面获取的block_id,file_id,lease_id,slave_flag等到请求包中,用于发往slave节点。
3、如果本节点为master,随即将message发往servers中的其他节点,并设置异步回调函数ds_async_callback。
4、获取索引文件中的blockinfoV2,校验版本号。写本地数据及计算crc校验码,
5、如果本节点是master,等待所有的写请求返回,并发送应答包。如果是slave节点,则返回应答包到maser节点。
6、当某一slave节点完成写操作后,会向master节点发送SlaveDsRespMessage应答包。而master节点收到应答包后继而调用上面设置的回调函数ds_async_callback进行更新该slave上的blockInfo,status等信息。
7、检查所有的slave节点都收到反馈了,发送writeFileRespMessageV2写数据应答包给外面的调用方。
至此,dataserver端写数据完成.
详见ClientRequestServer::write_file方法。
二、关闭文件:
1、收到close请求,首先将请求包立刻发送到slave节点,并设置回调函数ds_async_callback。
2、获取请求包中的crc,校验所关闭文件的crc是否一致
3、类似写数据的处理方式,作为master节点,需要等待其他slave节点的应答。如收到全部的slave节点应答,则向外发送关闭成功标志。
三、读数据
1、根据file_id,从索引文件中获取FileInfoV2,
2、根据block_id,获取逻辑块,根据offset获取物理块,从物理文件中读取数据返回。
- dataserver 源码分析(三) 读写数据
- dataserver 源码分析(一) 格式化
- dataserver 源码分析(二) 启动服务
- Mina源码分析之数据读写
- Juce源码分析(三)数据的原子操作
- Shark源码分析(三):数据预处理之正则化
- Netty源码分析(三)—数据管道ChannelPipeline源码分析
- BCache源码浅析之三数据读写流程
- Hadoop源码分析:HDFS数据读写流量控制(DataTransferThrottler类)
- TFS(Taobao File System)配置dataServer、分区、挂载数据盘
- TFS(Taobao File System)配置dataServer、分区、挂载数据盘
- TFS(Taobao File System)配置dataServer、分区、挂载数据盘
- TFS(Taobao File System)配置dataServer、分区、挂载数据盘
- 数据分析(三)
- 数据分析(三)
- Vue学习之源码分析--从Vue.js源码角度再看数据绑定(三)
- 数据读写压力大,读写分离(分布式系统三)
- JUnit源码分析(三)
- C#命名空间引用的问题新解
- 20140909 目标
- UVA11997K Smallest Sums(优先队列+二路归并)
- oracle 回车、换行符
- 旅游地产肯定会步入发展黄金时期
- dataserver 源码分析(三) 读写数据
- QQ微信营销软件防封操作秘籍
- 不再是缘
- String.subString内存泄露
- VTK XML 文件格式
- Live555接收h264使用ffmpeg解码为YUV420 .
- 为cocos2d-x3.2版本增加protobuffer2.5.0支持
- 实用嵌入式C Linux程序设计
- GUI Design Studio(资料整理)