一、分布式文件系统FastDFS架构解析
FastDFS是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片、视频、文档等文件,许多大型互联网公司包括几个大的云网盘都在使用。FastDFS项目地址 :http://code.google.com/p/fastdfs/
分布式文件系统FastDFS架构剖析 : http://blog.csdn.net/MONKEY_D_MENG/article/details/6038133
二、安装配置过程
1. 概述
包位置:/home/tester/fdfs/FastDFS/192.168.9.92 nginx模块 ,tracker ,storage
192.168.9.93 storage
192.168.9.94 storage
2. 搭建
FastDFS安装过程详解,不想使用一键脚本的,可以参考此文章fdfs安装手册配置文件详细说明 storage.conf tracker.conf nginx.conf等 http://bbs.chinaunix.net/thread-1941456-1-1.html
storage.conf配置如下,其它默认即可~
|
|
|
|
port:8080 当然你的可以默认使用80端口
|
|
3. 测试
启动测试前,开放端口号cenos6.4开放8080端口给浏览器访问
|
|
|
|
fdfs启动、重启、开机启动,nginx启动、stop 重启
注意:启动的时候如果不指定conf,那么默认使用 /etc/fdfs/下的所有conf文件,这个一般没有处理!
|
|
/usr/local/bin/fdfs_test /etc/fdfs/storage.conf upload /home/xirong/fdfs_test_files/1111.jpg
从其它浏览器上访问 http://192.168.9.92:8080/group1/M00/00/00/wKgJXFUCoa-APWY1AABdrZgsqUU351.jpg 即ok
三、fdfs 客户端调用实例及 API Doc 说明
网上有个哥们写了个入门教程,直接搬过来了,入门可以看看,如下:FastDFS的配置、部署与API使用解读——(1)入门使用教程
FastDFS的配置、部署与API使用解读——(2)Java API:根据InputStream、文件名、文件长度上传文件
FastDFS的配置、部署与API使用解读——(3)Java API:根据InputStream、文件名、文件长度,采用IO流直接转换的方式上传文件
FastDFS的配置、部署与API使用解读——(4)设置FastDFS配置参数的两种方式
FastDFS的配置、部署与API使用解读——(5)FastDFS配置详解之Tracker配置
FastDFS的配置、部署与API使用解读——(6)FastDFS配置详解之Storage配置
FastDFS的配置、部署与API使用解读——(7)关于FastDFS的Nginx的一些Q&A汇总
FastDFS的配置、部署与API使用解读——(8)FastDFS多种文件上传接口详解
fastdfs 提供的API(支持JAVA,C,PHP,PYTHON接口)
- upload:上传普通文件,包括主文件
- upload_appender:上传appender文件,后续可以对其进行append、modify和truncate操作
- upload_slave:上传从文件
- download:下载文件
- delete:删除文件
- append:在appender文件后追加内容
- modify:appender文件修改
- set_metadata:设置文件附加属性
- get_metadata:获取文件附加属性
四、fdfs 常见问题及最佳实践
fastdfs 运维常见问题汇总 http://bbs.chinaunix.net/thread-1920470-1-1.html最佳实践
- 推荐的FastDFS部署方案
文件上传和删除等操作:使用 FastDFS client API,目前提供了C、PHP extension 和 Java 的 client API
文件下载采用 HTTP 方式:使用 nginx 或者 apache 扩展模块,不推荐使用 FastDFS 内置的 web server
不要做 RAID,直接挂载单盘,每个硬盘作为一个 mount point
- 最大并发连接数设置
参数名:max_connections
缺省值:256
说明:FastDFS 采用预先分配好 buffer 队列的做法,分配的内存大小为: max_connections * buff_size,因此配置的连接数越大,消耗的内存越多。不建议配置得过大,以避免无谓的内存开销。
- 工作线程数设置
参数名: work_threads
缺省值:4
说明:为了避免CPU上下文切换的开销,以及不必要的资源消耗,不建议将本参数设置得过大。为了发挥出多个CPU的效能,系统中的线程数总和,应等于CPU总数。
对于tracker server,公式为:
对于storage,公式为:1work_threads + 1 = CPU数
1work_threads + 1 + (disk_reader_threads + disk_writer_threads) * store_path_count = CPU数 - storage目录数设置
参数名:subdir_count_per_path
缺省值:256
说明:FastDFS 采用二级目录的做法,目录会在 FastDFS 初始化时自动创建。存储海量小文件,打开了trunk存储方式的情况下,建议将本参数适当改小,比如设置为32,此时存放文件的目录数为 32 32 = 1024。假如trunk文件大小采用缺省值64MB,磁盘空间为2TB,那么每个目录下存放的trunk文件数均值为:2TB / (1024 64MB) = 32个
- storage磁盘读写线程设置
disk_rw_separated:磁盘读写是否分离
disk_reader_threads:单个磁盘读线程数
disk_writer_threads:单个磁盘写线程数
如果磁盘读写混合,单个磁盘读写线程数为读线程数和写线程数之后
对于单盘挂载方式,磁盘读写线程分别设置为1即可
如果磁盘做了RAID,那么需要酌情加大读写线程数,这样才能最大程度地发挥磁盘性能
- storage同步延迟相关设置
sync_binlog_buff_interval:将 binlog buffer 写入磁盘的时间间隔,取值大于 0,缺省值为 60s
sync_wait_msec:如果没有需要同步的文件,对 binlog 进行轮询的时间间隔,取值大于0,缺省值为 100ms
sync_interval:同步完一个文件后,休眠的毫秒数,缺省值为 0
为了缩短文件同步时间,可以将上述 3 个参数适当调小即可
No comments:
Post a Comment