028-86261949

当前位置:首页 > 技术交流 > FastDfs文件存储

FastDfs文件存储

2021/02/03 17:48 分类: 技术交流 浏览:0

FastDfs文件存储

在以前我们使用java的时候,发现更多的是单体项目。随着时间的推移,我们发现很多公司都不是单体项目了。都是前后端分离的项目或者是微服务,这时候我们就发现一个问题,如果是单体项目,以前我们如果上传附件都是把附件上传到当前项目上,但是这样也会带来几个问题:

  1. 附件上传是上传到项目上的,随着上传附件越多,项目会变得越卡
  2. 有时候在维护项目的时候不小心把附件删除,那丢失的文件就找不回来了
  3. Tomcat不适合处理静态资源,性能低下

所以基于这2个问题,我们一般会专门准备一个服务器,来存储这些静态资源,这时候我们就要自己搭建一个文件服务器,这个文件服务器就叫做fastdfs。

 

那怎么进行搭建fastdfs呢?

答:我们可以使用linux搭建,但是linux搭建文件服务器,太麻烦了,我们可以采用docker搭建文件服务器,一般只需要2个命令就可以搭建好

 

拉取镜像:docker pull registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs

开启防火墙:systemctl start firewalld

运行fastdfs容器:docker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP=119.8.127.151 -e WEB_PORT=80 -v ${HOME}/fastdfs:/var/local/fdfs registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs

关闭防火墙:systemctl stop firewalld

注意:需要先开启防火墙,运行完容器后再开放对应的端口或者是关闭防火墙,否则访问不到

进入到Fastdfs容器中执行:

echo “hello” > index.html

fdfs_test /etc/fdfs/client.conf upload index.html

 

测试访问

搭建好了之后就可以直接使用,这时候我们就可以通过java代码去操作fastdfs。我们把所有上传的附件都放到fastdfs服务器里面,这样就解决了以上3个问题

 

那肯定有人问fastdfs有什么好处呢?

  1. fastdfs是基于nginx安装的。Nginx作为http服务器,它擅长处理静态资源,并且处理性能很快
  2. 如果以后你要对服务器进行集群,那以后我们所有的服务器,都把文件上传到fastdfs上面去,然后fastdfs返回对应的附件url地址,从而解决了单体项目文件是跟项目在一起的,所以在任意的服务器都能获取到上传附件的url地址
  3. Fastdfs是开源的

 

要学习fastdfs就必须知道fastdfs几大核心对象内容:

              Tracker:调度中心

              Storage:实际存储文件

Fastdfs核心步骤:

  1. Storage Server定时报告Tracker Server自身的状态信息,当Storage没有返回状态信息的时候,TrackerServer就认为Storage Server已经不存在了
  2. 客户端发送上传请求
  3. Tracker Server查询可用的Storage,并告诉客户端对应的ip和端口
  4. 客户端根据指定的ip和端口号,然后上传对应的附件
  5. 客户端开始发送上传请求
  6. Storage Server就存储对应的文件
  7. 并且返回上传的路径和url地址
  8. 客户端保存返回路径
#标签:储存,Java,上传