fastdfs storage server的设计与实现


fastdfs是一个针对互联网应用设计的分布式文件系统,具有架构简单,结构清晰,代码量小等特点。
具体的介绍及架构请参考 分布式文件系统FastDFS架构剖析http://www.programmer.com.cn/4380/),这篇文章是由fastdfs的作者撰写。

因为fastdfs的轻量级特点,所以也适合广大技术爱好者学习分布式文件系统的设计及实现技术。通过深入代码,了解内部细节。本文的fastdfs版本为5.01。

服务交互场景
fastdfs采用了传统的C/S模型,服务分为client和server,之间采用私有协议通信。系统的几种交互场景:
1)client ---->> track server
2)client ---->> storage server
3)storage server ---->> track server
4)storage server ---->> storage server

其中1)和2)是client(fastdfs的用户)使用fastdfs的情况,client先根据track server得到storage server地址,然后再storage server上做操作(如上传、下载文件等)。由client发起操作。
3)是storage server向track server报告信息。由storage server主动发起。
4)storage server向同组内的其他storage server同步操作信息。同步的实现是系统中比较复杂的一块。


根据上面的交互图,storage server包括3部分功能:
1)接收并处理请求,来自client和storage,service threads
2)将自己的状态信息报告tracker server, report threads.
3)同步本地数据到同组内的其他storage server, sync threads

任务1)的启动及运行
主体实现代码,storage_service.c
根据配置文件中的定义,启动相应的service threads,线程入口storage_thread_entrance
storage_deal_task:解析协议,进行相应处理。

任务2)的启动与运行
主体实现代码,tracker_client_thread.c
针对每个tracker创建一个线程( report线程),线程入口:tracker_report_thread_entrance。该任务启动过程中,storage的状态会经历一系列变化:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值