文章目录

  • 1 淘宝文件系统大文件结构
    • 1.1 设计思路
    • 1.2 大文件存储结构图
    • 1.3 哈希链表简介

1 淘宝文件系统大文件结构

1.1 设计思路

主要有如下几个核心要点:

  • 以block文件的形式存放数据文件(一般64M一个block),以下简称为“块”,每个块都有唯一的一个整数编号,块在使用之前所用到的存储空间都会预先分配和初始化。
  • 每一个块由一个索引文件、一个主块文件和若干个扩展块组成,“小文件”主要存放在主块中,扩展块主要用来存放溢出的数据。
  • 每个索引文件存放对应的块信息和“小文件”索引信息,索引文件会在服务启动时映射(mmap)到内存,以便极大的提高文件检索速度。“小文件”索引信息采用在索引文件中的数据结构哈希链表来实现。
  • 每个文件有对应的文件编号,文件编号从1开始编号,依次递增,同时作为哈希查找算法的Key 来定位“小文件”在主块和扩展块中的偏移量。文件编号+块编号按某种算法可得到“小文件”对应的文件名。

1.2 大文件存储结构图

大文件存储结构图:

文件哈希链表实现图:

关键数据结构定义如下:

struct BlockInfo
{uint32_t block_id_;             //块编号   1 ......2^32-1  TFS = NameServer + DataServerint32_t version_;                //块当前版本号int32_t file_count_;            //当前已保存文件总数int32_t size_;                     //当前已保存文件数据总大小int32_t del_file_count_;     //已删除的文件数量int32_t del_size_;              //已删除的文件数据总大小uint32_t seq_no_;             //下一个可分配的文件编号  1 ...2^64-1
}struct RawMeta {uint64_t fileid_;                        //文件编号struct{int32_t inner_offset_;           //文件在块内部的偏移量int32_t size_;                       //文件大小} location_;
};struct MetaInfo{RawMeta raw_meta_;              //文件元数据int32_t next_meta_offset_;      //当前哈希链下一个节点在索引文件中的偏移量
}

1.3 哈希链表简介

哈希表 - 散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。
关键点:

  • 键(key): 文件的编号 如, 1 、 5 、 19 。 。 。
  • 值(value): 文件的索引信息(包含 文件大小、位置)。
  • 索引: 数组的下标(0,1,2,3,4) ,用以快速定位和检索数据。
  • 哈希桶: 保存索引的数组,数组成员为每一个索引值相同的多个元素(以链表的形式链接)的首节点。
  • 哈希函数: 将文件编号映射到索引上,采用求余法 ,如: 文件编号 19。


参考资料:

  1. C/C++从入门到精通-高级程序员之路【奇牛学院】

淘宝文件系统大文件结构相关推荐

  1. 《淘宝店铺 大数据营销+SEO+爆款打造 一册通》一一2.2 实时直播抢占生意先机...

    本节书摘来自异步社区出版社<淘宝店铺 大数据营销+SEO+爆款打造 一册通>一书中的第2章,第2.2节,作者:葛存山 , 耿寿礼,更多章节内容可以访问云栖社区"异步社区" ...

  2. 弘辽科技:淘宝狂欢大促怎么取消?要怎么做活动?

    商家想要在短时间内获得大量的消费者流量,就得采取非常规的促销方式,比如说举办狂欢大促活动.这样的活动对于消费者来说,是非常有吸引力的,同时对商家来说也是有一定压力的,不少商家会担心没有效果想要取消活动 ...

  3. 大数据系统开发综合实践(淘宝双11大数据批处理分析系统、NBA 、淘宝购物大数据实时展示、Spark GraphX)

    cqupt || xmu--大数据系统开发综合实践 代码放在了GitHub上 链接 task01 大数据批处理系统 淘宝双11大数据批处理分析系统 task02 大数据查询分析计算系统 NBA 统计大 ...

  4. 618前夕,淘宝天猫大变革,探索电商天花板之上的价值

    2023年淘宝天猫618商家大会,恰逢淘宝20周年,也是阿里"1+6+N"组织架构改革,淘宝天猫"独立"经营后,管理和运营团队的首次亮相.除了淘宝天猫618的具 ...

  5. 淘宝网大数据解决之道

    淘宝网大数据解决之道 杨志丰表示淘宝每天大约有6000万用户登录以及20亿PV量.淘宝数据库对于淘宝来说非常重要.几乎所有淘宝业务都依赖淘宝数据库.淘宝数据库具备数以千计的数据库服务器同时要应对单表几 ...

  6. 《淘宝店铺 大数据营销+SEO+爆款打造 一册通》一一2.1 生意参谋平台概述

    本节书摘来自异步社区出版社<淘宝店铺 大数据营销+SEO+爆款打造 一册通>一书中的第2章,第2.1节,作者:葛存山 , 耿寿礼,更多章节内容可以访问云栖社区"异步社区" ...

  7. 淘宝规则大改动,中差评取消了,对于中小卖家来说是否是福利?

    淘宝规则一天一小变,三天一大变,这不最近淘宝规则的变动,引起淘宝很多中小卖家的关注,这个改动就是中差评取消了,其实这对于中小卖家来说其实是具有两面性的,好的方面是逐渐弱化了中差评对c店的影响,但是打造 ...

  8. 淘宝推出大物流计划 物流宝平台正式上线

    6月11日下午消息,淘宝网宣布正式推出淘宝大物流计划,该计划的核心包含了淘宝物流宝平台(http://e56.taobao.com).物流合作伙伴体系以及物流服务标准体系等三大块内容. 此次推出的淘宝 ...

  9. 淘宝内容大爆炸:直播双12峰值超越双11

    一群青年设计师在淘宝上直播改造大学生宿舍,用1000元预算把乱哄哄的男生宿舍改成了小清新.2小时内直播吸引了20万人观看,收集点赞300万,也让设计师团队所在的店铺一炮而红--在双12这个往年淘宝卖货 ...

最新文章

  1. wpf中内容包含在border中_WPF:点击后聚焦边框(WPF: Focus border after click)
  2. 浅析网站优化知识自学从哪些方面开始起步
  3. [置顶]WebService学习总结(4)——第三方webService服务调用
  4. nginx的upstream目前支持5种方式的分配
  5. [bzoj2186]沙拉公主的困惑
  6. jdeveloper_适用于JDeveloper 11gR2的Glassfish插件
  7. 温度补偿计算公式_一种工业用温度测量模块的设计与实现
  8. Spring Cloud各组件总结归纳
  9. H.264/AVC视频压缩编码标准的新进展
  10. 设计模式——Template Method模板方法
  11. MFC——在共享DLL中使用MFC、在静态库中使用MFC
  12. linux redhat 防火墙,Redhat 7 防火墙常用配置
  13. QT学习之文件读写操作
  14. java jstl 库下载_jar包下载,jstl.jar和standard.jar下载
  15. java 信鸽demo_腾讯信鸽推送Java服务端
  16. ubuntu18.04 安装Teamviewer15出现依赖库出错的解决办法
  17. Bugku旧平台crypto writeup
  18. Glide加载圆形图片带白色边框
  19. 怎么禁用笔记本触摸板
  20. linux学习笔记三: secureCRT小键盘输入数字键的时候,出现字母的解决方法:

热门文章

  1. 【控制】多智能体系统总结。5.系统合并。
  2. Overfull \hbox或Underfull \hbox错误提示 基于LaTex+VSCode+MAC
  3. STM32 电机教程 21 - 基于ST MCLIB无感FOC 与 有感FOC 代码差异分析
  4. 【进展】不只是感谢信,物联网平台哪家强?冰箱运行监测系统项目重启
  5. C++ dynamic_cast操作符
  6. 基于 MVP 的 Android 组件化开发框架实践
  7. 渗透攻击(NT/2000系统)
  8. Socket实现java服务端与AndroidApp端数据交互
  9. Osmocom-bb系统编译
  10. 卡巴斯基:警惕IE拦截器恶意推广导航网站