天天看点

Spring boot 中使用分布式文件系统FastDfs--附代码

1. fastDfs简介

开源项目地址:添加链接描述

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

1.1 三个角色:

​ 追踪器:Tracker,存储节点:Storage,连接客户端:Client

Spring boot 中使用分布式文件系统FastDfs--附代码

​ Storage节点会主动连接Tracker,报告存储节点剩余空间,和文件同步状态等信息。当有client客户端操作时,会主动连接Tracker,获取存储节点的ip和端口,使用网络连接来上传和下载文件。

1.2 分布式扩展

​ 分布式整体布局图:

Spring boot 中使用分布式文件系统FastDfs--附代码

1.2.1 tracker集群

​ tracker server之间是相互平等关系,同时提供服务,客户端请求tracker server采用轮询的方式,如果请求的tracker无法服务,则换另一台服务。

1.2.2 stroage集群

​ storage集群采用了分组的存储方式,由一个或多个组构成,如group1,group2。

​ 集群存储总容量为所有组存储总容量之和。一个组由一台或多台存储服务器组成,组内的存储storage server是平等关系,组内多台为备份作用,该组的容量是组内最小存储容量(木桶效应)。不同组之间是不会通信的,同组内的storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致。

1.3 扩容

​ 横向扩容:

​ 扩充组,扩充了整个集群的存储容量

​ 纵向扩容:

​ 数据备份,扩充组内存储服务器;所有节点的组名是相同的。

2.Fastdfs安装并配置nginx

参看部署:https://github.com/happyfish100/fastdfs/wiki

Spring boot 中使用分布式文件系统FastDfs--附代码

3.Spring boot中使用fastdfs

3.1 引入依赖

<!-- taobao fastdfs依赖 -->
<dependency>
  <groupId>com.github.tobato</groupId>
  <artifactId>fastdfs-client</artifactId>
  <version>1.26.5</version>
</dependency>
           

3.2 配置

# 分布式文件系统FDFS配置
fdfs:
  soTimeout: 1500 #socket连接超时时长
  connectTimeout: 600 #连接tracker服务器超时时长
  thumbImage: #缩略图生成参数,可选
    width: 150
    height: 150
  trackerList: #TrackerList参数,支持多个,我这里只有一个,如果有多个在下方加- x.x.x.x:port
    		- 192.168.31.38:22122
           

3.3 测试示例:

​ spring-boot-fastdfs

继续阅读