TFS全局资源管理
在早期,应用要使用TFS,需要知道TFS名字服务器的地址才能访问TFS,然后调用读写接口存取文件,当应用比较少时,这种方式不会引发什么问题,但目前在淘宝内部,有200多个应用使用TFS做为后端的存储系统,必须要对应用的存储资源进行统一的管理与运维。
TFS做为一个应用存储平台,缺乏统一管理至少存在如下问题:
- 多集群管理:多集群访问控制、切换、容灾等。
- 访问控制:应用只要知道了Nameserver服务的地址,就可以读写TFS,当有恶意用户不断向系统写数据时,无法找到攻击的源头。
- 存储配额:每个应用使用的存储空间无法控制,无法对存储容量进行规划。
TFS通过resource server(RC)来统一管理各个应用的资源,其主要维护以下信息:
- 各个集群的基本信息(编号、ns地址、读写权限等);
- 集群组信息(包含多个集群、即每个集群的角色、权限,用于容灾);
- 用于去除重复数据的dup server(使用tair)、支持自定义文件名服务的metaserver信息;
- 应用信息,应用的存储配额、分配的集群信息、应用读写统计信息等;
- 正在使用的应用的会话信息;
通过RC的统一管理,现在TFS服务的模式如下:
- 应用要使用TFS需要先进行在线申请,需提供预计需要的存储空间、访问特性(读、写比例、tps等)等信息。
- 通过审核的应用会得到一个app key,以后的访问需要带上appkey做为应用身份标识;同时会给应用分配一个集群组、并指定相应的读写权限。
- 当需要将应用切换到其他集群时,只需要更新应用使用到集群;应用与RC通过keepalive机制保持联系,当发现集群信息变化时,会在客户端更新这些信息。
- 用户的读写统计信息会周期性的汇报到RC,RC其进行整理并存储。