1.概述

  • 目前我们是通过IO流读取和写入Nas盘
  • 最终我们的目的是去Nas,文件上云,业务系统接入文件存储服务
  • 文件迁移是一个长期的过程,中间过程需要一个兼容,通过SDK读取文件时,文件存储服务直接读取Nas盘.
  • 从Nas盘迁移文件到OSS是一个静默过程,业务无感知,对应下图的(5.迁移文件部分)
  • 所以为了实现我们的终态,我们需要迁移数据,并且将Nas盘的文件迁移到OSS,文件迁移完成后,文件存储服务无感知切换OSS,下线Nas.

 

1.1背景

实现今年去NAS盘,文件上云的目标。其中涉及到文件迁移和数据迁移,需要本文档去说明其中的问题和解决方案

1.2目的

1.2.1:本设计文档,包含业务系统的文件迁移,业务系统的数据迁移两部分

1.2.2:本设计文档的目的是指导开发,实现最终文件迁移和数据迁移 

 3.需求分析

3.1:将业务系统数据库的文件路径字段,迁移到文件系统

3.2:将业务系统保存的Nas盘文件,迁移到OSS

3.3:将文件从OSS迁移到OSS,或者从OSS迁移到S3.简单来说,就是将文件从源地址迁移到目标地址。

4总体方案

【术语解析】

  • 文件迁移==文件备份。比如将文件从NAS盘迁移到OSS,或者说,将文件从NAS盘备份到OSS,都是同一个意思
  • 业务系统,指的是接入文件存储服务的系统,比如:PCB订单服务就是属于一个业务系统
  • 数据迁移系统,指的是运行的数据迁移服务
  • 主表:fr_file_record,也称为文件记录主表;NAS文件记录表:fr_nas_file_record;OSS文件记录表:fr_oss_file_record

【方案解析】

  • 得先有迁移的数据,才能驱动要迁移的文件
  • 首先由数据迁移程序,从业务系统同步数据到数据迁移服务的迁移记录表transfer_file_log
  • 同步完成以后,回写业务系统的新增字段file_id,这个file_id对应的是这条记录在文件存储服务的唯一id
  • 同时要写入文件存储服务的nas文件记录数表fr_nas_fie_record
  • 此时文件迁移服务就会读取nas文件记录表fr_nas_file_record的记录,开始从Nas盘迁移文件到OSS
  • 迁移完成了以后,需要回写OSS文件记录表fr_oss_file_record

4.1数据迁移方案

4.1.1数据迁移生命周期

  • 第一步:将业务系统的业务表file_upload_info的数据,灌到新增的数据迁移表file_transfer_record.也即是将这两张表水位平衡,后面会介绍水位平衡过程。
  • 第二步:将业务侧新增的数据迁移表file_transfer_record的数据,同步到数据迁移服务的数据迁移表file_transfer_record.
  • 第三步:由于各种可能异常原因,导致业务侧和数据迁移服务侧的数据迁移状态不一致,需要这一步进行回查两侧状态,将不一致的状态修改,实现最终一致。
  • 第四步:经过了前面的三步,业务侧的数据已经成功迁移到迁移服务了,最后就是直接在业务侧快速的将file_id回填到业务表file_upload_info

4.1.2数据迁移整体流程

【迁移整体流程说明】

  • 第一步:业务系统水位平衡:目的是将业务系统的业务表,填平业务系统的数据迁移表
  • 第二步:监控水位平衡进度,同时要检测自动水位平衡程序是否已启动,没启动的话要自动拉起
  • 第三步:业务系统与数据迁移系统水位平衡:将第一步的业务系统的数据迁移表的数据,同步到数据迁移系统的文件记录主表
  • 第四步:迁移状态回查,实现数据最终一致性。查询业务系统与数据迁移系统的数据迁移状态是否一致,不一致就修改

 4.2文件迁移方案

4.2.1历史文件迁移方案

  • 历史文件迁移指的是文件目前存储在NAS盘,现在要迁移到OSS
  • 这类迁移,是基于数据已经迁移的前提下进行的

 4.2.2增量文件备份

  • 新上传的文件会直接上传到文件平台,比如:OSS,S3
  • 如果我们有需求需要上传到OSS,同时也要将文件迁移到S3,这个方案就是针对这种情况说的

 5架构设计

5.1应用架构

 【服务职责说明】

微服务名称 中文描述 微服务职责
file-storage-manage 文件存储管理服务

文件存储后台配置入口,包括以下功能:
安全管理:秘钥管理,区域管理,目录管理,应用权限管理

存储管理:平台管理,区域管理,目录管理,仓库管理,资源组管理,业务线管理

文件管理:文件列表查询,文件上传,文件下载

file-storage-api 文件存储api服务 文件操作功能api服务
file-storage-stream 文件存储流服务 文件与Nas,OSS,S3等云平台交互,进行文件的上传下载
file-storage-core 文件核心服务 提供给其他服务调用进行文件的管理,备份,安全等核心功能
file-storage-task 文件存储编排服务

任务生成,任务调度

file-storage-transfer 数据迁移服务

迁移水位平衡,迁移统计,获取迁移数据集合

5.2业务架构

 6专题设计

7开发视图

7.1工程划分

父工程 子工程 职责范围
file-storage-web fs-web-api 文件操作api服务,提供文件操作webapi
fs-web-api-sdk 文件操作api封装sdk,供业务系统使用
fs-web-stream 文件流服务,提供文件流服务处理
file-storage-transfer fs-transfer-service 数据迁移服务,处理业务系统业务数据,将其迁移到文件系统中
fs-transfer-sdk 文件迁移sdk,可以接入业务方业务系统的sdk,从而完成远程数据迁移
file-storage-service fs-componet-auth 文件服务授权组件
fs-componet-cache 文件服务缓存组件
fs-componet-event 文件服务事件组件,guava的事件发布
fs-componet-safe 文件安全组件,集成第三方授权库,提供acl等授权功能
fs-componet-storage 文件存储组件,抽象云平台(s3,oss),nas等平台功能,提供统一访问入口
fs-componet-tool 文件工具组件,提供业务异常码,统一返回对象定义等
fs-core 文件核心服务,提供各个业务模块的数据支持
file-storage-manage fs-web-manage 文件后台管理服务,提供各个文件模块的后台管理功能

7.2数据库设计

 

posted on 2023-05-28 21:33  路飞_lufei  阅读(95)  评论(0编辑  收藏  举报