1提出问题
在目前的互联网应用中,服务器上会存储大量的用户上传的文件。例如:电商网站会存储大量商品图片,用户评论图片。这类文件会随着用户数量的增加、商品数量的增加以及评论数据的增加而持续增长。那么这些海量的持续增加的文件该如何保存呢?
①最初级的方式
在Web应用根目录下创建一个专门存储图片的目录。这样做会有三个问题
[1]如果文件体积不断增长,那么很可能把硬盘撑爆。
[2]Web应用重新部署后会导致用户文件目录被清空。
[3]集群模式下,必须保证多个应用服务器之间数据同步。
②增加硬盘
一块硬盘不够,可以在服务器上再增加硬盘,但毕竟服务器上能够挂载的硬盘数量是有限的。
③增加服务器
服务器的数量理论上是没有限制的,但是每一台服务器都有自己的IP地址,会导致文件上传后,下载文件的代码中需要考虑不同文件用不同IP地址去访问,非常麻烦。
所以我们需要这样一种服务器:
①上传下载的IP地址固定不变
②扩容简单,且扩容不会导致访问地址变化,也就是说相关的Java代码不需要根据扩容情况修改
③稳定高效,无单点故障
2FastDFS
2.1简介
FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等系统。
FastDFS是为互联网应用量身定做的分布式文件系统,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。和现有的类GoogleFS分布式文件系统相比,FastDFS的架构和设计理念有其独到之处,主要体现在轻量级、分组方式和对等结构三个方面。
FastDFS可以到GitHub上下载源码。
https://github.com/happyfish1...
2.2FastDFS基本架构
①Storage存储服务器
实际存储文件的专门服务器。整个集群下划分为多个组,每一个组中可以有多台具体存储服务器。同组的服务器靠同步线程确保内容一致。同组多台服务器之间没有主备之分,轮换提供服务,以此来保证不会发生单点故障。由于组内各服务器保存的数据一致,所以一个组的存储容量等于组内容量最小的服务器,故而建议使用相同配置的服务器作为Storage。
②Tracker追踪服务器
Tracker负责监控Storage的存储状态。Storage会按照一定的时间间隔不断的向Tracker汇报自己的健康状态、剩余容量、繁忙程度等等。Tracker据此选择健康状态好、剩余容量大、繁忙程度低的Storage处理用户请求。
3FastDFS主要工作流程
3.1文件上传流程
3.2文件下载流程
3.3文件删除流程
4最后
FastDFS是一款开源的轻量级分布式文件系统,纯C实现,支持Linux, FreeBSD等UNIX系统,类google FS, 不是通用的文件系统,只能够通过专有API访问,目前提供了C,Java和PHP API
为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性
FastDFS可以看做是基于文件的key-value存储系统,称为分布式文件存储服务更为合适
本篇让我们了解FastDFS的工作方式以及实用性,后面会写FastDFS服务器的搭建以及集成到Java的使用,请大家关注!
| 掘金 | segmentfault | V2EX | 知乎 | 博客园 | 开源中国 | github | 简书 | 芦苇科技 |
广州芦苇科技Java开发团队
author:yy_long
芦苇科技Java开发工程师
芦苇科技-广州专业软件外包服务公司
提供微信小程序、APP应用研发、UI设计等专业服务,专注于互联网产品咨询、品牌设计、技术研发等领域
访问 www.talkmoney.cn 了解更多
万能说明书 | 早起日记Lite | 凹凸壁纸 | 言财
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。