FastDFS

一、简介

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

(一)架构

FastDFS架构包括TrackerServer和StorageServer。客户端请求TrackerServer进行文件上传、下载,通过TrackerServer调度最终由StorageServer完成文件上传和下载。

TrackerServer作用是负载均衡和调度,通过TrackerServer在文件上传时可以根据一些策略找到StorageServer提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。

StorageServer作用是文件存储,客户端上传的文件最终存储在Storage服务器上,StorageServer没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将Storage称为存储服务器。
架构
1、Tracker:管理集群,也可实现集群。每个tracker地位平等。收集Storage集群的状态
2、Storage:实际保存文件,分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组内部成员保存的内容一样,地位一致,没有主从的概念

(二)文件上传流程

文件上传
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
路径
1、组名:文件上传后所在的Storage组名称,在文件上传成功后由Storage服务器返回,需要客户端自行保存。
2、虚拟磁盘路径:Storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
3、数据两级目录:Storage服务器在每个虚拟磁盘路径下创建两级目录,用于存储数据文件
4、文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

(三)文件下载流程

文件下载

(四)最简单的FastDFS架构

简单架构

二、安装

搭建过程参见FASTdfs-1.0.docx,这里直接使用
1、图片服务器解压到VMWare目录
2、配置VMWare的网络
编辑—>虚拟网络编辑器
编辑器

桥接:虚拟机和电脑同级别访问网路
仅主机:虚拟机只能和该电脑通信
NAT:虚拟机可以和电脑或其他虚拟机通信

网关
3、开机
选择“我已移动该虚拟机”。

移动:网络配置不发生变化。要使用图片服务器,需要保证网络配置不变。
复制:重新生成一块网卡mac地址,是新地址。

IP地址:192.168.25.133
用户名root,密码itcast
startx:启动图型界面
图形界面
开机后Tracker、Storage、Nginx自启。

三、使用

(一)导入资源文件

将maven工程“fastdfs_client”添加到Eclipse,安装到仓库。在web中引用其jar包

(二)测试上传

1、普通上传

//创建一个配置文件,内容为tracker服务器的地址
//client.conf:tracker_server=192.168.25.133:22122
//使用全局对象加载配置文件
ClientGlobal.init("C:\\...\\e3-manager-web\\src\\main\\resources\\conf\\client.conf");
//创建一个TrackerClient对象
TrackerClient trackerClient = new TrackerClient();
//通过TrackerClient获得一个TrackerServer对象
TrackerServer trackerServer = trackerClient.getConnection();
//创建一个StorageServer对象,可以是null
StorageServer storageServer = null;
//创建一个StorageClient
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
//使用StorageClient上传文件
String[] strings = storageClient.upload_file("C:\\Users\\16434\\Pictures\\HPU.png", "png", null);
for (String string : strings) {
    System.out.println(string);//组名和图片的路径
}

2、工具类上传
引入工具类:FastDFSClient.java

FastDFSClient fastDFSClient = new FastDFSClient("D:/…/src/main/resources/resource/client.conf");
String file = fastDFSClient.uploadFile("D:/Documents/Pictures/images/2f2eb938943d.jpg");
System.out.println(file);

3、访问
http://192.168.25.133/group1/M00/00/00/wKgZhVpJpsmAf7DnAAhLW5zVZ9E101.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值