FastDFS衍生工具调研
FastDFS衍生工具调研
对已有开源项目FastDFS的衍生工具进行调研,主要围绕作者本身提供的工具和github的项目进行,(google code上很多项目基于1.0或者2.0版本,参考意义不是很大)。Java-client就不讨论了,天坑。
以下衍生工具都是结合的当前稳定版的fdfs5.01。
fastdht
Fastdht是作者开发的基于一致性哈希的去中心化分布式KV,基于BDB。使用的人群非常少,对他功能的了解只能围绕源码和作者在论坛语焉不详的一些解释。
大致了解到fastdht是namespace:object(相当于key):field:value的存取方式。不支持通配符搜索,不支持“*”的遍历操作。Log报错非常不友好,很难定位错误,扩容复杂(去中心化也未曾使用gossip等协议,需要重启所有机器,重写所有配置文件),故障冗余没有细看代码。
另外群里没人反馈fastdht的使用情况,一问就冷场,也没法交流。
总体感觉非常不靠谱,性能测试和功能测试等等要耗费很多时间,相对而言不如直接使用redis做KV。
my-fastdfs-client
这是结合fastdht和FastDFS的一个客户端,内部实现上对dht和dfs都会建立connect,相当于把KV封装了,在对test用例做测试时发现了BUG,如果要用fastdht的话有一定参考意义,但是最好是自己实现。
fastdfs-nginx模块
这部分早就接触使用过,相对比较熟悉,该模块的断点续传方式需要结合源码再作调研。
#4 fdfs_monitor
Fastdfs原生的监控程序,会连接tracker服务器,获取所有集群的运行情况。
cacti_fastdfs
一个基于PHP的fastdfs监控程序,内部实现就是把fdfs_monitor结果导出了。
fastdfs-zyc
基于java环境tomcat的FastDFS监控程序,界面丰满内容完善,有很大的借鉴或者二次开发意义。
读了下他的JAVA代码,量不是很大,总体思路是结合fdfs_monitor的数据和ssh登录系统直接拉取cpu,mem流量等情况
优点是考虑内容较多:
1 性能监控,流量监控,容量监控
2 预警和通知
3 瓶颈预测和扩容预测
4 网络数据图,数据结构图和访问拓扑图
缺点是结合了mysql,需要分析文件宏观分布的功能时,客户端必须将映射关系存储在mysql,这部分会造成性能瓶颈,对于小型系统还好,对于我们的集群来说是枷锁。
Fastdfs群里面对这个评价还是很不错的。虽然也没人用都是自己开发的脚本来监控。
结论:
网上已有的衍生工具除了fastdfs-nginx模块都或多或少存在问题,fdfs-zyc这个监控工具还不错,有很大参考意义。
我会基于fdfs-monitor做一个基于crontab的脚本监控和预警。
引入一个KV对于业务预警管理,配额管理等等功能都有很大便利,我倾向于使用redis集群(因为这块我也正好负责嘛)。
-
2014-09-12
记录会比较零碎,是一些学习经验吧
1.之前一直对fastdfs的nginx模块不够了解,稍微思考调研了下,解决了以前的疑惑
1
2
3
4location /group1/M00{
alias /data/fastdfs/data;
ngx_fastdfs_module;
}然后浏览器就可以根据ip/M00/00/00/aaaaaaaaaaaaaaa.jpg类似这样的连接去获取到fastdfs上的文件了
这个配置文件一直是知其然不知其所以然