最近的一个项目由于原先的nas服务停了,所以没有办法,只能迁移到TFS上。这本来是一个内部的分享的。TFS本身也是开源了,所以就拿出来分享一下吧。
这里大部分内容出自TFS的开源网站及内部的wiki,下面是TFS的项目
TFS是taobao filesystem的简称,是一个分布式的文件系统,目前最新的版本是TFS2.X
TFS和NAS相比,具有线性扩容好,高并发性能好。和HDFS相比更适合小文件,和FastDF相比支持自定义文件夹结构
其1.0的架构如下:
image.png
TFS2.0的架构如下:
image.png
其中,nameserver负责元数据的管理,文件的定位,写文件块的分配,dataserver的管理,数据备份监控,数据分布及负载均衡。以及操作日志的管理。
dataserver用来存储管理数据文件,处理客户端的文件访问,转发数据写入请求,复制和处理数据文件。
resourcecenter用来管理应用(权限和统计),集群的管理(扩容及应用透明化),计算距离实现就近访问
metaserver用来提供目录和自定义文件服务,也能用来做为后端数据库存储的缓存
rootserver用来刮泥metaserver并且分配metaserver的服务对象
下面是TFS1的写流程和读流程
image.png
image.png
下面是TFS2的读写流程
image.png
image.png
TFS有自己的读写API,包括JAVA,c++,python,php各种版本,使用非常简单,下面是我自己封装的一个Utils类
总结一下,以上内容大部分来着TFS的开源项目文档,大家有兴趣可以访问看一下。TFS使用非常简单,基本上可以替换我原先项目中对NAS的依赖。