基于FastDFS—分布式文件系统实现头像更新 (springboot+vue)后端实现
分布式文件系统
更加稳定 用于管理文件的软件 通常不在一个服务器的节点上
1、传统文件系统与分布式文件系统
传统:它可以是一个Tomcat或一个单独的计算只用于存放文件
缺点:服务器坏掉之后用户不能上传文件 若计算机磁盘损坏那么会使所有文件丢失
2、分布式文件系统:
准备多个文件系统,中间需要有一个分布式文件系统来管理所有存放的设备 需要根据文件的大小以及一些其他的信息决定将这个文件保存到某一个计算机中(主注:每一个文件系统都有一个数据备份的文件系统)
优点:解决了单点故障问,如果某一个节点出现故障还有其他的节点可以用来读取和写入文件,可以提供数据的备份避免因磁盘损坏的文件丢失,还可以提供扩容的机制,无限增加文件存储空间的上限。
FastDFS
是一个开源的轻量级的分布式文件系统,为互联网应用量身定做,简单,灵活,高效,采用C语言开发,有阿里巴巴开发并且开源。
功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等。,解决了大容量文件存储的问题,特别适合以文件为载体的在线服务,如相册网站、文档网站、视频网站。满足了高可用、高性能的标准
FastDFS整体架构
由两大部分组成:客户端,服务端
客户端通常指我们的程序,比如我们的java程序去连接FastDFS并且对其操做,那我们的java程序就是一个客户端,FastDFS提供专门的API访问,目前提供了C、java、php几种编程语言的API,用来访问FastDFS文件系统
服务器有两个部分组成:跟踪器、存储节点
跟踪器主要做调度工作,在内存中记录集群中存储节点storage的状态信息,是前端和后端存储节点的storage的枢纽,因为相关信息全部在内存中,Tracker server 的性能非常高,一个较大的集群中有3台就够了。
存储节点用于存储文件,包括文件和文件属性都保存到存储服务器的磁盘上,完成文件管理的所有功能:文件存储、文件同步、和提供文件访问等。
文件上传流程 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NGVIoBhy-1600157582539)(FastDFS.png)]
文件下载流程与文件上传流程类似也是先通过访问Tracker上传连接请求
FastDFS安装
下载地址:http://github.com/happyfish100/FastDFS
安装、配置以及启动FastDFS (具体请见下一篇文章)
环境搭建以及整合Springboot
1、添加依赖
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.29-SNAPSHOT</version>
</dependency>
注:maven中央仓库中没有该jar包,需要现在本地进行编译否则会出现jar包无法加载的问题。
下载地址:https://github.com/happyfish100/fastdfs-client-java
(1)、进入解压目录,打开CDM 输入mvn clean install 进行编译会将jar包自动编译进本地的maven仓库。
(2)进行相关配置在resoures 目录下创建fdfs_client.conf文件
connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 8080
http.anti_steal_token = no
tracker_server = 192.168.56.102:22122
connection_pool.enable = true
connection_pool.max_count_per_entry = 500
connection_pool.max_idle_time = 3600
connection_pool.max_wait_time_in_ms = 1000
(3)编写 FastDFSUtils 类
package com.xxxx.yeb.utils;
import org.csource.fastdfs.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;