职位上的调动导致自己很长一段时间没有做总结了,忙里偷闲来说点什么吧
关于这个做总结的事情,想了很久还是选择抛弃一些,毕竟所有的都记录下来的话所花费的时间实在太长了,所以之后会选择一些技术点或者感觉值得写下来的
先来说一下这个fastDFS分布式文件系统吧
什么是fastDFS
- fastDFS是一个底层使用C语言编写并且开源的分布式文件系统
作用
- 可以统一管理存储服务器集群,统一管理存储读取文件
fastDFS工作流程(原理)
- fastDFS一共分为三部分,client客户端(项目),trackerServer管理端,storageServer存储端
- client客户端(项目):使用fastDFS的jar包中的api来存储文件,调用fastDFS
- tarckerServer管理端:管理storageServer存储端集群,管理端如果死掉存储段无法使用,所有管理端都是做双击热备,就是一台主机,一台备机,他们之间做心跳检测机制,平时主机工作,备机向主机发送ping命令,主机接收到后返回pong命令,如果一段时间内没有返回,备机会认为主机死掉会代替主机工作,这样可以保证管理端的高可用,管理端还有负载均衡的功能,可以平均分配请求给存储端,这样就可以承载高并发的存储需求
- storageServer存储端:他负责具体存储文件,也是两台为一组,一台主机一台备机,之间双机热备,做心跳检测,保证存储端的高可用,存储端做冗余备份,就是我们向存储端主机存储内容,主机会向备机发送内容,主机和备机存储的内容是一样的,所以主机即使坏掉,备机也有同样的内容可以使用,这种叫做容灾配置,存储端理论上存储容量是无限的,因为两台为一组机器可以无限扩展
- 流程:我们项目存储的时候先调用管理端,管理端会给我们分配一台存储端的IP地址和端口,我们向存储端机器存储文件,存储端会给我们返回存储后的地址以及文件名,文件名会自动被存储端重命名,防止文件重名
优缺点:
优点:
- 管理端有负载均衡的功能,可以承载高并发的存储需求
- 存储端可以无限扩展,理论上存储容量是无限的,扩展性好
- 存储端和管理端都使用的心跳检测机制,保证了服务器的高可用
- 存储端做了冗余存储,所以即使有机器坏掉也不会丢数据,容灾性好
缺点:
- fastDFS结构复杂,会使项目中的复杂度变高,并且搭建fastDFS会使用很多服务器
这就开始说项目中的运用吧
添加fastDFS的依赖
<dependency>
<groupId>org.csource.fastdfs</groupId>
<artifactId>fastdfs</artifactId>
<version>1.2</version>
</dependency>
由于fastDFS客户端的jar包并没有在中央仓库中,所以需要手动下载jar包到本地仓库中
mvn install:install-file -DgroupId=org.csource.fastdfs -DartifactId=fastdfs -Dversion=1.2 -Dpackaging=jar -Dfile=d:\setup\fastdfs_client_v1.20.jar
配置fastDFS官方提供的配置文件fdfs_client.conf
# connect timeout in seconds
# default value is 30s
connect_timeout=30
# network