Distributed file servers分布式文件服务器,本项目利用fastdfs进行核心的文件存储操作,编写fastcgi程序用于处理来自用户的各种请求(包括登录、注册、文件上传、文件下载、文件分享等)
- 主要技术点:fastdfs+fastcgi+nginx+mysql+redis
该项目是一个文件服务器,其主要功能是提供文件的上传、文件保存,当有需求时可以将文件下载的功能。
-
客户端
- b/s:必须使用http协议(浏览器)
- c/s:协议可以随意选择 Qt -> http(桌面应用)
-
服务器
-
静态请求:Nginx能处理静态请求 -> html, jpg
-
动态请求:fastCGI帮助服务器处理动态请求
-
服务器集群之后, 每台服务器上部署的内容必须相同
-
-
反向代理服务器
- 客户端并不能直接访问web服务器, 直接访问到的是反向代理服务器
- 客户端静请求发送给反向代理服务器, 反向代理将客户端请求转发给web服务器
-
mysql关系型数据库
- 存储文件属性信息
- 用户的属性信息
-
redis - 非关系型数据库 (内存数据库)
- 作用提出程序效率
- 存储是服务器经常要从关系型数据中读取的数据
-
FASTDFS - 分布式文件系统
- 存储文件内容
- 供用户下载
fastDFS是c语言编写的一款开源的分布式文件系统(余庆淘宝架构师)。为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,注重高可用、高性能等指标。可以很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。图床、网盘
- 冗余备份: 纵向扩容
- 线性扩容: 横向扩容
- 追踪器Tracker(守护进程):最先启动追踪器
- 存储节点Storage(守护进程):第二个启动的角色,存储节点启动之后, 会单独开一个线程
- 汇报当前存储节点的容量, 和剩余容量
- 汇报数据的同步情况
- 汇报数据被下载的次数
- 客户端:最后启动
服务器部署步骤:
-
执行make生成可执行程序(需要使用的cgi程序)
-
修改cfg.json中的相关数据
-
配置好fastDFS, 保证已经可以正常使用
-
修改当前目录下的nginx.conf配置文件
location /group1/M00{ root /home/luffy/fastDFS/storage/data; ngx_fastdfs_module; } 找到该配置项, 需要修改root对应的路径, 修改为自己fastDFS Storage的数据存储目录 该文件最终会被拷贝到nginx默认的配置文件目录中: /usr/local/nginx/conf
-
执行脚本文件start.sh