TFS海量小文件存储系统线上运维经验.pdf
文本预览下载声明
微博为粉丝群紧急扩容TFS 集群经验分享
新浪微博 平台架构师 卫向军
微博12.21 日发布客户端5.0 版本,其中的粉丝群刚一上线,流量马上暴涨,
尤其是粉丝群内的语音、视频分享急剧增加,几天时间内,3 年前搭建的TFS 集
群容量达到80%,为了应对圣诞、元旦、春节的明星推广活动,平台对整个系统
紧急扩容。
首先简单介绍一下,TFS (Taobao File System )是淘宝专门针对海量非结构化
数据存储设计的分布式系统,其构建在普通的Linux 机器集群上,可为外部提供
高可靠和高并发的存储访问。
平台的文件服务平台,构建在TFS 集群上,为微博提供海量小文件存储,包
括长微博、对象库底层的实体库、私信附件、粉丝群附件等,这些文件通常文件
大小不超过1M,全部存储在文件服务平台。
文件服务平台分为三层:1)最上面是proxy 代理层,根据fid 做hash sharding,
完成下行请求到Download Node 的路由;2 )中间是Download Node,通过fid 从
wCache 缓存读取文件返回或者穿透到TFS 集群,并回源到wCache ,由于有权限
规则,所以没有用CDN ;3) 最下面是TFS 集群,由数量众多的数据节点(Data Node)
组成,支撑具体文件的下行访问请求。
Step 2 :灰度上线Proxy节点,使用1/N的QPS请求量来预热
Download Node 的wCache缓存
Proxy Proxy Proxy
应用以及缓存
扩容前 Step 1:灰度上线Download Node 扩容后
Download Node Download Node Download Node Download Node Download Node
Download Node Download Node Download Node Download Node Download Node
wCache wCache wCache wCache wCache
T FS集群
Step 3 :灰度上线TFS集群的Data Node 扩容后
扩容前
Data Node Data Node Data Node Data Node
在平台扩容整个系统的过程中,一共分为三个主要阶段:
1. 灰度上线一部分的Download Node,这个时候这些节点还没有生效。
2. 灰度更新一台proxy 的可调度Download Nodes,这台灰度的proxy 可以
hash sharding 到#1 扩容后的所有Download Nodes 上,这一步的目的是逐
步预热#1 上线的 DownloadNodes 节点上的wCache ,防止穿透到TFS 集
群,引起雪崩。
重复步骤2,完成所有Download Nodes 的wCache 缓存预热后,全量更
显示全部