fastDFS

JAVA ZMAS 10℃ 0评论

[熟悉]fastDFS概念

FastDFS是一个轻量级的开源分布式文件系统,解决了大容量的文件存储和高并发访问的问题,
文件存取时实现了负载均衡。特别适合以文件为载体的在线服务,如相册网站、视频网站等等

[熟悉]为什么要使用?

在之前我们都是将文件上传到tomcat中,但是由于我最近那个项目是分布式的项目,如果还将文件上传到tomcat的话,在做集群的时候,由于上传文件只是上传到一个tomcat,当用nginx做负载的时候,文件就有可能访问不到,您也知道nginx可以做静态资源服务器而且处理的速度并发量也能轻松上几万,但是我们是互联网项目,文件可能会特别多,有可能单个nginx服务器的磁盘占满,这样的做显然不好,经过和项目经理的商讨,最终决定用fastdfs,因为他能够解决大文件存储和高并发的问题。但是fastdfs的http服务较为简单,无法提供负载均衡等高性能服务,所以我们就将fastdfs与ngnix进行结合。Fastdfs它的架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。

[熟悉]fastDFS的架构

FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。
Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。
Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,Storage server 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage称为存储服务器。

[熟悉]fastDFS的同步机制

同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;
文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器;
源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;
上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。

[熟悉]fastDFS遇到的问题

启动storage server时,一直处于僵死状态。
启动storage server,storage将连接tracker server,如果连不上,将一直重试。直到连接成功,启动才算真正完成。
出现这样情况,请检查连接不上tracker server的原因。
友情提示:从V2.03以后,多tracker server在启动时会做时间上的检测,判断是否需要从别的tracker server同步4个系统文件。
触发时机是第一个storage server连接上tracker server后,并发起join请求。
如果集群中有2台tracker server,而其中一台tracker没有启动,可能会导致storage server一直处于僵死状态。
执行fdfs_test或fdfs_test1上传文件时,服务器返回错误号2
错误号2表示没有ACTIVE状态的storage server。可以执行fdfs_monitor查看服务器状态。
上传文件失败,返回错误码28,这是怎么回事?
返回错误码28,表示磁盘空间不足。注意FastDFS中有预留空间的概念,在tracker.conf中设置,配置项为:reserved_storage_space,缺省值为4GB,即预留4GB的空间。请酌情设置reserved_storage_space这个参数,比如可以设置为磁盘总空间的20%左右。
nginx扩展模块,不能正常显示图片的问题
在配置文件/etc/fdfs/mod_fastdfs.conf中,缺省的设置是这样的:http.need_find_content_type=false这个参数在nginx中需要设置为true,apache中应该设置为false。

转载请注明:ZMAS‘S blog » fastDFS

喜欢 (3)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址