文件同步设计

目的

将某一设备文件同步到远程分布式文件系统。

同步需求

  1. 根据用户需求同步文件数据需求将文件数据同步到用户指定的DFS系统中;
  2. 文件同步可能会中断所以需要同步系统保存用户进度;
  3. 文件同步可能会失败,所以需要同步系统需要有重试策略;
  4. 文件在通过过程中或同步完成后可能会被增删改,所以需要同步系统有应对文件增删改的能力;
  5. 涉及到的文件可能会比较多,所以文件元数据获取需要进行分页;
  6. 实时性要求:平衡设备和速度,暂不做要求。

文件同步

文件同步设计

模块设计

  1. 文件元拉取管理
  2. 文件拉取进度管理
  3. 文件元数据管理
  4. 文件元数据存储
  5. 文件上传管理
  6. 文件上传进度管理
  7. DFS(分布式文件系统)

系统设计

容错与可靠性

文件拉取可能会出错,系统负责获取异常信息并进行重试3次,重试3次失败后暂停拉取。

文件拉取进度保存可能失败,文件元数据保存需要做幂等性处理。

文件元数据可能保存失败,根据不同场景进行处理。比如:文件存储可能占用过大文件系统或内存无法存储时暂停文件拉取;

文件上传可能失败,重试3次后暂停文件上传。

文件上传进度可能失败,元数据管理尽可能保证幂等性,最终由DFS端保证幂等性。

文件拉取模块

文件拉取模块用户管理用户文件拉取。用户的文件数据可能来自数据库、文件系统或网络,所以文件拉取模块对于文件拉取需要用户实现,拉取模块提供一个接口以供用户实现自定义文件拉取器。

 

文件拉取进度管理

拉取模块管理拉取进度。

文件元数据管理

文件元数据管理拉取到的文件元数据,并将元数据存储到元数据存储。比如:文件数据包括文件名,文件绝对路径等等。

文件元数据存储

文件元数据存储负责存储文件元数据,可能的实现有基于内存,基于数据库(基于SQLite/MySQL/MongoDB)。

文件上传管理

文件上传管理负责文件的上传,调用用户自定义上传实现并更新文件上传进度。

文件上传进度管理

文件上传进度管理负责存储和获取文件上传进度。

接口设计

FileFetcher: 用户自定义文件拉取器

FileFetcherManager: 管理文件拉取并更新进度

FileFetcherProgress: 文件拉取进度管理

FileMetaManager: 文件元数据管理(读,写)

FileUploader:用户自定义文件上传

FileUploadManager: 用户自定义文件上传管理

FileSyncConfig: 配置文件同步系统

FileSyncBuilder: 文件同步构造

FileSync: 文件同步接口

LifeCycle: 文件同步声明周期接口定义

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值