淘宝分布式文件系统TFS安装配置手册:内部实现

运维 系统运维 分布式
TFS与目前一些主流的开源分布式文件系统设计思想是相似的,如HDFS, MFS, KFS, Sector。TFS的高可扩展、高可用性是很好的,本文带你了解淘宝分布式文件系统TFS的内部实现过程,一起来看看。

TFS文件名的结构

TFS的文件名由块号和文件号通过某种对应关系组成,***长度为18字节。文件名固定以T开始,第二字节为该集群的编号(可以在配置项中指定,取值范围 1~9)。余下的字节由Block ID和File ID通过一定的编码方式得到。文件名由客户端程序进行编码和解码,它映射方式如下图:

TFS客户程序在读文件的时候通过将文件名转换为BlockID和FileID信息,然后可以在!NameServer取得该块所在!DataServer信息(如果客户端有该Block与!DataServere的缓存,则直接从缓存中取),然后与!DataServer进行读取操作。

TFS写操作数据流

TFS系统中,nameserver会保证一个文件有多个副本存储于不同的dataserver上以保证冗余。当由于dataserver服务器宕机或由于其他原因退出系统导致某些文件副本数量下降时,nameserver将会调度新的dataserver节点存储文件备份。同样为了保证数据一致性,当写入一个文件时,只有所有参与的dataserver均写入成功时,该操作才算成功。TFS的写操作数据流图如下所示:

客户端首先向nameserver发起写请求,nameserver需要根据dataserver上的可写块,容量和负载加权平均来选择一个可写的block。并且在该block所在的多个dataserver中选择一个作为写入的master,这个选择过程也需要根据dataserver的负载以及当前作为master的次数来计算,使得每个dataserver作为master的机会均等。master一段选定,除非master宕机,不会更换,一旦master宕机,需要在剩余的dataserver中选择新的master。返回一个dataserver列表。 客户端向master dataserver开始数据写入操作。master server将数据传输为其他的dataserver节点,只有当所有dataserver节点写入均成功时,master server才会向nameserver和客户端返回操作成功的信息。

获得Block ID和File ID

根据TFS文件名解析出Block ID和block中的File ID。

获取dataserver地址

向nameserver发送查询请求得到Block ID所在的dataserver地址。

由于nameserver中维护了block和dataserver的对应关系,所以nameserver能够提供相应的信息。

Note: 由于TFS是把大量小文件放在一个block里面,

所以TFS的文件复制是基于block的,而且复制出来的block的block id应该是一致的

请求文件

通过发送Block_ID、File_ID和offset为参数的读请求到对应的dataserver,得到文件内容。

dataserver会根据本地记录的信息来得到File ID所在block的偏移量,从而读取到正确的文件内容.

TFS 在2.0版本增加了一个server, 叫做 rcserver. 这个 server 主要是为了淘宝内部管理使用 TFS 的各个应用. 我们给每个应用分配一个唯一的 AppKey. TFS 客户端使用这个 AppKey 登录到 rcserver, 取得自己应该访问的 TFS 集群信息. 客户端还会定期把自己的一些统计值发送给 rcserver. 具体信息可以参看源码中 doc 目录下的关于 rcserve 的文档。

责任编辑:黄丹 来源: sina博客
相关推荐

2014-01-10 10:39:35

分布式文件系统TFS

2014-01-14 15:56:54

分布式文件系统TFS淘宝

2014-01-15 13:56:28

分布式文件系统TFS淘宝

2014-01-15 14:00:33

分布式文件系统TFS淘宝

2012-10-11 14:03:56

FastDFS分布式文件系统

2010-11-01 05:50:46

分布式文件系统

2014-06-24 15:24:52

Moosefs分布式集群

2014-01-16 09:42:19

TFS分布式文件系统

2017-10-17 08:33:31

存储系统分布式

2013-06-18 14:00:59

HDFS分布式文件系统

2013-01-07 10:29:31

大数据

2010-11-15 13:24:07

分布式文件系统

2012-08-31 16:04:11

HDFS分布式文件系统

2012-09-19 15:05:24

MogileFS分布式文件系统

2012-09-19 13:43:13

OpenAFS分布式文件系统

2010-06-04 18:45:43

Hadoop分布式文件

2013-05-27 14:46:06

文件系统分布式文件系统

2020-01-03 08:33:57

Ceph硬件系统

2023-05-05 08:16:56

SeaweedFS分布式文件

2012-10-09 16:43:47

FastDFS分布式文件系统
点赞
收藏

51CTO技术栈公众号