IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> fdfs-文件上传信息返回详情 -> 正文阅读

[系统运维]fdfs-文件上传信息返回详情

返回信息

在这里插入图片描述

一、组名:文件上传后所在storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。

二、虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。

三、数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
:
四、文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

FASTDFS FileID信息

补充
合并存储:
FastDFS提供的合并存储功能,默认创建的 大文件为64MB,然后在该大文件中存储很多小文件。大文件中容纳一个小文件的空间称为一个Slot,规定Slot最小值为256字节,最大为16MB,也就是小于256字节的文件也需要占用256字节,超过16MB的文件不会合并存储而是创建独立的文件。
合并存储配置:
FastDFS提供了合并存储功能的实现,所有的配置都在tracker.conf文件之中,具体摘录如下:trunk功能启动与配置:通过tracker.conf文件启动与配置,多个配置项如下:

use_trunk_file = true #是否启用trunk存储, 默认:false不开启,true是开启
slot_min_size= 256 #单位:bytes,trunk文件最小分配单元,小于this的也会花费256bytes存储 slot_max_size = 1MB #trunk内部存储的最大文件,超过该值会被独立存储,默认16MB trunk_file_size = 64MB #trunk文件大小
trunk_create_file_advance = false #是否预先创建trunk文件
trunk_create_file_time_base = 02:00 #预先创建trunk文件的基准时间
trunk_create_file_interval = 86400 #预先创建trunk文件的时间间隔
trunk_create_file_space_threshold = 20G #trunk创建文件的最大空闲空间
trunk_init_check_occupying = false #启动时是否检查每个空闲空间列表项已经被使用
trunk_init_reload_from_binlog = false #是否纯粹从trunk-binlog重建空闲空间列表
trunk_compress_binlog_min_interval = 0 #对trunk-binlog进行压缩的时间间隔

注:采用合并存储后的大文件统称为Trunk文件,没有合并存储的文件统称为源文件;
注意区分三个概念:
1)Trunk文件:storage服务器磁盘上存储的实际文件,默认大小为64MB
2)合并存储文件的FileId:表示服务器启用合并存储后,每次上传返回给客户端的FileId,注意此时该FileId与磁盘上的文件没有一一对应关系;
3)没有合并存储的FileId:表示服务器未启用合并存储时,Upload时返回的FileID,fileid 采用 Base64 url编码。
1、存储文件命名与文件结构
向FastDFS上传文件成功时,服务器返回该文件的存取ID叫做fileid,当没有启动合并存储时该fileid和磁盘上实际存储的文件一一对应,当采用合并存储(trunk存储)时就不再一一对应而是多个fileid对应的文件被存储成一个大文件。

Trunk文件文件名格式:fdfs_storage1/data/00/00/000001 文件名从1开始递增,类型为int;
源文件文件名格式 :group2/M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png

2、没有合并存储的fileid
文件名(不含后缀名)采用Base64编码,包含如下5个字段(每个字段均为4字节整数)
group2/M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png
文件名中,除了.png 为文件后缀,rBABtGIfljmACwDjAAC5ERGBk_A347 这部分是一个base64编码缓冲区,组成如下:
storage_id(ip的数值型)源storage server ID或IP地址
timestamp(文件创建时间戳)
file_size(若原始值为32位则前面加入一个随机值填充,最终为64位)
crc32(文件内容的检验码)
随机数 (引入随机数的目的是防止生成重名文件)
rBABtGIfljmACwDjAAC5ERGBk_A347
| 4bytes | 4bytes    | 8bytes    |4bytes | 2bytes |
| ip     | timestamp | file_size |crc32  | 校验值 |

3、获取FiledID信息

  1. 查看文件信息
# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf 2-14.png //上传文件
group2/M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png
# /usr/bin/fdfs_file_info /etc/fdfs/client.conf group2/M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png   //查看信息
source storage id: 0
source ip address: 172.16.0.1
file create timestamp: 2022-03-02 16:07:21
file size: 47377
file crc32: 293704688 (0x118193F0)
  1. Java获取文件ID信息
FileInfo f2 = storageClient.get_file_info("group2", "M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png");
LOG.info(f2.toString());
//rBABtGIfljmACwDjAAC5ERGBk_A347
byte[] fileId = StorageClient.base64.decodeAuto("rBABtGIfljmACwDjAAC5ERGBk_A347".substring(27));
int trunkID = ProtoCommon.buff2int(fileId, 0);
LOG.info("trunk ID:{}", trunkID);
int offset = ProtoCommon.buff2int(fileId, 4);
LOG.info("offset:{}", offset);
int alloc_size = ProtoCommon.buff2int(fileId, 8);
LOG.info("alloc_size:{}", alloc_size);

或者

/**
* 获取文件信息
*
 * param string group_name 文件所在的组名
* param string file_id 文件id(如: M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png)
*
* return array
*/
fastdfs_get_file_info(string group_name, string file_id)

返回结果示例:

source storage id: 0
source ip address: 172.16.89.162
file create timestamp: 2016-11-10 11:26:32
file size: 111831
file crc32: 3676413605 (0xDB219EA5)
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:53:58  更:2022-03-03 16:55:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:28:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码