TFS的原理及应用

article/2025/8/24 3:14:36

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

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

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

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

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

其1.0的架构如下:


TFS2.0的架构如下:


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

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

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

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

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

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

下面是TFS2的读写流程



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


/*** 获取tfsmanager* @return*/public static 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 = new DefaultTfsManager();tfsManager.setRsAddr(CONF_TFS_RS_ADDRESS);  // 设置WebService Root Server地址,地址格式为 ip:porttfsManager.setAppKey(CONF_TFS_APPKEY);  // 设置appkeytfsManager.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=new ByteArrayOutputStream();Map fileInfor=new HashMap();boolean result=tfsManager.fetchFile(tfsFileName,"",outputStream,fileInfor);if(result){return outputStream;}else {return null;}}


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


http://chatgpt.dhexx.cn/article/TImKQWD2.shtml

相关文章

TFS(Taobao File System)

简介 TFS(Taobao !FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海…

JDBC基本使用

文章目录 一、JDBC技术1.1、JDBC概念1.2、JDBC作用1.3、JDBC工作原理1.4、JDBC工作流程 二、使用JDBC访问数据库2.1、创建Maven项目2.2、添加数据库依赖2.2.1、mysql依赖2.2.2、oracle依赖 2.3、编写代码2.3.1、加载驱动2.3.2、通过DriverManager获取connection连接2.3.3、执行…

JDBC快速入门,如何使用JDBC操作数据库?

文章目录 1. 前言2. JDBC 概述2.1 概念2.2 优点3. JDBC 快速入门Java编程基础教程系列1. 前言 在 Java 开发中,使用 Java 语言操作数据库是非常重要的一部分,那么 Java 语言是如何操作数据库的呢?我们需要使用不同厂商的数据库时,例如 MySQL,Oracle 等,显然一套 Java 代…

JDBC操作数据库

数据库驱动 10、JDBC 10.1、数据库驱动 驱动:声卡,显卡,数据库 10.2、JDBC 10.3、第一个JDBC程序 创建测试数据库 1、创建一个普通项目 CREATE DATABASE jdbcstudyCREATE TABLE users ( id INT (4) PRIMARY KEY, name VARCHAR(40), pass…

JDBC中com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别

最近重装了系统,随后在官网下载了最新版本的MySQL8.0.13和相应的mysql-connector-java-8.0.13,运行程序时出现好几种错误。 之前的代码是这样的: driverClassNamecom.mysql.jdbc.Driver urljdbc:mysql:///db1?useUnicodetrue&characte…

JDBC概述

目录 一、JDBC概述二、JDBC搭建三、 PreparedStatement和Statement四、结果集处理 一、JDBC概述 1、JDBC(Java DataBase Connectivity)java 数据库连接 2、是一种用于执行SQL语句的java API ,可以为多种关系型数据库提供统一访问&#xff0c…

JDBC使用教程详解

文章目录 一、前言二、JDBC概述2.1 JDBC定义2.2 JDBC接口调用方和实现方JDBC接口调用方JDBC接口实现方 2.3 连接数据库驱动2.5 JDBC原理 三、JDBC编程url3.1URL3.3 SQL的分类 四、JDBC编程六步曲4.1 第一步:注册驱动4.2 第二步:获取数据库连接4.3 第三步…

【MySQL】JDBC编程

目录 1、什么是JDBC? 2、导入 jar 包 3、JDBC 的使用 4、总结 1、什么是JDBC? 实际开发中,SQL 是很少手动输入的,绝大多数的 SQL 都是通过代码,自动执行的,这个时候就需要让其他编程语言来操作数据库了…

MySQL JDBC编程

✏️作者:银河罐头 📋系列专栏:MySQL 🌲“种一棵树最好的时间是十年前,其次是现在” 文章目录 前置知识API JDBC的使用安装数据库代码插入操作查找操作 前置知识 API API(Application Program Interface)被定义为应用…

JDBC编程

目录 什么是 JDBC? JDBC 架构 常见的 JDBC 组件 分析Java连接MySQL的五种方式 方式一:将用户名和密码封装在Properties类中 方式二:在方式一的基础上,利用反射实现驱动 方式三:使用DriverManger替代driver进行统…

java——jdbc编程

文章目录 JDBC的概念JDBC的常用APIJDBC示例代码PreparedStatementCallableStatement JDBC(Java Database Connectivity)是Java的一种数据库访问标准,它提供了一套API,使得我们可以通过Java程序来访问和操作各种关系型数据库。 下面…

JDBC是什么

JDBC介绍 JDBC( Java DataBase Connectivity ) 称为 Java数据库连接 ,它是一种用于数据库访问的应用程序 API ,由一组用Java语言编写的类和接口组成,有了JDBC就可以 用统一的语法对多种关系数据库进行访问,而不用担心其数据库操作…

如何使用JDBC操作数据库?一文带你吃透JDBC规范

文章目录 1. 前言2. JDBC 概述2.1 概念2.2 优点 3. JDBC 快速入门4. JDBC API详解4.1 DriverManager4.1.1 注册驱动4.1.2 获取连接 4.2 Connection4.2.1 获取执行sql的对象4.2.2 事务管理 4.3 Statement4.4 ResultSet4.5 PreparedStatement4.5.1 sql注入问题4.5.2 preparedStat…

JDBC详解

1.JDBC是什么? Java DataBase Connectivity(Java语言连接数据库) 2.JDBC的本质是什么? JDBC是SUN公司制定的一套接口(interface) java.sql.*;(这个软件包下有很多接口) 接口都有…

JDBC简介

文章目录 一、JDBC简介二、JDBC执行步骤三、执行步骤中类的简介1、DriverManager类2.Connection类3、ResultSet类 一、JDBC简介 1.什么是jdbc JDBC全称:java database connectivity,简称jdbc, 翻译就是 Java 数据库连接。 2.jdbc有什么作用…

JDBC详细介绍

jdbc的概念 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的。 2.jdbc的作用 JDBC为Java程序操作不同的数据库提…

JDBC详细全解(示例超多)

文章目录 JDBCJDBC的概念1.jdbc的概念2.jdbc的本质 JDBC快速入门JDBC功能详解1、DriverManager驱动管理对象2、Connection数据库连接对象3、Statement执行sql语句的对象4、ResultSet结果集对象 JDBC案例案例需求数据准备1、数据库数据准备2、创建student类 功能实现1、查询所有…

JDBC介绍

1 JDBC简介 概念:JDBC(Java DataBase Connectivity) :Java数据库连接技术:具体讲就是通过Java连接广泛的数据库,并对表中数据执行增、删、改、查等操作的技术。如图所示: 此前我们学习过SQL后,可以通过 Na…

JDBC 连接 MySQL

哈喽~大家好,这次我们来看看 JDBC 如何 连接 MySQL. 目录 一、开头 二、介绍 1、JDBC 的概念 2、JDBC 的功能 3、JDBC 的常用接口和类 三、数据库的创建(MySQL) 1、连接 MySQL (1)、注册驱动 (2)、获取连接 (3)、获取执行者连接 …

BindingNavigator 类 - MSDN

.NET Framework 2.0 其他版本 5(共 9)对本文的评价是有帮助 - 评价此主题 注意:此类在 .NET Framework 2.0 版中是新增的。 表示窗体上绑定到数据的控件的导航和操作用户界面 (UI)。 命名空间:System.Windows.Forms 程序集:System.Windows.Fo…