fastFDS项目(一)

1、文件服务器

服务器:一台配置高的电脑,能解析http协议

常见的Web服务器:tomacat,weblogic,IIS,ngix

客户端:b/s 协议可以随意选择 QT-->http

ngix:能处理静态请求-->html,jpg,动态请求无法处理

fastCGI:处理动态请求

反向代理服务器:客户端并不能直接访问web服务器,直接访问的是反向代理服务器,客户端请求发给反向代理服务器,转发给web服务器

关系型数据库:存储文件属性信息,用户的属性信息

redies-非关系型数据库(内存数据库):提高程序效率,存储的是经常要从关系型数据中读取的数据

fastDFS:分布式文件系统:存储文件内容,供用户下载

分布式文件系统

定义:文件系统的全部, 不在同一台主机上,而是在很多台主机上,多个分散的文件系统组合在一起,形成了一个完整的文件系统。

1、需要网络 2、多台主机:不需要在同一个地方 3、需要管理者 4、编写软件层面的管理程序:不需要编写

fastDFS:冗余备份:纵向扩容 线性扩容:横向扩容 

可以很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

fastDFS框架中的三个角色
        追踪器 ( Tracker ) - 管理者 - 守护进程
                管理存储节点
       存储节点 - storage - 守护进程
                存储节点是有多个的
        客户端 - 不是守护进程, 这是程序猿编写的程序
                文件上传
                文件下载

 三者的关系:

 1、追踪器:最先启动

2、存储节点:第二个启动,启动之后会单独开一个线程:汇报当前存储节点的容量,会汇报数据同步情况、汇报被下载的次数

3、客户端:最后启动:上传:链接追踪器,询问信息:上传1G文件,那个节点有足够的容量,追踪器进行查询,将查到的存储的IP和端口发给客户端,通过IP和端口链接存储节点,将文件内容发送给存储节点  下载:连接追踪器,询问存储节点,追踪器查询,得到结果,追踪器将查到的IP和端口发给客户端,通过IP和端口链接存储节点,下载数据

集群:

 追踪器集群:为了避免单点故障,轮询工作,修改配置文件

存储节点集群:通过分组方式管理,横向扩容:增加容量,添加一台新主机 ,添加新的分组,新主机加入新分组,纵向扩容:备份,加入现有的组中,每个组的存储容量取决于最小容量,同一组的n台主机相互备份,同一个组内数据需要相互通信,不同组内数据不需要相互通信

fastFDS配置文件

配置文件默认位置: /etc/fdfs
client.conf.sample storage.conf.sample storage_ids.conf.sample tracker.conf.sample

1、tracker配置文件

# 将追踪器和部署的主机的IP地址进程绑定, 也可以不指定
# 如果不指定, 会自动绑定当前主机IP, 如果是云服务器建议不要写
bind_addr=
# 追踪器监听的端口
port=22122
# 追踪器存储日志信息的目录, xxx.pid文件, 必须是一个存在的目录
base_path=/home/yuqing/fastdfs

2、storage配置文件

# 当前存储节点对应的主机属于哪一个组
group_name=group1
# 当前存储节点和所应该的主机进行IP地址的绑定, 如果不写, 有fastdfs自动绑定
bind_addr=
# 存储节点绑定的端口
port=23000
# 存储节点写log日志的路径
base_path=/home/yuqing/fastdfs
# 存储节点提供的存储文件的路径个数
store_path_count=2
# 具体的存储路径
store_path0=/home/yuqing/fastdfs
store_path1=/home/yuqing/fastdfs1
# 追踪器的地址信息
tracker_server=192.168.247.135:22122
tracker_server=192.168.247.136:22122 #集群

3、client配置

# 客户端写log日志的目录
# 该路径必须存在
# 当前的用户对于该路径中的文件有读写权限
# 当前用户robin
# 指定的路径属于root
base_path=/home/yuqing/fastdfs
# 要连接的追踪器的地址信息
tracker_server=192.168.247.135:22122
tracker_server=192.168.247.136:22122 #集群

 1、追踪器的启动:

# 启动程序在 /usr/bin/fdfs_*
# 启动
fdfs_trackerd 追踪器的配置文件(/etc/fdfs/tracker.conf)
# 关闭
fdfs_trackerd 追踪器的配置文件(/etc/fdfs/tracker.conf) stop
# 重启
fdfs_trackerd 追踪器的配置文件(/etc/fdfs/tracker.conf) restart

2、存储节点启动

# 启动
fdfs_storaged 存储节点的配置文件(/etc/fdfs/stroga.conf)
# 关闭
fdfs_storaged 存储节点的配置文件(/etc/fdfs/stroga.conf) stop
# 重启
fdfs_storaged 存储节点的配置文件(/etc/fdfs/stroga.conf) restart

3、启动客户端

# 上传
fdfs_upload_file 客户端的配置文件(/etc/fdfs/client.conf) 要上传的文件
# 得到的结果字符串: group1/M00/00/00/wKj3h1vC-PuAJ09iAAAHT1YnUNE31352.c
# 下载
fdfs_download_file 客户端的配置文件(/etc/fdfs/client.conf) 上传成功之后得到的字符串(fileID)

4、状态检测

 FASTDFS的STORAGE SERVER的状态问题_酷酷的糖先森的博客-CSDN博客

5、对fileID的解释

 6、上传和下载的代码实现

1、使用多进程方式

1)exec函数族函数

        execl

        execlp

2)父进程

        子进程->执行execlp("fdfs_upload_file","xxx",arg,NULL)有结果输出,输出到终端

        不让它写到终端--->重定向dup2(old,new)

                文件描述符

                数据块读到内存--->子进程

        pipe---->读端,写端,在子进程创建之前创建

父进程:读管道--->内存

 2、使用fastDFS API 接口

去看fdfs_upload_file.c速读源码,不需要全部读

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值