FastDFS(分布式文件系统)&&FastDFS作为图片服务器

本文深入解析FastDFS,一种高性能的分布式文件系统,适用于图片服务器等场景,具备高可用性和线性扩容特性。文章详细介绍了FastDFS的结构、工作原理及如何搭建和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FastDFS——分布式文件系统

FastDFS用在哪里

比如可以作为图片服务器,专门放照片,用来上传和下载图片

图片服务器要求

  1. 图片服务器存储容量是可以拓展的,不能说这台服务器存满了再换一台服务器。存满了之后加服务器
  2. 可以实现高可用,这台服务器挂了,还有另外一台可以接着用
  3. 提供一个统一的访问方式

什么是FastDFS

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

FastDFS结构

  • FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载
  • Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器
  • Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器
  • 服务端两个角色:
    Tracker server:管理集群,tracker也可以实现集群。每个tracker节点地位平等。用来收集Storage集群的状态。如果只有一台tracker服务器,挂了以后,client也是找不到storage的
    Storage server:实际保存文件
    Storage分为多个组,每个组之间保存的文件是不同的,实现扩容。每个组内部可以有多个成员,组成员内部保存的内容是一样的,实现备份,组成员的地位是一致的,没有主从的概念
    在这里插入图片描述

文件上传、下载过程

  • storage定期向tracker发送自己的状态信息,汇报自己的健康状态、存储情况、负载情况,因此tracker记录了storage集群每一台服务器的状态信息
  • 当客户端上传和下载图片的时候,知道该往哪个服务器上上传、下载图片吗?client不知道就去问tracker,这时候tracker就会挑一台空闲的、还有存储空间的服务器,返回给client一个IP和端口号,client知道这个IP和端口号以后就可以把信息存储到某个storage上了
  • 目前只是存到了某组的某一台服务器上,一个组的服务器之间同步线程,只要一台服务器上存储了,其他都会自动同步内容
    上传
    在这里插入图片描述

客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
在这里插入图片描述

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

下载
在这里插入图片描述

FastDFS搭建

如果要自己去搭建一个最小FastDFS文件系统,非常复杂,至少要一天时间,所以不推荐,直接使用下面有人做好的
在这里插入图片描述

FastDFS+Nginx实现文件服务器

通过http方式可以访问图片,FastDFS只是解决了图片保存的问题,你要想访问服务器里面的图片,必须安装nginx
在这里插入图片描述

图片服务器的安装使用

image-server.7z,这是一个vmware的虚拟机
在这里插入图片描述

  1. 把图片服务器在Windows的某个文件夹下解压缩

  2. 把图片服务器添加到Vmware中
    在这里插入图片描述
    在这里插入图片描述

  3. 打开image-server虚拟机的时候会出现如下报错情况,原因是两者的vmware版本号不一致
    在这里插入图片描述
    自己的vmware版本号是9
    在这里插入图片描述

在这里插入图片描述

  1. 一定要选择I moved it,如果选择I copied it将会生成新的Mac地址和网卡,原来的网络配置全都作废,图片服务器即便起来了也不能用。第一次加进来要选择I moved it,第二次要选I copied it

在这里插入图片描述

  1. 192.168.25.133初始是root、itcast,密码改成123456

  2. 命令startx启动图形界面
    在这里插入图片描述

  3. IP地址为192.168.25.133,更改网络配置
    在这里插入图片描述

在这里插入图片描述

  1. 这时候因为修改为了25,其他的虚拟机是连不上的,需要修改其他虚拟机的IP地址

FastDFS客户端的使用

  1. 将fastdfs_client工程导入eclipse,mvn install,添加相关依赖
  2. 创建配置文件,配置文件中的内容就是tracker服务的地址
tracker_server=192.168.25.133:22122
  1. 写测试代码
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.junit.Test;

public class FastDFSTest {
	@Test
	public void testFileUpload() throws Exception {
		// 1、加载配置文件,配置文件中的内容就是tracker服务的地址。
		ClientGlobal.init("D:/workspaces-itcast/e3-manager-web/src/main/resources/resource/client.conf");
		// 2、创建一个TrackerClient对象。直接new一个。
		TrackerClient trackerClient = new TrackerClient();
		// 3、使用TrackerClient对象创建连接,获得一个TrackerServer对象。
		TrackerServer trackerServer = trackerClient.getConnection();
		// 4、创建一个StorageServer的引用,值为null
		StorageServer storageServer = null;
		// 5、创建一个StorageClient对象,需要两个参数TrackerServer对象、StorageServer的引用
		StorageClient storageClient = new StorageClient(trackerServer, storageServer);
		// 6、使用StorageClient对象上传图片。
		//扩展名不带“.”
		String[] strings = storageClient.upload_file("D:/Documents/Pictures/images/200811281555127886.jpg", "jpg", null);
		// 7、返回数组。包含组名和图片的路径。
		for (String string : strings) {
			System.out.println(string);
		}
	}
}
  1. 运行测试代码以后,控制台出现如下的结果
    在这里插入图片描述

  2. 通过http可以访问图片服务器
    输入的地址如下图
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值