0
点赞
收藏
分享

微信扫一扫

FastDFS同组同步

FastDFS配置说明

分组配置 storage_ids.conf

100001   group1  192.168.100.140
100002   group1  192.168.100.141



FastDFS同步相关文件

a) 100001.mark

binlog_index=0
binlog_offset=0
need_sync_old=1
sync_old_done=1
until_timestamp=0
scan_row_count=0
sync_row_count=0

解释:

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

b) binlog.000

1622601368 C M00/01/95/ooYBAFettRGAUDCGAUM_hbbTapQ6813654

解释:

1622601368:同步时间戳
C:标记文件类型,  C 源创建;c 副本创建;   A 源追加; D 源删除; T 源Truncate。
M00/01/95/ooYBAFettRGAUDCGAUM_hbbTapQ6813654:   文件路径

c) binlog.index

0

解释:

现有binlog数



新增结点同步流程

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



正常文件同步流程

正常文件上传完成后,就记录进binlog缓存中,系统定时刷入binlog文件。
系统有线程定时读取binlog文件,当有新增行时,判断该记录是源文件记录还是副本文件记录。
系统只主动发送源文件,副本文件不做处理(非启动时流程)。

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)启动时状态改变:
1). 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,进入第二步的处理;
2). 假设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的同步将由追加同步切换为正常同步,只同步源头数据;
3). storage server B向storage server A同步完所有数据,暂时没有数据要同步时,storage server B请求tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_OFFLINE;
4). 当storage server A向tracker server发起heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。



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

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

举报

相关推荐

0 条评论