更新时间:2023-12-07 GMT+08:00
分享

多云存储数据同步方案

应用双写

如果数据是在应用服务侧产生,或者数据在客户端产生但通过服务端将数据写入对象存储,则建议使用双写方案,架构如下:

此时业务应用可对接两家对象存储的SDK,将文件以同步模式或者异步模式写入两家对象存储。对象存储的上行流量免费,所以该架构不会增加任何成本。

数据回源

如果数据上传逻辑不做改变,则可使用OBS的“数据回源”功能,在文件访问请求到达OBS而OBS桶里没有该文件时,可通过“数据回源”将客户端请求重定向到设定的源站并异步地从源站将数据拉取到OBS存储下来,架构如下:

详细流程说明:

  1. 客户端向华为CDN发起获取文件的请求
  2. 华为CDN回源到华为OBS请求文件,OBS侧事先配置好数据回源,当请求的文件不存在时,会响应302重定向到配置的源站(此处为其他云对象存储)
  3. 华为CDN接收到OBS返回的302请求
  4. OBS异步从客户配置的源站请求文件
  5. 华为CDN处理302跳转到其他云对象存储侧获取数据
  6. 其他云对象存储响应华为CDN的文件请求
  7. 华为CDN将文件内容返回给客户端,当下次客户端请求同样的文件时,华为CDN直接回源到OBS获取。

“数据回源”功能是被动触发式,即只有向OBS发起请求后OBS才会到设置的源站将数据拉取过来,所以当一个新文件上传到其他云对象存储后,建议业务应用程序向OBS触发一个GET请求来请求数据(发起GET请求后可关闭连接,无需接收实体数据)。另外该架构会在其他云对象存储侧产生两份数据流量(针对同一个文件,CDN拉取一次,OBS拉取一次)。

Serverless触发式上传

不改变原有的上传逻辑,当文件上传到其他云对象存储后,触发函数计算服务,通过Serverless方式将文件同步到华为云OBS,架构如下:

图1 Serverless触发式上传

该架构需要客户在其他云启用函数计算服务并部署上传文件到OBS的代码,会产生函数计算服务的费用。

相关文档