为什么要将文件上传到服务器

  • 对于传统项目来说,所有的静态资源比如文件等,都存储在一个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上(当然也要有得切换),保障服务的稳定。
  1. 前端文件先上传到Tomcat的临时文件夹下
  2. 临时文件夹下的文件上传到ftp服务器
  3. 删除临时文件夹下的文件
  • 不过作为练习,搭建单机版FastDFS即可。