在早期,应用要使用TFS,需要知道TFS名字服务器的地址才能访问TFS,然后调用读写接口存取文件,当应用比较少时,这种方式不会引发什么问题,但目前在淘宝内部,有200多个应用使用TFS做为后端的存储系统,必须要对应用的存储资源进行统一的管理与运维。

TFS做为一个应用存储平台,缺乏统一管理至少存在如下问题:

  1. 多集群管理:多集群访问控制、切换、容灾等。
  2. 访问控制:应用只要知道了Nameserver服务的地址,就可以读写TFS,当有恶意用户不断向系统写数据时,无法找到攻击的源头。
  3. 存储配额:每个应用使用的存储空间无法控制,无法对存储容量进行规划。

TFS通过 resource server(RC) 来统一管理各个应用的资源,其主要维护以下信息:

  1. 各个集群的基本信息(编号、ns地址、读写权限等);
  2. 集群组信息(包含多个集群、即每个集群的角色、权限,用于容灾);
  3. 用于去除重复数据的dup server(使用tair)、支持自定义文件名服务的metaserver信息;
  4. 应用信息,应用的存储配额、分配的集群信息、应用读写统计信息等;
  5. 正在使用的应用的会话信息;

通过RC的统一管理,现在TFS服务的模式如下:

  1. 应用要使用TFS需要先进行在线申请,需提供预计需要的存储空间、访问特性(读、写比例、tps等)等信息。
  2. 通过审核的应用会得到一个app key,以后的访问需要带上appkey做为应用身份标识;同时会给应用分配一个集群组、并指定相应的读写权限。
  3. 当需要将应用切换到其他集群时,只需要更新应用使用到集群;应用与RC通过keepalive机制保持联系,当发现集群信息变化时,会在客户端更新这些信息。
  4. 用户的读写统计信息会周期性的汇报到RC,RC其进行整理并存储。

ref:
2013-04-19 14:13
blog.yunnotes.net

0 回复
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。