tfs简单讲解
tfs的架构设计:
TFS(Taobao File System)是一个高可用、高性能、高可扩展的分布式文件系统,基于普通的Linux服务器构建,主要提供海量非结构化数据存储服务。TFS集群由名字服务器(namserver)和数据服务器(dataserver)组成,TFS以数据块(block)为单位存储和组织数据,block大小通常为64M(可配置),TFS会将多个小文件存储在同一个block中,并为block建立索引,以便快速在block中定位文件;每个block会存储多个副本到不同的机架上,以保证数据的高可靠性。
tfs的部署方式:
Nameserver服务部署时采用HA来避免单点故障,2台nameserver服务器共享一个vip。正常情况下,主nameserver持有vip提供服务,并将block修改信息同步至备,HA agent负责监控主备nameserver的状态,当其检测到主宕机时,HA agent将vip切换到备上,备就切换为主来接管服务,以保证服务的高可用。
Dataserver服务部署时通常会在一台机器上部署多个dataserver进程,每个进程管理一块磁盘,以便充分利用磁盘IO资源。Dataserver启动后,会向nameserver汇报其存储的所有block信息,并周期性的给nameserver发送心跳信息,nameserver则根据心跳来管理所有的dataserver,当nameserver超过一定时间没有收到dataserver的信息,则认为dataserver已经宕机,会将该dataserver上存储的block进行复制,使得block副本数不低于集群配置值,保证系统存储数据的可靠性。
tfs的使用方式
tfs的写操作

如图所示:客户端会向nameserver发送写文件请求,nameserver会分配可写block的位置信息
客户端和提供服务者发送请求 提供者将数据推送给下面的slave传输成功后返回消息给提供者
提供者在返回消息给nameserver,等着ns更新完block的信息后提供者将结果返回给客户端
读操作
tfs的应用场景:
TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。主要针对海量的非结构化数据,构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202368.html原文链接:https://javaforall.net
