分布式文件系统FastDFS 技术整理( 二 )


分布式文件系统FastDFS 技术整理

文章插图
 
 
文件下载
  • 后端low代码如下
import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder;@WebServlet("/downFile") public class downFileInClientServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 1、获取让浏览器下载的文件路径String FileRealPath = "D:\JavaTrainStudy\servlet\out\production\study06-httpServletResponse\loginbg.png";// 2、告知浏览器要下载的文件名是什么?String fileName = FileRealPath.substring( FileRealPath.lastIndexOf("\") + 1 );// 3、让浏览器支持文件下载// Content-Disposition这个就是让浏览器支持文件下载// URLEncoder.encode( String s , String enc ) 是为了以防文件名是中文名,这样就设置编码格式了,让浏览器能够解析这个中文文件名resp.setHeader("Content-Disposition" , "attachment ; filename=" + URLEncoder.encode(fileName , "utf-8"));// 4、获取输入、输出流对象 并 把服务器中的文件输出到浏览器上FileInputStream fis = new FileInputStream( FileRealPath );ServletOutputStream os = resp.getOutputStream();// 创建缓冲区int len = 0 ;byte[] buffer = new byte[1024];while ( ( len = fis.read( buffer ) )> 0 ){os.write( buffer , 0 , len);}// 5、关闭流管道if ( os != null ){os.close();}if ( fis != null ){fis.close();}} }
分布式文件系统FastDFS 技术整理

文章插图
 
 
分布式文件系统
分布式文件系统FastDFS 技术整理

文章插图
 
  • 优点解决了传统方式的单点故障问题若某一个节点出现故障,则还有其他的节点可以用来读取和写入文件提供数据备份从而避免磁盘损坏而导致的文件丢失提供扩容机制,无限增加文件存放的空间上限

 
1.2、认识FastDFS
补充:常见的分布式文件系统
  • FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS

 
1.2.1、了解FastDFS
  • 官网:https://github.com/happyfish100/fastdfs
  • FastDFS是一个开源的轻量级分布式文件系统,为互联网应用量身定做,简单、灵活、高效,采用C语言开发,由阿里巴巴开发并开源
  • FastDFS对文件进行管理,功能包括:文件存储、文件同步( 指的是:文件系统 和 数据备份之间的同步 )、文件上传、文件下载、文件删除等
  • FastDFS解决了大容量文件存储的问题
  • FastDFS特别适合以文件为载体的在线服务,如相册网站、文档网站、图片网站、视频网站等
  • FastDFS充分考虑了冗余备份、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务冗余备份:指的是文件系统中存的文件 和 数据备份中存的文件完全一致的问题线性扩容:文件系统 和 数据备份不断增加呗( 就是上图中再加几份嘛 ),和水平扩容类似

 
1.2.2、FastDFS的组成结构