fastdfs总结



1 storage启动后会进行全量同步,由traceker分配src_id,  当指定的src_id通过心跳发现需要同步后开启线程全量同步

2 storage启动后会针对storage开启n个数量的线程进行同步,采用push的方式,由源发起向目的推送

3 从头到尾storage的一切信息都是通过tracker获取

4 storage的其中状态仅为新加入的storage进行全量同步时的状态,当成为FDFS_STORAGE_STATUS_ACTIVE即可服务

5 磁盘同步最好的文章 点击打开链接

6 合并分区最好的文章 点击打开链接

7  binlog同步  点击打开链接

8 选主与心跳 点击打开链接

9 里面很重要的数据结构就是pTask,该结构是网络传递的结构体,同样在接受完信息后,利用继续进行传递,重复利用,并且task有pool,而不是一直分配,这单很巧妙

10 nContinuousFail来记录失败次数一般是可以重试的错误,g_continue_flag不可继续的标志位直接退出

11 if (pReader->binlog_index >= g_binlog_index) binlog是一边读一边写,写入根据缓冲区大小g_binlog_index++,所以读文件的时候与当前最大对比,可以判断当前文件是写满了还是未写满,未写满持续读取,写满了pReader->binlog_index++,并且读取是将整个文件大小缓冲区读入,按行分析

12 通过last_heart_beat_time使得tracker与storage保持关系,更新一系列信息比如(*ppGroup)->active_servers,同时storage通过自己的心跳将tracker_servers的信息同步给tracker进行更新。

13 多个tracker server只有在启动时,会采用一定的策略,到其他tracker server上获取4个系统文件。
在V2.03的ChangeLog中说过这个事情,摘录如下:
  多个tracker server并存时,在tracker启动后,当第一个storage server加入时,
      tracker server根据一定条件去其他tracker上获取如下4个系统文件:
         storage_groups_new.dat
         storage_servers_new.dat
         storage_changelog.dat
         storage_sync_timestamp.dat
      获取成功后,将重新加载这4个系统文件。

      向其他tracker server获取系统文件包括如下两种情况:
         I.  tracker服务停止后,重启时间间隔大于2个小时(避免系统数据过旧)
         II. tracker中还没有storage server分组信息(通常是新增加tracker server的情况)


14 通过tcpsendfile_ex发送图片文件同步

15 通过FDFS_STORAGE_STAGE_NIO_RECV与FDFS_STORAGE_STAGE_NIO_SEND两个状态进行信息接收与发送

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值