FastDFS文件同步

FastDFS同步相关文件:

a)10.100.66.82_23000.mark

内容如下:

binlog_index=0
binlog_offset=1334
need_sync_old=1
sync_old_done=1
until_timestamp=1457542256
scan_row_count=23
sync_row_count=11

解释:

binlog_index:对应于哪个binlog
binlog_offset:binlog.xxx的偏移量,可以直接这个偏移量获取下一行记录
need_sync_old:本storage是否是对侧storage(10.100.66.82)的源结点,同时是否需要从起点同步所有的记录
sync_old_done:是否同步完成过
until_timestamp:上次同步时间结点
scan_row_count:总记录数
sync_row_count:已同步记录数
b)binlog.000

内容如下

1457547668 C M00/00/00/CmRCUVbgaZSAGzKjAACkimfedYQ366.jpg

解释:

1457547668:同步时间戳
C:标记文件类型:C 源创建;A 源追加; D 源删除; T 源Truncate。
对应的小写字母则为副本,如c 副本创建。
M00/00/00/CmRCUVbgaZSAGzKjAACkimfedYQ366.jpg:文件名
c)binlog.index

内容如下

0

解释:

现有binlog数。

新增结点同步流程图

注意事项:
对于非源storage,只上传指定时间结点后的源文件给新增结点,副本文件不处理。
对于源结点,需要把时间结点前所有文件(源和副)传给新结点。
同步完成后,B主动发消息给tracker,修改tracker中A的状态记录。
A心跳获取到tracker发过来的消息,修改自身状态。
Storage的状态的主要意义,给tracker用来判定哪些active的结点可以服务。
启动同步过程中,源结点状态不改变,可以正常存储文件。

正常文件同步流程图

注意事项:
正常文件上传完成后,就记录近binlog缓存中,系统定时刷入binlog文件。
系统有线程定时读取binlog文件,当有新增行时,判断该记录是源文件记录还是副本文件记录。
系统只主动发送源文件,副本文件不做处理(非启动时流程)。
图中A的binlog中记录的是源创建(C),B中记录的是副本创建(c)。

Storage的状态

a)状态值:

#define FDFS_STORAGE_STATUS_INIT      0                     //初始状态
#define FDFS_STORAGE_STATUS_WAIT_SYNC          1  //等待同步
#define FDFS_STORAGE_STATUS_SYNCING      2            //同步中
#define FDFS_STORAGE_STATUS_IP_CHANGED    3
#define FDFS_STORAGE_STATUS_DELETED      4            //删除结点
#define FDFS_STORAGE_STATUS_OFFLINE        5            //离线
#define FDFS_STORAGE_STATUS_ONLINE         6            //在线,但不可存服务
#define FDFS_STORAGE_STATUS_ACTIVE         7            //在线,可提供存储服务
#define FDFS_STORAGE_STATUS_RECOVERY   9
#define FDFS_STORAGE_STATUS_NONE 99                //未知状态

b)启动时状态改变:
i.storage server A连接tracker server,tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_INIT。storage server A询问追加同步的源服务器和追加同步截至时间点,如果该组内只有storage server A或该组内已成功上传的文件数为0,则没有数据需要同步,storage server A就可以提供在线服务,此时tracker将其状态设置为FDFS_STORAGE_STATUS_OFFLINE,否则tracker server将其状态设置为FDFS_STORAGE_STATUS_WAIT_SYNC,进入第二步的处理;
ii.假设tracker server 分配向storage server A同步已有数据的源storage server为B。同组的storage server和tracker server通讯得知新增了storage server A,将启动同步线程,并向tracker server询问向storage server A追加同步的源服务器和截至时间点。storage server B将把截至时间点之前的所有数据同步给storage server A;而其余的storage server从截至时间点之后进行正常同步,只把源头数据同步给storage server A。到了截至时间点之后,storage server B对storage server A的同步将由追加同步切换为正常同步,只同步源头数据;
iii.storage server B向storage server A同步完所有数据,暂时没有数据要同步时,storage server B请求tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_OFFLINE;
iv.当storage server A向tracker server发起heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。

Tracker选择客户端下载文件的storage的原则

a)在同group下,获取最小的一个同步时间点(各个storage在同一时间,同步完成的时间点不一样)
b)在最小同步时间点之前的文件,按照用户的规则随意选择一个storage。
c)在最小同步时间点之后的文件,选择源storage提供给客户端。

转载于:https://www.cnblogs.com/xigui/p/5354402.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastDFS 是一个高性能、轻量级的分布式文件系统,它主要用于存储大规模的文件。在 FastDFS 中,文件同步速度可以通过多种参数进行优化,以下是一些常用的参数: 1. tracker_server:Tracker 服务器地址,可以设置多个,用逗号分隔。Tracker 服务器是 FastDFS 的中心控制节点,负责协调存储节点之间的文件同步和负载均衡等工作。 2. tracker_port:Tracker 服务器端口号,默认为 22122。如果 Tracker 服务器与存储节点不在同一台机器上,则需要设置该参数。 3. anti_steal_token:是否启用防盗链功能,默认为 false。如果开启防盗链功能,则需要在客户端请求文件时携带一个 token,否则请求会被拒绝。 4. secret_key:防盗链 token 的密钥,需要与 Tracker 服务器上的 secret_key 保持一致。 5. group_name:存储组名称,可以设置多个,用逗号分隔。存储组是 FastDFS 存储节点的逻辑分组,用于实现存储节点的负载均衡和故障转移。 6. connect_timeout:连接超时时间,单位为毫秒,默认为 2000 毫秒。 7. network_timeout:网络超时时间,单位为毫秒,默认为 3000 毫秒。 8. charset:字符集,默认为 UTF-8。 9. http.tracker_http_port:Tracker HTTP 端口号,默认为 8080。如果需要使用 HTTP 协议上传和下载文件,则需要设置该参数。 10. http.anti_steal_token:是否启用 HTTP 防盗链功能,默认为 false。如果开启 HTTP 防盗链功能,则需要在客户端请求文件时携带一个 token,否则请求会被拒绝。 11. http.secret_key:HTTP 防盗链 token 的密钥,需要与 Tracker 服务器上的 secret_key 保持一致。 可以通过调整这些参数来优化 FastDFS文件同步速度。具体的优化策略需要根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值