基于S3协议的数据搬迁方案

可参照的文档

业务场景

  • 本地数据上云
  • 云上数据搬迁
    • 同一个云厂商,数据在不同区域搬迁
    • 不同的云厂商,数据搬迁
  • 云上数据取至本地

假如本端支持对象存储,细分场景如下:

  • 源对象服务的账号下,将指定桶内的对象,同步至云对象服务的同名桶或者指定桶名下。
  • 源对象服务中多个桶的数据同步至云对象服务的指定桶中。
  • 源对象服务的账号下,按桶对桶的方式,同步至云对象服务。

假如本端不支持对象存储,比如仅具备文件存储,则可以使用目标对象存储服务提供的SDK,上传至目标对象存储服务。场景如下:

  • 以文件清单的形式,将清单中的文件,上传至云对象服务的指定桶下。
  • 以目录的形式,将目录下的文件,上传至云对象服务的指定桶下。
  • 以目录清单的形式,将多个目录下的文件,上传至云对象服务的指定桶下。

预置条件
目标存储服务提供对象存储服务,提供兼容S3协议的SDK。

  • 对象服务的账号
  • AK/SK
  • 目标桶

操作步骤
假如本端支持对象存储,则可以设计如下操作步骤。

  • 获取本地桶列表,以及对应的目标桶的列表。
  • 遍历本地桶的列表。
    • 获取桶内的文件的清单。
    • 构建上传任务,包括本地桶、对象名、目标桶,放入上传任务清单的队列中。
  • 遍历上传任务清单。
    • 从本地桶中获取对象。
    • 将对象上传至目标桶。
      • 针对小对象,直接上传。
      • 针对大对象,使用多段上传的接口。
    • 记录日志。

注意事项:

  • 扫描本地桶时的并发方案。
    • 桶之间串行扫描,或者并行扫描。
    • 桶内,串行获取对象清单,或者并发获取对象清单。
  • 本地桶存在的倾斜问题。
    • 个别桶内的对象数量特别大。
    • 对象的大小,分布不均衡。
  • 扫描、上传操作的时间窗。
    • 开始、结束、暂停、恢复的控制。
  • 任务统计。
    • 上传操作占用的带宽。
    • 上传操作的数量。

需注意的问题:

  • 桶内对象的重名问题。
  • 桶的重名问题。
  • 大对象,比如超出5G时,一般需要使用多段的方式来上传。

猜你喜欢

转载自blog.csdn.net/babyblue_963/article/details/131155456