云盘项目——FastDFS

摘要:
在学习云磁盘项目中,我总结了笔记并进行了分享。如果您有任何问题,请联系博主:Alliswell_ WP,请注明转载来源。12云磁盘项目-FastDFS第01天目录:I.课程安排II。项目1。总体项目架构2。Web服务器3。分布式文件系统4。数据库和文件系统5。FastDFS三个角色及其关系6。FastDFS群集(学习)7。FastDFS安装8。跟踪器配置文件修改9。存储节点配置文件10。客户端配置文件配置和f

在学习云盘项目总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

12-云盘项目- 01天  FastDFS

目录:
一、课程安排
二、项目
1、项目整体架构
2、web服务器
3、分布式文件系统
4、数据库和文件系统
5、fastDFS三个角色和它们之间的关系
6、fastDFS集群(了解)
7、fastDFS安装
8、追踪器配置文件修改
9、存储节点配置文件
10、客户端配置文件配置和fastDFS启动+测试
11、fastDFS文件的上传和下载流程
12、解决动态库找不到的问题
13、fastDFS上传操作源码分析
14、使用进程的方式实现文件的上传操作
15、log日志文件的使用

一、课程安排

第01天(FastDFS):
    FastDFS概述
    安装和配置
    客户端编程
第02天(redis、redis和mysql的交互):
    redis的安装和配置
    redis的数据类型
    redis客户端编程
    redis和mysql的交互
第03天(Nginx、QListWidget和QJsonDocument的使用):
    Nginx环境搭建和配置
    Nginx反向代理
    Nginx负载均衡
    QListWidget的使用
    QJsonDocument的使用
第04天(HTTP协议、FastCGI、QNetworkAccessManager的使用):
    FastCGI介绍
    FastCGI编程
    Nginx中配置FastCGI模块
    QNetworkAccessManager的使用
第05天(Qt整体界面搭建和基本功能实现)
第06-10天
    内部功能局部实现

二、项目

1、项目整体架构

》系统架构图:

云盘项目——FastDFS第1张

1)通过浏览器/桌面客户端访问服务器
○ C/S
○ B/S
2)反向代理服务器
○ 多台web服务器-集群
○ 给web服务器分配资源
3)高并发
○ 多台web服务器
4)nginx服务器+fastcgi
○ nginx处理静态请求
○ 动态需要使用FASTCGI处理
5)数据库
○ mysql
○ redis
6)分布式的文件系统- fastDFS
○ 上传和下载文件

2、web服务器

1)什么是服务器?
○ 硬件:一台配置比较高的电脑
○ 软件:在电脑上安装服务器软件

2)常见的web服务器
○ tomcat服务器
    apache组织产品, 开源的免费服务器
○ weblogic服务器
    bea公司, 收费的服务器
    不交费, 访问量受限制
○ IIS服务器
    Internet Information Server
    微软公司主推的服务器
○ nginx
    小巧且高效的HTTP服务器
    也可以做一个高效的负载均衡反向代理

云盘项目——FastDFS第2张

3、分布式文件系统

分布式文件系统
1)文件系统 - 存储数据
    fat32, ntfs, ext3, ext4

2)分布式
○ 一般文件系统

云盘项目——FastDFS第3张
○ 分布式的文件系统
    文件系统的全部, 不在同一台主机上,在很多台主机上, 多个分散的文件系统组合在一起,形成了一个完整的文件系统。

    分布式的文件系统基本结构:

云盘项目——FastDFS第4张

4、数据库和文件系统

云盘项目——FastDFS第5张

5、fastDFS三个角色和它们之间的关系

云盘项目——FastDFS第6张

云盘项目——FastDFS第7张

6、fastDFS集群(了解)

云盘项目——FastDFS第8张

云盘项目——FastDFS第9张

7、fastDFS安装

云盘项目——FastDFS第10张

安装如下:

云盘项目——FastDFS第11张

云盘项目——FastDFS第12张

云盘项目——FastDFS第13张

8、追踪器配置文件修改

云盘项目——FastDFS第14张

云盘项目——FastDFS第15张

修改配置文件:

云盘项目——FastDFS第16张

在这一个终端,修改配置(vi tracker.conf),

云盘项目——FastDFS第17张

打开另一个终端查看或创建文件

云盘项目——FastDFS第18张

云盘项目——FastDFS第19张

9、存储节点配置文件

修改配置(vi storage.conf):

云盘项目——FastDFS第20张

还需要修改port(看是否被占用)、base_path(/home/robin/fastDFS/storage)、store_path_count及对应的store_path0(依次输入路径,如:只用了一个,为/home/robin/fastDFS/storage)、tracker_server(tracker服务器的IP+端口)

10、客户端配置文件配置和fastDFS启动+测试

修改配置(vi client.conf):

云盘项目——FastDFS第21张

》fastDFS启动:

(1)先启动tracker.conf

云盘项目——FastDFS第22张

(2)启动storage.conf

云盘项目——FastDFS第23张

(3)使用fdfs_monitor检测环境:

云盘项目——FastDFS第24张

注意:主要查看storage 1的状态是否是ACTIVE

》fastDFS测试:

(1)上传一个文件:

云盘项目——FastDFS第25张

(2)打开另一个终端,在(~/fastDFS/storage/data)查看:

云盘项目——FastDFS第26张

(3)在(~/fastDFS/storage/data/00/00/wkhs_vlqxxx6176431)查看,经过某些算法转换后存储了。M00为映射目录。

(4)下载该文件,查看:

云盘项目——FastDFS第27张

11、fastDFS文件的上传和下载流程

云盘项目——FastDFS第28张

云盘项目——FastDFS第29张

云盘项目——FastDFS第30张

12、解决动态库找不到的问题

云盘项目——FastDFS第31张

13、fastDFS上传操作源码分析

fastDFS api函数:(可参考fdfs_upload_file.c)

云盘项目——FastDFS第32张

14、使用进程的方式实现文件的上传操作

云盘项目——FastDFS第33张

15、log日志文件的使用

>fdfs_api.h

云盘项目——FastDFS第34张云盘项目——FastDFS第35张
#ifndef _FDFS_API_H
#define _FDFS_API_H
int fdfs_upload_file(const char* conf_file, const char* myfile, char* file_id);
#endif
fdfs_api.h

>fdfs_api.c

云盘项目——FastDFS第34张云盘项目——FastDFS第35张
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "fdfs_client.h"
#include "logger.h"
#include "make_log.h"

int fdfs_upload_file(const char* conf_file, const char* myfile, char* file_id)
{
    char group_name[FDFS_GROUP_NAME_MAX_LEN + 1];
    ConnectionInfo *pTrackerServer;
    int result;
    int store_path_index;
    ConnectionInfo storageServer;
    
    // 通过客户端配置文件初始化一些数据
    if ((result=fdfs_client_init(conf_file)) != 0)
    {
        LOG("111", "222", "fdfs_client_init error - %d", -1);
        return result;
    }

    // 通过从配置文件中读出的数据, 连接追踪器tracker
    // 通过得到的地址可以访问追踪器
    pTrackerServer = tracker_get_connection();
    if (pTrackerServer == NULL)
    {
        fdfs_client_destroy();
        return errno != 0 ? errno : ECONNREFUSED;
    }

    *group_name = '

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NPMGrep 命令 用法大全下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SpringBoot入门及YML文件详解

SpringBoot 简介 微框架,与 Spring4 一起诞生,基于约定、生来为了简化 spring 的配置 优点 可以快速的上手,整合了一些子项目(开源框架或者第三方开源库) 可以依赖很少的配置快速的搭建项目 基于 spring 使开发者快速入门,门槛很低。 可以创建独立运行的应用而不需要依赖容器 提供很多 maven 极简配置,缺点是会引入很多不需...

Apache中Cookie长度的设置 414 request-uri too large apache

起因: 今天在调试Ucenter的同步登陆和同步登出的过程中,浏览器突然出现以下错误提示: Your browser sent a request that this server could not understand. Size of a request header field exceeds server limit. 开始是以为P3P协议设置c...

解决 Tomcat 下载文件名中包含中文的文件失败的问题

解决 Tomcat 下载文件名中包含中文的文件失败的问题 1、问题背景 在Tomcat 的 {tomcat 安装路径}/webapps/ROOT/ 目录下,创建了 file/downloads/ 目录,用于存放程序定时生成的文件。 可以实现浏览器文件下载,访问url如下: http://localhost:8080/file/downloads/test...

Centos下安装Mysql

一、二进制免编译包安装  参考:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=10105&highlight=mysql5.7 1、下载地址: http://mirrors.sohu.com/mysql/MySQL-5.7/    文件名还glibc的为免编译的二进制安装包...

Nginx深度优化

简介 1.隐藏版本号2.修改Nginx用户与组3.配置Nginx网页缓存时间4.实现Nginx的日志切割5.配置Nginx实现连接超时6.更改进程数7.配置Nginx实现网页压缩功能8.配置Nginx实现防盗链9.FPM模块进行参数优化 实验环境 系统环境:CentOS7.4 服务器IP地址:192.168.100.71 客户端IP地址:192.168....

Linux中的输入输出重定向

  有三个最重要的输入输出流:标准输入(stdin),标准输出(stdout),标准错误(stderr)。它们对于控制台(“控制台”指的是键盘用于输入,屏幕用于输出)来说是缺省的,但是它们可以被重定向。   重定向标准输出:可以使用“>”符号, 举例:   dir my_dir > filelisting.txt                ...