记录一次部署文件服务器FastDFS(1)
前言
最近公司产品业务不断发展壮大,原来代码和文件放在tomcat下的弊端开始显露出来了,主要体现在文件和代码耦合在一起,文件越多存放越混乱;还有就是并发量增大了,用户对视频等静态文件的访问会占据一定的资源,影响正常业务进行,受到不少吐槽。所以准备将文件迁移到文件服务器,因为自己曾经学习过FastDFS文件服务器的部署,被大佬叫来部署一套对内试用的文件服务器...
什么是FastDFS
FastDFS是一款开源的轻量级分布式文件系统纯C实现,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key-value的pair存储系统,称作分布式文件存储服务更为合适。
相关术语
1.tracker server: 跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录storage server的状态,是连接Client和Storage server的枢纽。
2.storage server:存储服务器,文件和meta data都保存到存储服务器上
3.client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与***服务器或存储节点进行数据交互。FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。
4.group:组,也可称为卷。同组内服务器上的文件是完全相同的。
5.meta data:文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768
上传文件流程图
1.client询问tracker上传到的storage,不需要附加参数;
2.tracker返回一台可用的storage;
3.client直接和storage通讯完成文件上传
下载文件流程图
1.client询问tracker下载文件的storage,参数为文件标识(组名和文件名);
2.tracker返回一台可用的storage;
3.client直接和storage通讯完成文件下载。
同步机制
1.同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;
2.文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器;
3.源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;
4.上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage
5.server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。