TFS架构演进
Taobao
File
System
• NS为写操作分配block
• 为读操作查询block位置信息
Master
NS Client
Primary
Replica
Secondary
Replica
Secondary
Replica
1.
分配可写block
2.
返回block位置信息
3
3 3
5.
Commit
Block
7
4 4
TFS读写流程
6
控制流
数据流
• 写入时要求所有副本成功
• 读取时选择任一副本,失败
时重试其他副本
文件写入成功后,客户端会得到一个文件名
文件名包含[文件类型、集群号、blockid、fileid]
副本安全
机器宕机时,自动复制
缺少副本的block,保证
数据可靠性
负载均衡
集群扩容时,自动在存储节点间迁移数据,以均衡负载
删除空间回收
• 删除文件时,只设置删除标记
• 当block内删除文件量达到阈值时,
触发compact,回收删除文件空间
客户端缓存
1. 查询本地cache
2. 查询tair
cache
3. 回源NS查询
文件排重 • 存储前查询是否已经存储
过相同内容的文件
• 排重模式存储的文件不能
被更新(应用场景受限)
大文件存储
• 大文件切片存成多个小文件
• 所有小文件的元信息再存储
成一个小文件
自定义文件名
集群容灾
• 主集群的DS负责将写入的文件同步到备集群
• 可配置多个主集群,支持多点写入,并相互同步数据
• 主备集群数据会周期性对比,确保存储数据的一致性
appkey cluster
app1 1
app2 2
cluster ns
vip perm
1 host01:3000 rw
1 host02:3000 read-‐only
2 host03:3000 rw
3 host04:3000 rw
应用及集群管理
应用资源配置表
集群资源配置表
接口服务化
Nginx
proxy实现Ss
client的所有功
能,并对应用提供hTp访问接口
Erasure
Code
• 3副本
• 容忍2副本失效
• 存储成本 3X
• 4
+
2
Reed
Solomon
• 容忍2副本失效
• 存储成本
D
–
数据块
P
–
校验块
Hot
block
Hot
block
Cold
block
热数据多副本,冷数据Erasure
Code编码
Block数据Erasure
Code编码,Block索引多副本
校验块的索引包含所有数据块的索引