相关术语
1、Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录storage server的状态,是连接Client和Storage server的枢纽。
2、Storage Server:存储服务器,文件和meta data都保存到存储服务器上
3、group:组,也可称为卷。同组内服务器上的文件是完全相同的
4、文件标识:包括两部分:组名和文件名(包含路径)
5、meta data:文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768
同步机制
1、同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;
2、文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器;
3、源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;
4、上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。
通信协议
1、协议包由两部分组成:header和body
2、header共10字节,格式如下:
8 bytes body length
1 byte command
1 byte status
3、body数据包格式由取决于具体的命令,body可以为空
运行时目录结构-tracker server
${base_path}
|__data
| |__storage_groups.dat:存储分组信息
| |__storage_servers.dat:存储服务器列表
|__logs
|__trackerd.log:tracker server日志文件
数据文件storage_groups.dat和storage_servers.dat中的记录之间以换行符(\n)分隔,字段之间以西文逗号(,)分隔。
storage_groups.dat中的字段依次为:
(1) group_name:组名
(2) storage_port:storage server端口号
storage_servers.dat中记录storage server相关信息,字段依次为:
(1) group_name:所属组名
(2) ip_addr:ip地址
(3) status:状态
(4) sync_src_ip_addr:向该storage server同步已有数据文件的源服务器
(5) sync_until_timestamp:同步已有数据文件的截至时间(UNIX时间戳)
(6) stat.total_upload_count:上传文件次数
(7) stat.success_upload_count:成功上传文件次数
(8) stat.total_set_meta_count:更改meta data次数
(9) stat.success_set_meta_count:成功更改meta data次数
(10) stat.total_delete_count:删除文件次数
(11) stat.success_delete_count:成功删除文件次数
(12) stat.total_download_count:下载文件次数
(13) stat.success_download_count:成功下载文件次数
(14) stat.total_get_meta_count:获取meta data次数
(15) stat.success_get_meta_count:成功获取meta data次数
(16) stat.last_source_update:最近一次源头更新时间(更新操作来自客户端)
(17) stat.last_sync_update:最近一次同步更新时间(更新操作来自其他storage server的同步)
运行时目录结构-storage server
${base_path}
|__data
| |__.data_init_flag:当前storage server初始化信息
| |__storage_stat.dat:当前storage server统计信息
| |__sync:存放数据同步相关文件
| | |__binlog.index:当前的binlog文件索引号
| | |__binlog.###:存放更新操作记录(日志)
| | |__${ip_addr}_${port}.mark:存放同步的完成情况
| |
| |__一级目录:256个存放数据文件的目录,如:00, 1F
| |__二级目录:256个存放数据文件的目录
|__logs
|__storaged.log:storage server日志文件
.data_init_flag文件格式为ini配置文件方式,各个参数如下:
# storage_join_time:本storage server创建时间;
# sync_old_done:本storage server是否已完成同步的标志(源服务器向本服务器同步已有数据);
# sync_src_server:向本服务器同步已有数据的源服务器IP地址,没有则为空;
# sync_until_timestamp:同步已有数据文件截至时间(UNIX时间戳);
storage_stat.dat文件格式为ini配置文件方式,各个参数如下:
# total_upload_count:上传文件次数
# success_upload_count:成功上传文件次数
# total_set_meta_count:更改meta data次数
# success_set_meta_count:成功更改meta data次数
# total_delete_count:删除文件次数
# success_delete_count:成功删除文件次数
# total_download_count:下载文件次数
# success_download_count:成功下载文件次数
# total_get_meta_count:获取meta data次数
# success_get_meta_count:成功获取meta data次数
# last_source_update:最近一次源头更新时间(更新操作来自客户端)
#last_sync_update:最近一次同步更新时间(更新操作来自其他storage server)
binlog.index中只有一个数据项:当前binlog的文件索引号
binlog.###,###为索引号对应的3位十进制字符,不足三位,前面补0。索引号基于0,最大为999。一个binlog文件最大为 1GB。记录之间以换行符(\n)分隔,字段之间以西文空格分隔。字段依次为:
(1)timestamp:更新发生时间(Unix时间戳)
(2)op_type:操作类型,一个字符
(3)filename:操作(更新)的文件名,包括相对路径,如:5A/3D/FE_93_SJZ7pAAAO_BXYD.S
${ip_addr}_${port}.mark:ip_addr为同步的目标服务器IP地址,port为本组storage server端口。例如:10.0.0.1_23000.mark。文件格式为ini配置文件方式,各个参数如下:
# binlog_index:已处理(同步)到的binlog索引号
# binlog_offset:已处理(同步)到的binlog文件偏移量(字节数)
# need_sync_old:同步已有数据文件标记,0表示没有数据文件需要同步
# sync_old_done:同步已有数据文件是否完成标记,0表示未完成,1表示已完成
# until_timestamp:同步已有数据截至时间点(UNIX时间戳)
# scan_row_count:已扫描的binlog记录数
# sync_row_count:已同步的binlog记录数
数据文件名由系统自动生成,包括三部分:当前时间(Unix时间戳)、文件大小(字节数)和随机数。文件名长度为16字节。文件按照PJW Hash算法hash到65536(256*256,默认配置下)个目录中分散存储。
分享到:
相关推荐
FastDFS是一款开源的高性能、轻量级的分布式文件系统,主要解决大容量存储和负载均衡问题,特别适合互联网行业中的图片、视频等大量...了解并掌握这些知识点,将有助于你顺利进行FastDFS的单点安装及后续的集群扩展。
通常,介绍文档会包含以下几个关键知识点: 1. **系统架构**:FastDFS采用C/S(客户端/服务器)模式,Tracker负责文件操作的调度,Storage负责文件的存储和提供下载服务。Tracker和Storage之间是主从结构,而...
源码中可能包含以下关键组件和知识点: 1. 连接管理:FastDFSClient会管理与FastDFS服务器的连接,包括建立TCP连接、心跳检测、连接池管理等。这涉及到网络编程的基础知识,如Socket编程和线程安全的连接管理。 2....
### FastDFS 文件系统搭建知识点详解 #### 一、概述 FastDFS是一款开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载等),解决了大容量存储和负载均衡...
综合上述信息,我们可以得出以下知识点: 1. FastDFS是一个分布式文件系统,适用于大容量中小文件的存储。 2. Maven是Java项目管理和构建工具,依赖于其管理的库(如fastDFS.jar)必须在Maven仓库中可用。 3. 使用...
### 虚拟机FastDFS配置静态IP的知识点详解 #### 一、FastDFS简介 FastDFS是一款开源的轻量级分布式文件系统,主要应用于互联网环境下大规模文件存储场景。它支持高并发、高性能以及可扩展性,适用于图片、视频等大...
下面是Linux安装FastDFS的详细步骤和知识点总结。 一、环境准备 1. 安装gcc:FastDFS是使用C语言开发的,因此需要安装gcc环境来编译FastDFS。使用yum install gcc-c++命令安装gcc。 2. 安装libevent:FastDFS依赖...
通过以上知识点的介绍,我们可以看到FastDFS-Nginx-Module V1.20在文件服务中的重要作用。在实际应用中,结合FastDFS的分布式特性和Nginx的反向代理能力,可以构建高效、稳定、可扩展的文件服务系统,满足企业级大...
以下是 FastDFS 的相关知识点。 一、FastDFS 简介 FastDFS 的整体架构主要包括三个角色:Tracker、Storage 和 Client。 1. Tracker:存储文件元数据信息,协调数据一致性,接收用户请求。Tracker 服务器是 ...
《FastDFS深度解析:从客户端到Java API》 FastDFS是一个开源的高性能、轻量级的分布式文件系统,主要用于解决大容量存储和负载...通过理解和掌握这些知识点,可以更好地利用FastDFS构建高效、稳定的文件存储系统。
以上就是SpringBoot集成FastDFS的基本流程和关键知识点。在实际应用中,我们还需要考虑文件权限控制、文件元数据管理、异常处理等问题,以提升系统的健壮性和用户体验。同时,为了适应不断变化的业务需求,我们还...
在使用FastDFS时,我们通常需要配置服务器端的FastDFS服务,并在客户端应用中引入相应的jar包,本文将详细讲解FastDFS客户端的核心组件`fastdfs_client_v1.20.jar`及其相关知识点。 1. **FastDFS简介** FastDFS...
下面详细探讨从给定文件中提炼出的FastDFS集群安装的关键知识点。 1. 安装文件信息 在FastDFS集群安装之前,需要准备好相关的安装文件,这些文件包括FastDFS、FastDFS-nginx-module、libevent、libfastcommon以及...
而FastDFS的Java客户端则是Java开发者在使用FastDFS时的重要工具,本文将详细介绍FastDFS Java客户端的使用方法和核心知识点。 一、FastDFS Java客户端概述 FastDFS Java客户端是Java语言实现的对FastDFS服务端的...
下面将详细探讨FastDFS的Web运用及其核心知识点。 首先,`pom.xml`是Maven项目的核心配置文件,它定义了项目依赖、构建过程等关键信息。在FastDFS的Web应用中,`pom.xml`通常会包含FastDFS客户端库和其他相关依赖,...
### FastDFS 文件服务器部署知识点详解 #### 一、FastDFS简介 FastDFS 是一款轻量级的开源分布式文件系统,由纯 C 语言编写而成,主要用于处理海量小文件的存储需求。FastDFS 支持 Linux、FreeBSD 和 AIX 等多种 ...
接下来,我们将详细讨论FastDFS的安装及其相关知识点。 1. **FastDFS概述** FastDFS是一个开源的高性能分布式文件系统,它对文件进行管理,包括文件存储、文件同步、文件访问(文件上传、文件下载)等功能,解决了...
以上就是基于给定文件信息构建FastDFS集群的基本过程和涉及到的知识点,每个环节都需要仔细操作和调试,确保服务的稳定和高效。在实际应用中,还可能需要考虑负载均衡、数据备份、安全性等问题,以适应不同业务场景...