总结一个文件上传的案例,使用到的主要技术有:
1. angularJS文件上传,
2. Spring MVC 多媒体解析器组件:CommonsMultipartResolver,
3. FastDFS分布式文件系统。
1.FastDFS分布式文件系统
概述
百度百科:一个开源的轻量级分布式文件系统,FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
用来存储文件的服务器,是用c语言编写的,我们看一下它的系统架构:
简单介绍一下:FastDFS 服务端包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。
Tracker server 是用来管理调度Storage群的 ,Storage会定时向Tracker server发送报告(心跳检查),如果哪个没有发送,Tracker会认为这个Storage已经宕机,不会再调用它。所以实现了高可用性。
Storage也是一个分布式+集群的架构,所以访问时,要通过nginx反向代理访问。
文件上传流程
客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文件的索引信息。
java客户端使用:
FastDFS 的安装一般是由运维工程师完成的,我们开发人员需要知道其ip地址。
写一个上传文件的demo:
1.导入依赖
<dependency>
<groupId>org.csource.fastdfs</groupId>
<artifactId>fastdfs</artifactId>
<version>1.2</version>
</dependency>
这个jar中央仓库没有,我们要自己上传到本地仓库
2.配置文件:
connect_timeout = 2
network_timeout = 30
charset = ISO8859-1
http.tracker_http_port = 8080
http.anti_steal_token = no
http.secret_key = FastDFS1234567890
tracker_server = IP地址:22122
将我们的FastDFS服务器ip地址填写进去,这个配置文件哪来的,安装好FastDFS后,它自带有一些启动脚本及配置文件,这个配置文件的目录是/etc/fdfs/client.co