专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

TFS的原理及应用

最近的一个项目由于原先的nas服务停了,所以没有办法,只能迁移到TFS上。这本来是一个内部的分享的。TFS本身也是开源了,所以就拿出来分享一下吧。

这里大部分内容出自TFS的开源网站及内部的wiki,下面是TFS的项目

TFS开源项目:code.taobao.org/p/tfs/wiki/…

TFS是taobao filesystem的简称,是一个分布式的文件系统,目前最新的版本是TFS2.X

TFS和NAS相比,具有线性扩容好,高并发性能好。和HDFS相比更适合小文件,和FastDF相比支持自定义文件夹结构

其1、0的架构如下:

94_1.pngTFS2.0的架构如下:

94_2.png其中,nameserver负责元数据的管理,文件的定位,写文件块的分配,dataserver的管理,数据备份监控,数据分布及负载均衡。以及操作日志的管理。

dataserver用来存储管理数据文件,处理客户端的文件访问,转发数据写入请求,复制和处理数据文件。

resourcecenter用来管理应用(权限和统计),集群的管理(扩容及应用透明化),计算距离实现就近访问

metaserver用来提供目录和自定义文件服务,也能用来做为后端数据库存储的缓存

rootserver用来刮泥metaserver并且分配metaserver的服务对象

下面是TFS1的写流程和读流程

94_3.png

94_4.png下面是TFS2的读写流程

94_5.png

94_6.pngTFS有自己的读写API,包括JAVA,c++,python,php各种版本,使用非常简单,下面是我自己封装的一个Utils类

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 /** * 获取tfsmanager * @return / publicstatic DefaultTfsManager getTfSManager(){ String CONF_TFS_RS_ADDRESS=ConfigManager.getConfigValue(“tfs.rsAddr”); String CONF_TFS_APPKEY=ConfigManager.getConfigValue(“tfs.appkey”); String CONF_TFS_IMG_SERVER=ConfigManager.getConfigValue(“tfs.image.host”); DefaultTfsManager tfsManager = newDefaultTfsManager(); tfsManager.setRsAddr(CONF_TFS_RS_ADDRESS); // 设置WebService Root Server地址,地址格式为 ip:port tfsManager.setAppKey(CONF_TFS_APPKEY); // 设置appkey tfsManager.init(); return tfsManager; } /* * 存储tfs文件 * @param inputStream * @param fileName * @return / public static String saveTfsFile(InputStream inputStream,String fileName){ try{ DefaultTfsManager tfsManager=getTfSManager(); byte[] fileBytes = FileUtils.inputStreamToByte(inputStream); String fileExt=FileUtils.getFileExt(fileName); String tfsfileName=tfsManager.saveFile(fileBytes,null,fileExt,true); return tfsfileName; } catch(IOException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. return “”; } } /* * 获取tfs文件 * @param tfsFileName * @return */ public static OutputStream getTfsFile(String tfsFileName){ DefaultTfsManager tfsManager=getTfSManager(); OutputStream outputStream=newByteArrayOutputStream(); Map fileInfor=newHashMap(); boolean result=tfsManager.fetchFile(tfsFileName,””,outputStream,fileInfor); if(result){ returnoutputStream; }else{ returnnull; } }

总结一下,以上内容大部分来着TFS的开源项目文档,大家有兴趣可以访问看一下。TFS使用非常简单,基本上可以替换我原先项目中对NAS的依赖。

文章永久链接:https://tech.souyunku.com/30046

未经允许不得转载:搜云库技术团队 » TFS的原理及应用

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们