多云存储数据同步方案
在昨天的文章(延伸阅读:华为云 OBS+CDN 的最佳成本实践,都在这里了)中我们提到,为了避免单厂商故障、提高整体业务连续性,企业可以采用多云对象存储+多云 CDN 架构。这种多云配置模型下,就必须考虑如何实现不同厂商云存储之间的数据同步。下面我们继续介绍实践,提供几个方案供大家参考。
应用双写
如果数据是在应用服务侧产生,或者数据在客户端产生但通过服务端写入对象存储,建议使用双写方案,架构如下:
此时业务应用可对接两家对象存储的 SDK,将文件以同步模式或者异步模式写入两家对象存储。对象存储的上行流量免费,所以该架构不会增加额外的流量成本。
数据回源
如果业务已在使用其他云对象存储,并且引入新云厂商的对象存储和 CDN,且不想改变原有上传逻辑,建议可使用“数据回源”功能。
例如:原来客户使用的是其他云厂商的对象存储,现在新引入华为云的 OBS+CDN 服务。当 OBS 刚接入系统时,客户端的文件访问请求首先会到达华为云的 OBS,而 OBS 桶里没有该文件时,通过“数据回源”将客户端请求重定向到设定的原有对象存储源站,并且把数据传递给客户端(路径 1)。与此同时,华为云 OBS 会异步地从其他云源站将数据拉取到 OBS 桶存储下来(路径 2)。架构如下:
当下次客户端请求同样的文件时,华为云 CDN 将直接回源到 OBS 获取数据,不会出现获取不到的情况。
需要说明的是,“数据回源”功能是被动触发式,即只有向 OBS 发起请求后 OBS 才会到设置的源站将数据拉取过来。而当一个新文件上传到其他云的对象存储后,建议业务应用程序向华为云 OBS 触发一个 GET 请求来拉取数据(发起 GET 请求后可关闭连接,无需接收实体数据)。
Serverless 触发式上传
如果客户原来使用云厂商支持 Serverless,则可以通过 Serverless 异步把新增数据同步到华为云 OBS。该方案同样不改变原有的上传逻辑,当文件上传到其他云对象存储后,触发函数计算服务,通过 Serverless 方式将文件同步到华为云 OBS,架构如下:
该方案需要客户在其他云启用函数计算服务并部署上传文件到 OBS 的代码,会产生函数计算服务的费用。另外,一般函数计算的运行时间有一定限制,该方法不适合大文件上传的场景。
异步抓取
在单个文件不大的情况下(小于 5GB),还可以使用异步抓取方式,把上传到其他云对象存储的数据同步到华为云 OBS。方式为调用 OBS 的异步抓取 API,由 OBS 的异步抓取组件将文件拉取到 OBS 桶保存。
该方法需要客户在业务代码里增加调用 OBS 异步抓取功能的代码。
除了以上 4 种方法外,还有一种客户需要把其他云厂商的对象存储中大量的存量数据(从 TB 级到 EB 级)批量迁移到 OBS 的场景,针对这种情况,华为云提供了 OMS 对象存储迁移服务,由华为云专业的迁移服务团队来帮助客户完成整个迁移活动,有需要的同学可以上华为云官网进行了解。
本文转载自 华为云产品与解决方案 公众号。
原文链接:https://mp.weixin.qq.com/s/BbQFROBc4oyxSy8Rvcza0A
评论