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集群(因为这块我也正好负责嘛)。