logo资料库

云盘项目开发全部内容包括源码解析.docx

第1页 / 共131页
第2页 / 共131页
第3页 / 共131页
第4页 / 共131页
第5页 / 共131页
第6页 / 共131页
第7页 / 共131页
第8页 / 共131页
资料共131页,剩余部分请下载后查看
1. 项目概要
2. 分布式存储FastDFS
2.1 什么是分布式存储
2.2 FastDFS
2.2.1 什么是FastDFS
2.2.2 架构简析
2.3 FastDFS安装和配置
2.3.1 旧版本FastDFS说明
2.3.2 libfastcommon的安装
2.3.3 FastDFS的安装
2.3.4 FastDFS的配置
2.3.4.1 tracker的配置
2.3.4.2 storage的配置
2.3.4.3 client的配置
2.3.4.4 启动服务
2.4 FastDFS客户端
2.4.1 测试storage状态
2.4.2 上传、下载文件测试
2.4.3 上传文件源码简析
2.4.4 客户端编程实现
2.4.4.1 日志文件的使用
2.4.4.2 客户端编程实现
3. 缓存数据库:redis
3.1 为什么需要缓存?
3.2 什么是redis
3.2.1 redis简介
3.2.2 redis优点
3.2.3 redis使用场景
3.3 redis安装
3.3.1 相关资源
3.3.2 redis的安装
3.3.3 配置文件
3.3.4 环境测试
3.4 redis数据类型
3.4.1 数据类型分类
3.4.2 String—字符串
3.4.3 Hash—字典
3.4.4 List—列表
3.4.5 Set—无序集合
3.4.6 Sorted Set—有序集合
3.4.7 Pub/Sub—订阅/发布
3.4.8 Transactions—事务
3.5 redis持久化
3.5.1 备份数据
3.5.2 恢复数据
3.5.3 RDB方式(默认)
3.5.4 AOF方式
3.6 redis性能测试
3.7 redis客户端编程
3.7.1 redis-hiredis的安装
3.7.2 客户端示例代码
3.7.3 客户端编程
3.7.3.1 测试用例
3.7.3.2 接口封装
4. 持久化数据库:MySQL
4.1 环境搭建
4.1.1 ubuntu下环境搭建
4.1.2 MySQL常用操作
4.2 登陆数据库
4.2.1 本地登录
4.2.2 远程登录
4.3 支持中文的解决方法
4.4 客户端编程
4.5 缓存和持久化数据库配合使用
4.5.1 操作规则
4.5.2 redis和mysql的交互
5. HTTP协议
5.1 简介
5.1.1 Web服务器
5.1.2 HTTP协议
5.1.3 HTTPS协议
5.1.4 地址(URL)
5.2 HTTP报文浅析
5.2.1 请求报文格式
5.2.1.1 服务器测试代码
5.2.1.2 请求报文格式说明
5.2.2 响应报文格式
5.2.2.1 客户端测试代码
5.2.2.2 响应报文格式说明
5.3 使用HTTP协议实现通信
5.3.1 概述
5.3.2 通信过程
6. Nginx
6.1 Nginx简介
6.1.1 什么是Nginx
6.1.2 Netcraft 数据统计
6.1.3 Nginx优势
6.1.4 Nginx相关资源
6.2 Nginx的安装和配置
6.2.1 使用Nginx的必备软件
6.2.1.1 gcc、g++编译器
6.2.1.2 PCRE库
6.2.1.3 zlib库
6.2.1.4 OpenSSL开发库
6.2.2 Nginx的安装和启动
6.2.2.1 编译安装Nginx
6.2.2.2 Nginx的启动和关闭
6.2.2.3 日志文件
6.2.3 Nginx相关配置
6.2.3.1 Nginx配置系统
1) 配置指令
2) 指令参数
3) 指令上下文
6.2.3.2 Nginx通用配置
6.2.3.3 Nginx配置说明
6.3 反向代理
6.3.1 什么是反向代理
6.3.2 反向代理服务器配置
7. FastCGI
7.1 CGI
7.1.1 什么是CGI
7.1.2 CGI处理流程
7.1.3 环境变量
7.1.4 标准输入
7.2 FastCGI
7.2.1 什么是FastCGI
7.2.2 FastCGI处理流程
7.2.3 进程管理器管理:spawn-fcgi
7.2.3.1 什么是spawn-fcgi
7.2.3.2 编译安装spawn-fcgi
7.2.4 软件开发套件:fcgi
7.2.4.1 编译安装fcgi
7.2.4.2 测试程序
7.2.4.3 有关Nginx的fcgi的配置
7.2.4.4 echo回显应用程序
8. FastDFS的Nginx模块
8.1 概述
8.2 Nginx上部署FastDFS
8.2.1 模块包的安装
8.2.2 fastdfs-nginx-module 的配置
8.2.2.1 fastdfs-nginx-module配置文件
8.2.2.2 建立软连接
8.2.2.3 配置nginx
8.2.3 测试环境
9.Qt客户端编程
9.1 QListWidget的使用
9.2 QJsonDocument的使用
9.3 QTableWidget的使用
9.4 参考界面
9.5 QNetworkAccessManagerd的使用
10. 后台数据处理
10.1 注册功能
10.1.1 业务流程
10.1.2 MD5
10.2 登陆功能
10.2.1 业务流程
10.2.2 Token验证
10.2.3 Base64
10.3 上传文件
10.3.1 业务流程
10.3.2 秒传文件
10.3.3 上传文件
10.4 获取用户文件列表
10.4.1 业务流程
10.4.2 文件列表json包
10.5 分享文件
10.6 删除文件
10.7 下载文件
10.8 其它功能
传智播客 C++学院 1. 项目概要 本项目主要讲解高负载的分布式存储解决方案:  基于 Nginx 作为反向代理和轻量级 web 服务器  FastCGI 作为中间包裹,后台应用程序用 C/C++完成  分布式解决方案用 FastDFS 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
2. 分布式存储 FastDFS 2.1 什么是分布式存储 分布式存储简单的来说,就是将数据分散存储到多个存储设备(服务 器)上。 传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务 器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规 模存储应用的需要。 分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分 担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可 靠性、可用性和存取效率,还易于扩展。 经典的分布式文件系统介绍: http://os.51cto.com/art/201209/357433.htm 2.2 FastDFS 2.2.1 什么是 FastDFS FastDFS 是一款开源的、分布式文件系统(Distributed File System), 由 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
淘宝开发平台部资深架构师余庆开发。它对文件进行管理,功能包括: 文件存储、文件同步、文件访问(文件上传、文件下载、文件删除) 等,解决了大容量存储和负载均衡的问题。 FastDFS 是通过纯 C 实现,支持 Linux, FreeBSD 等 Unix 系统类 Google FS, 不是通用的文件系统,只能够通过专有 API 访问,目前提供了 C, Java 和 PHP API 为互联网应用量身定做,解决大容量文件存储问题, 追求高性能和高扩展性 FastDFS 可以看做是基于文件的 key-value 存 储系统,称为分布式文件存储服务更为合适。 FastDFS 相关资源:  开源项目主页:https://code.google.com/archive/p/fastdfs/  源码下载:fastdfs.sourceforge.net  ChinaUnix 论坛版块:http://bbs.chinaunix.net/forum-240-1.html 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
2.2.2 架构简析 我们可以通过 FastDFS 对文件的上传过程,来初步了解 FastDFS 的 基本架构: 1 首先客户端 client 发起对 FastDFS 的文件传输动作,是通 过连接到某一台 Tracker Server 的指定端口来实现的; 2 Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server ,然后将这个 Storage Server 的地址等信息返回给 client; 3 然后 client 再通过这些信息连接到这台 Storage Server,将 要上传的文件传送到给 Storage Server 上。 FastDFS 服务端有两个重要角色:跟踪器(tracker)和存储节点 (storage): 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
 跟踪器主要做调度工作,在访问上起负载均衡的作用  存储节点存储文件,完成文件管理的所有功能 Tracker Server 与 Storage Server 之间不直接通信,其基本的信息由 配置文件在系统启动加 载时获知。 多台 Tracker Server 之间保证了 Tracker 的分布式,Tracker Server 之间是对等的,防止了单点故障。 Storage Server 是分成多个 Group(组),每个 Group 中的 Storage 都 是互相备份的,也就是说,如果 Group1 有 Storage1、Storage2、 Storage3,其容量分别是 100GB、200GB、300GB, 那么 Group1 的存储能力是 100GB,而不是 300GB,这就是互相备 份的意思。 进一步说,整个 Group 的存储能力由该组中该储能力最小的 Storage 决定。多个 Group 之间的存储方式,可以采用 round robin( 轮训)、 load balanced( 负载均衡) 或指定 Group 的方式。 另一点相对于 MS( Master-Slave) 模式的优势,不仅 master 有上 面可能提到的单点故障问题,而且 client 与 master 之间可能会出现 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
瓶颈。但 FastDFS 架构中,Tracker Server 不会称为系统瓶颈,数据 最终是与一个 available 的 Storage Server 进行传输的。 简单总结一下,FastDFS 的特点包括:  高可靠性:无单点故障  高吞吐量:只要 Group 足够多,数据流量是足够分散的 2.3 FastDFS 安装和配置 2.3.1 旧版本 FastDFS 说明 FastDFS 有一部分是网络通信功能,旧版本 FastDFS(FastDFS 2.0 之间 版本)没有直接使用 epoll 实现,而是通过 libevent 实现(libevent 是 一个用 C 语言编写的、轻量级的开源高性能网络库),但是最新版的 FastDFS 最终网络 IO 这部分重新用 epoll 实现。 所以如果是 FastDFS 是 2.0 之前的版本,请先安装好 libevent 环境(新 版本不需要安装)。 libevent 下载地址:http://libevent.org 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
2.3.2 libfastcommon 的安装 libfastcommon 为 FastDFS 操作的基础库,FastDFS 没有使用标准的库,而是封装 了一套和 FastDFS 相关的库。 libfastcommon 的 git 下载地址:https://github.com/happyfish100/libfastcommon 安装 FastDFS 前,需要安装 libfastcommon(01_package\01_fdfs\libfastcommon-1.0.7.tar.gz): 1) 解压压缩包:tar -xzvf libfastcommon-1.0.7.tar.gz 2) 进入解压后的目录 3) 编译代码:./make.sh 4) 安装:sudo ./make.sh install 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
5) 动态库安装后的路径 安装成功后,默认会复制到/usr/lib64 下: 6) 设置环境变量或者创建软链接 由于系统不会自动在/usr/lib64 找动态库,所以需要人为设置环境变量 或者创建软链接(两者选一): 1 export LD_LIBRARY_PATH=/usr/lib64/:$LD_LIBRARY_PATH 2 sudo ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so(推荐) 2.3.3 FastDFS 的安装 FastDFS 源代码下载地址:  https://code.google.com/archive/p/fastdfs/downloads  https://github.com/happyfish100/fastdfs.git 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
分享到:
收藏