为什么要将文件上传到服务器
- 对于传统项目来说,所有的静态资源比如文件等,都存储在一个Tomcat服务器上。
- 访问量较小时问题不大,但是对于互联网项目来说,这样一个Tomcat服务器远远不能满足需求。
- 既然一个不够,那么就部署Tomcat集群,有集群就需要负载均衡,一般使用Nginx来作为负载均衡服务器。
- 然而,Tomcat集群的缺点很明显。假如把一张图片上传到Tomcat1的images目录下,第一次用户请求访问这张图片时,Nginx把请求分发给Tomcat1处理,它能找到该图片,但如果第二次分发给了Tomcat2去处理,这时就找不到该图片了。作为用户体验,一次访问能看到,刷新一下又看不到,再刷新又看到了,实在很不美好。
- 为此,我们对集群做下改善,专门做一个图片服务器,将图片上传到该服务器,Tomcat本身并不保存图片。我们采用http的方式来访问图片,能作为http服务器的选择有多种
- Tomcat:但是强项不在于处理静态资源,而是servlet&jsp等动态请求。
- Apache:但是逐渐式微。
- Nginx:因其独特优势而火爆
- 我们就采用Nginx来统一管理http请求,而图片服务器选择FastDFS。
- 特别的,FastDFS存储资源的设备是按组来区分的,当存储空间不足时,便可以通过水平增加分组并相应添加设备来达到扩容的目的,成为FastFDS集群,而且无上限。另外一个优势是高可用,FastDFS集群能够做到当提供服务的Nginx发生故障时,自动切换到另一台Nginx上(当然也要有得切换),保障服务的稳定。
- 前端文件先上传到Tomcat的临时文件夹下
- 临时文件夹下的文件上传到ftp服务器
- 删除临时文件夹下的文件
- 不过作为练习,搭建单机版FastDFS即可。