开发者社区> 沉默术士> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

应用华云对象存储服务实现网站存储的平滑迁移实践

简介:
+关注继续查看

网站的图片资源访问速度慢?网站存储服务需要扩容?网站的后端存储运维成本高?网站数据丢失?是时候把网站的存储迁移到云上了!

华云将为你提供一套靠谱的网站存储上云方案,你可以不费吹灰之力、不停一秒服务就将网站的后端存储平滑迁移到华云对象存储之上,进而享受诸如弹性扩容、CDN加速、富媒体处理、防盗链等一系列优质服务。

概念介绍:

为了理解如何实现平滑迁移,首先让我们学习几个基本概念:

1. 华云对象存储(COS:ChinaC Object Storage) —— 提供高可用、高可靠、高可扩展的对象存储服务。你可以将任何非结构化数据,如图片、文档、音视频等存储到属于你创建的桶中。

2. 镜像存储 —— 网站平滑迁移的基础。将COS的一个桶的镜像存储源站设置为你的后端存储服务器后,当用户访问该桶的数据时,如果数据不存在,都将去镜像存储源站(即你的后端存储服务器)上抓取内容并返回用户,同时存储到COS的桶中。下一次再访问到该对象时,将不再需要去源站抓取,这样即实现了网站数据的平滑迁移。

3. 域名绑定 —— 将一个特定的域名和华云对象存储的一个桶进行关联,通过将特定域名CNAME到COS的特定桶的域名,可以实现当访问该特定域名时,等价于访问COS的一个桶。

这几个基本概念可能一时不好理解,不过接下来在我们介绍网站存储迁移的过程中,会再进一步说明这些概念。

迁移步骤

1. 迁移背景

一个简化的网站架构如下图所示:

说明:

1. 一个网站内部依赖包括存储服务器,其他服务器(如逻辑处理服务、数据库服务等)。在图1所示场景下,我们只讨论图片服务器(image servers)的平滑迁移方案;

2. 假设由于存储容量、访问速度、运维成本等的考虑,网站管理员想要将图片服务迁移到第三方云存储服务上,期望可以带来更高的可靠性、更好的扩展性和更快的访问速度;

3. 因此,一个基本的迁移方法是,将网站的数据迁移到第三方云存储服务,并将网站的读写操作也切到新的存储服务上,如图2所示:

然而这样简单的迁移方法存在如下问题:

1. 当读写操作从mysite后端的存储服务器(源站:image servers)迁移到第三方云存储服务器(新站:cloud storage service)时,为了保证服务的可用性,至少需要保证所有的数据都已经从源站迁移到了新站,而对于一个持续写入的系统来说,这点是很难做到的,即在读写操作切到新存储的瞬间(可能持续几十秒到几分钟),需要暂停源站的写服务并等待所有数据迁移完成,这对网站的可用性会带来一定的影响;

2. 读写迁移到新存储的操作不容易回滚,如果发现问题再回滚,新站和源站可能都存在用户已经写入的数据,这种一致性问题并不容易解决;

3. 如果网站的图片文件的链接对用户暴露,例如,用户的手机客户端需要访问image.mysite.com/image1.jpg这张图片,则即使完成了数据迁移,同样的URL也无法访问到对应的图片;

4. 需要网站维护人员实现数据迁移工具,而对于数据不断更新与变化的场景,这种迁移工具并不容易实现。

为了解决以上种种问题,华云对象存储(COS:ChinaC Object Storage)推出了镜像存储与域名绑定功能,可以实现网站静态数据平滑迁移到COS中。

2. 如何使用华云对象存储

进行数据迁移的第一步,即申请使用华云对象存储系统:

1. 在www.chinac.com注册并登录

2. 在“对象存储”服务创建Bucket

概念说明

· 对象(Object)—— 对象是存储在COS中的基本数据单位,用户的每个文件都是一个Object,单块上传接口每个文件最大100M。大于100M的文件使用大对象分块上传接口,最多可达10000个分块(100M * 10000 ≈ 1T)。Object包含Key、Data和MetaData。其中,Key是Object的名称,在桶内唯一标识一个对象;Data是Object的数据;MetaData是对该Object的描述信息。

· 桶(Bucket)—— 桶是对象的容器,桶名全局唯一,通过桶名和对象名可以唯一定位到具体资源。COS允许每个用户最多创建10个桶,而桶里面的对象个数无限制。

更多关于华云对象存储COS的介绍请参见:

1. 华云对象存储服务COS

http://gitbook.hz.chinac.com/COS/public/index.html

2. 开始使用COS

http://gitbook.hz.chinac.com/COS/public/quick-start/get-started.html

3. 设置镜像存储

举例,假设用户创建了名为bucket1的桶,在Bucket管理的桶设置页面,可以设置桶的镜像回源地址为image.mysite.com,则此时的系统状态如下图所示:

注意:此时mysite的读写操作并没有迁移到COS上,因此对于mysite来说,到目前为止的所有操作对其服务没有任何影响。

在完成桶的镜像存储源站设置后:

1. 若用户访问image.mysite.com/image1,则直接去源站图片服务器读取数据;

2. 若用户访问bucket1.cos-cn-guangzhou.chinac.com/image1,则请求发送到COS对应的桶中。

此时COS的逻辑是:

i. 检查COS的桶中是否有image1的对象;

ii. 若对象存在,则直接返回给用户,否则继续执行;

iii. 根据桶bucket1源站配置,去其对应的源站image.mysite.com/image1读取数据并返回给用户,同时将该对象异步迁移到COS对应的桶中(这样用户下次再访问到该数据时,即不需要去源站抓取)。

因此对于用户来说,image.mysite.com/image1 和 bucket1.cos-cn-guangzhou.chinac.com/image1 这两个URL是等价的,可以访问到一样的数据。这就是镜像存储的概念。

然而现在还有一个问题并没有解决,即用户期望的最终结果通常是,可以直接通过访问image.mysite.com/image1这个域名,将请求直接发送给COS对应的桶,并实现数据的平滑迁移。为了实现这种用户完全无感知的迁移方案,需要依赖COS的域名绑定功能。

4. 设置域名绑定

在Bucket管理的桶设置页面,设置桶的域名绑定为www.mysite.com。此时的系统状态如下图:

注意:如果你有设置域名绑定的需求,则必须为存储源站再申请一个迁移域名(如图4中的image2.mysite.com),并设置桶的镜像回源地址为迁移域名(如图4中Bucket1的回源地址设置为image2.mysite.com)

在完成桶的域名绑定设置后:

1. 对于COS来说,当看到Host:www.mysite.com的请求后,会默认把它定向到bucket1.cos-cn-guangzhou.chinac.com;

2. 若在客户端配置Host文件,即设置www.mysite.com直接访问到COS的前端服务器(114.67.58.99),即可马上验证域名绑定的效果。此时若用户访问www.mysite.com/image2,请求将直接发送到COS前端,并根据域名绑定的映射规则,定向到bucket1.cos-cn-guangzhou.chinac.com进行处理;再根据镜像回源的设置,在桶中对象不存在时进行对象的迁移。

到此刻为止,整个系统的设置对源站依然没有任何影响,而如果要验证整个迁移系统的有效性,只需要简单设置Host文件即可。

5. CNAME

在完成了迁移逻辑的验证后,管理员只需要像域名管理服务器中添加新的CNAME记录,例如: CNAME image.mysite.com bucket1.cos-cn-guangzhou.chinac.com

这样,等域名全网生效后,所有的用户再访问image.mysite.com时,请求会直接发送到bucket1.cos-cn-guangzhou.chinac.com,并按照对应的逻辑迁移数据。

其他说明:

1. 什么时候可以将写操作迁移到COS?

只要完成了域名绑定的CNAME过程并在域名全网生效后,即可将写操作迁移到COS上,这个过程也不会对用户产生任何影响。

2. 什么时候可以下线源站存储服务器?

由于镜像迁移是被动迁移,即当用户访问时才做迁移,为了保证所有数据均可以访问,需要对源站数据做一次主动的完整迁移之后才能下线源站存储服务器,不过该过程也不会对用户的访问产生影响。


本文转自d1net(转载)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringCloud微服务实战——搭建企业级开发框架(二十九):集成对象存储服务MinIO+七牛云+阿里云+腾讯云
微服务应用中图片、文件等存储区别于单体应用,单体应用可以放到本地读写磁盘文件,微服务应用必需用到分布式存储,将图片、文件等存储到服务稳定的分布式存储服务器。目前,很多云服务商提供了存储的云服务,比如阿里云OSS、腾讯云COS、七牛云对象存储Kodo、百度云对象存储BOS等等、还有开源对象存储服务器,比如FastDFS、MinIO等。
296 0
快开启阿里云对象存储 OSS 防误删新功能--版本控制,保护您珍贵的数据
阿里云对象存储 OSS 是保存海量数据的平台,支持丰富的应用。在使用过程中难免会遇到误操作、程序 Bug、覆盖写等导致数据被删除的场景,对于数据的丢失会非常着急,后果也非常严重,甚至某些情况下还会影响你的职业生涯。
1665 0
阿里云对象存储 OSS 发布全球第一可用性 SLA 背后的技术体系
2020年6月,阿里云对象存储 OSS 通过十年积累的技术红利,将可用性 SLA(Service Level Agreement) 提升 10 倍,做到了全球第一的核心竞争力,是其他的云厂家的 10~20 倍,如下图所示。
707 0
五个问答,告诉你阿里云对象存储如何助力钉钉战胜业务洪峰
为了积极迎接此次疫情的挑战,政府组织、企业、院校等纷纷开启了线上办公,视频会议、在线教育以及基于互联网的数据分析已然成为当下最重要的刚需。在这样如此巨大的业务流量和数据增量的压力下,钉钉是如何积极应对,从而实现存储的快速扩容,保障了业务连续性。
1075 0
小微企业阿里云最佳实践系列(三):OSS 图片存储(对象存储)与 CDN 内容分发
本博文主要为大家介绍静态文件的存储以及使用 CDN 加速访问的热点图片。很多企业都会面临网站大图加载缓存、文件下载并发低(通常同时几个人下载服务器上的大文件就会跑满服务的带宽)等问题,本文将逐一为大家讲解如何解决此类问题。
6708 0
通过云存储网关实现阿里云对象存储跨地域访问
阿里云对象存储用户众多,很多客户希望能够通过内网流量访问位于不同地域的OSS Bucket。本文通过具体的实践展示了基于云存储网关和云企业网实现内网流量访问不同地域的OSS Bucket的方案,整个配置过程非常的简单便捷。
2561 0
Linux备份到阿里云对象存储 OSS的脚本
使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。
1986 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《对象存储实战指南》发布
立即下载
对象存储实战指南-试读
立即下载
《客服中心的变革与发展》
立即下载