Fdfs for cnblogs 1th

1,397 views

Published on

分布式文件系统

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,397
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
33
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Fdfs for cnblogs 1th

  1. 1. DFS 优化过程 5173 架构组:徐海峰 [email_address] We are the worldwide leading game service provider
  2. 2. 煎熬的过程 <ul><li>为什么要优化 FS ?
  3. 3. 解决方案是什么?
  4. 4. 怎么做 FS 优化 ?
  5. 5. 为什么要这样做?
  6. 6. FDFS 的分析
  7. 7. 以后有什么可以改进?
  8. 8. 一些 FS 优化经验! </li></ul>ASH4W
  9. 9. 为什么要优化FS <ul><li>前解决方案 </li><ul><li>数据库存储,性能压力大
  10. 10. DB存储 === 安装杀毒软件
  11. 11. 扩展性差
  12. 12. 成本高
  13. 13. 用户体验差 </li></ul></ul>
  14. 14. 分析业务情况 <ul><ul><li>文件都是用户上传的图片
  15. 15. 增长快
  16. 16. 数据量大
  17. 17. 并发高
  18. 18. 文件小
  19. 19. 90%有效期短
  20. 20. 一般无HOT效应 </li></ul></ul>
  21. 21. 确定目标 <ul><li>问题 </li></ul>目标 <ul><li>实际情况 </li></ul><ul><li>优化方案 </li></ul>No call when sleeping
  22. 22. 解决方案 <ul><li>DB?
  23. 23. Local?
  24. 24. WS/Remoting?
  25. 25. DFS? </li></ul>
  26. 26. 需 求 <ul><li>性能: </li><ul><li>upload:300用户100并发
  27. 27. view:5000并发 </li></ul><li>稳定性:7*24H
  28. 28. 数据量:>10TB
  29. 29. 系统结构:非侵入性
  30. 30. 扩展:通过横向扩展可方便拆分
  31. 31. 管理:日常零成本,10分钟内完成部署
  32. 32. 开发:零成本或者微成本 </li></ul>
  33. 33. 选 型
  34. 34. FastDFS 简介 <ul><li>FastDFS 是一个轻量级的开源分布式文件系统
  35. 35. 主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡
  36. 36. 实现了软件方式的 RAID ,可以使用廉价的硬盘进行存储
  37. 37. 支持存储服务器在线扩容
  38. 38. 支持主从文件
  39. 39. 支持相同内容的文件只保存一份,节约磁盘空间
  40. 40. 只能通过 Client API 访问,不支持 POSIX 访问方式
  41. 41. 特别适合大中型网站使用,用来存储资源文件(如:图片、文档、音频、视频等等) </li></ul>
  42. 42. FDFS 系统架构
  43. 43. 文件上传 1. client 询问 tracker 上传到的 storage ,不需要附加参数; 2. tracker 返回一台可用的 storage ; 3. client 直接和 storage 通讯完成文件上传。
  44. 44. 文件下载 1. client 询问 tracker 下载文件的 storage ,参数为文件标识(组名和文件名); 2. tracker 返回一台可用的 storage ; 3. client 直接和 storage 通信完成文件下载。
  45. 45. 同步机制 <ul><li>采用 binlog 文件来记录更新操作,同步 binlog 文件内容
  46. 46. 同一组内的 storage server 之间是对等的,文件上传、删除等操作可以在任意一台 storage server 上进行;
  47. 47. 文件同步只在同组内的 storage server 之间进行,采用 push 方式,即源服务器同步给目标服务器;
  48. 48. 源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;
  49. 49. 上述第二条规则有个例外,就是新增加一台 storage server 时,由已有的一台 storage server 将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。 </li></ul>
  50. 50. 通讯协议 <ul><li>协议包由两部分组成: header 和 body
  51. 51. header 共 10 字节,格式如下:
  52. 52. 8 bytes body length
  53. 53. 1 byte command
  54. 54. 1 byte status
  55. 55. body 数据包格式由取决于具体的命令, body 可以为空 </li></ul>
  56. 56. Tracker目录结构   ${base_path}     |__data     |     |__storage_groups.dat :存储分组信息     |     |__storage_servers.dat :存储服务器列表     |__logs           |__trackerd.log : tracker server 日志文件
  57. 57. Storage目录结构   ${base_path}     |__data     |     |__.data_init_flag :当前 storage server 初始化信息     |     |__storage_stat.dat :当前 storage server 统计信息     |     |__sync :存放数据同步相关文件     |     |     |__binlog.index :当前的 binlog 文件索引号     |     |     |__binlog.### :存放更新操作记录(日志)     |     |     |__${ip_addr}_${port}.mark :存放同步的完成情况     |     |     |     |__ 一级目录: 256 个存放数据文件的目录,如: 00, 1F     |           |__ 二级目录: 256 个存放数据文件的目录     |__logs           |__storaged.log : storage server 日志文件
  58. 58. FDFS与 mogileFS 对比 指标 FastDFS mogileFS 系统简洁性 简洁 只有两个角色: tracker 和 storage 一般 有三个角色: tracker 、 storage 和存储文件信息的 mysql db 系统性能 很高(没有使用数据库,文件同步直接点对点,不经过 tracker 中转) 高(使用 mysql 来存储文件索引等信息,文件同步通过 tracker 调度和中转) 系统稳定性 高( C 语言开发,可以支持高并发和高负载) 一般( Perl 语言开发,高并发和高负载支持一般) RAID 方式 分组(组内冗余),灵活性较大 动态冗余,灵活性一般 通信协议 专有协议 下载文件支持 HTTP HTTP 技术文档 较详细 较少 文件附加属性( meta data ) 支持 不支持 相同内容文件只保存一份 支持 不支持
  59. 59. 只能靠自己 <ul><li>?性能 ?功能
  60. 60. 无.Net客户端
  61. 61. 服务器功能不满足 </li><ul><li>不能强制指定storage服务器
  62. 62. 没有目录服务
  63. 63. 不能按照时间管理文件
  64. 64. 没有批量上传功能 </li></ul></ul>
  65. 65. 实现策略 <ul><li>业务分组
  66. 66. 读写分离
  67. 67. 负载均衡
  68. 68. down机备份
  69. 69. 只提供上传功能 </li></ul>
  70. 70. 部署??? <ul><li>见详细部署图 </li></ul>
  71. 71. 调 优 <ul><li>CDN加速
  72. 72. 硬盘页大小
  73. 73. 防盗链机制
  74. 74. Squid反向代理
  75. 75. libevent更改网络层 </li></ul>
  76. 76. FDFS现状 Quantity: 25,600,359 * 2 Bytes: 2TB IO: 250MBps (raid5) Squid Hit Rate: 96~98% 普通 Linux 主机运行 用 ext3 文件系统存放数据文件
  77. 77. FDFS监控
  78. 78. 经验总结 <ul><li>Linux不是“神”的玩物
  79. 79. 选型关键在于你是否能控制
  80. 80. 开源不是商业软件,99%要改
  81. 81. 测试要充分
  82. 82. 沟通一定要及时
  83. 83. 1%与99% </li></ul>Control In All

×