糗百的数据迁移实践

2015-05-05 14:31:17 +08:00
 niuer

糗事百科(以下简称“糗百”)被誉为移动互联网时代的新娱乐手段,其上海量真实用户的糗事深受喜爱,每天有1亿次动态请求,峰值请求数为每秒30000次。面对如此高的并发访问量,糗百原来自建的平台越来越难以支撑,开始出现服务器过载、跨机房同步延时大、图片中心磁盘I/O成为瓶颈等问题。

为了解决这些刚性的服务压力,优化用户的服务体验,并考虑到七牛对静态资源存储的强大技术实力和优秀的解决方案,糗百决定将图片存储迁移到七牛平台上,并开始使用七牛提供的CDN服务。本文将结合糗百的数据迁移实践,来详细讲述如何在不中断服务的情况下,将海量数据平滑迁移到七牛平台的全过程。

qrsync+镜像存储打造平滑迁移方案

传统的数据迁移方案是:关掉网站原来的数据上传通道,所有数据变成只读,然后将所有数据上传到新的存储节点,再将上传入口改为新的存储节点,之后开放网站的上传功能。这样带来的问题是,数据迁移过程中,用户长时间不能进行上传操作,用户体验非常差。如何解决这个问题呢?

针对糗百这么大体量的应用,七牛提供的数据迁移方案——上传工具qrsync+镜像存储,很好地绕开了传统迁移方案所带来的问题。糗百先通过七牛的数据上传工具qrsync将大量冷数据传到七牛平台上,并将数据访问地址切换成七牛的域名。由于用户生成的大量热数据还在糗百自己的平台上,为了不出现数据丢失的情况,保证用户访问的流畅性,糗百选用了七牛的镜像存储服务。

七牛的镜像存储为整个数据迁移过程提供良好的过渡支持作用。当用户访问的数据不在七牛平台上时,镜像存储服务将回糗百源站抓取数据,并保存在七牛平台上。故此,镜像存储对每个资源只需回源一次,后续访问的时候就不再回源了。

随后,为了进一步缓解糗百源站的I/O压力,糗百对旧有系统做了一次版本升级,将新系统的图片存储直接放在七牛平台上。新版本的用户可以顺畅地将数据上传到七牛平台上,并实现访问,而旧系统的App版本还会有一部分用户在使用。这时,就要在一段时间内保证两套系统可用。但旧系统的App用户所产生的数据还是会被上传到糗百的自建平台中,在用户第一次访问这些数据时,镜像存储服务对糗百源站做回源,很好地确保了这部分数据的可用性。由于目前App客户端的版本更新速度比较快,因此在所有用户都更新成新版系统,源站的回源流量逐渐趋于0时,就可以将镜像功能删除了。

就这样,在用户毫无感知的情况下,糗百轻松实现了对图片存储的迁移,平稳地解决了图片中心磁盘I/O的瓶颈问题。

镜像存储的使用方法

假设源站所有的图片,放在一个叫img.example.com的子域里。那么平滑迁移的方式是:

  1. 在七牛上建立一个镜像bucket,设定源站为img.example.com。假设镜像bucket是example-img,到空间设置的域名设置中即可找到形式为7xiuqc.com1.z0.glb.clouddn.com的七牛域名;
  2. 将所有对外使用的图片的域名改为7xiuqc.com1.z0.glb. clouddn.com;
  3. 如果网站数据是UGC(用户产生内容)的,调整上传流程,传到七牛的镜像 bucket,这样源站就变成只读;
  4. 使用qrsync同步工具将历史数据全部同步到七牛的镜像bucket。

如此就完成了整个迁移过程。此时img.example.com这个源站就可以废弃不用了。

结语

相信数据资源高速增长这样的“甜蜜负担”,是很多企业都会遇到的。而如何借助云服务来合理扩容,如何在不中断服务的前提下,平滑地实现数据迁移,将成为决定企业未来命运的关键一环。七牛云存储不仅能为企业用户稳定高效的底层存储平台,镜像存储等优质的服务更能在数据迁移过程中提供强大的助力。此外,完成数据迁移之后,七牛提供的丰富的图片、音视频处理功能也为包括糗百在内的诸多企业带来了很大的惊喜。后续我们将专门撰文分享这部分内容。

5993 次点击
所在节点    推广
46 条回复
mopig
2015-05-05 14:33:30 +08:00
连续看了俩广告贴, 快绝望了...

非 糗百 的员工为什么能以糗百的名义发软文?
ewex
2015-05-05 14:36:24 +08:00
就吹吧,对待客户分等级,呵呵
nilai
2015-05-05 14:37:13 +08:00
我能说这是软文么。
chairuosen
2015-05-05 14:38:38 +08:00
不是糗百,是七牛的软文。。。
thankyourtender
2015-05-05 14:38:48 +08:00
再黑一下七牛,不黑浑身难受.
WKPlus
2015-05-05 14:42:46 +08:00
我还准备来对暗号,你就给我看广告
Huadb
2015-05-05 14:48:50 +08:00
七牛不是个玩具吗?
lhehuang
2015-05-05 14:51:59 +08:00
KPI考核的压力越来越大啊
lyragosa
2015-05-05 14:53:11 +08:00
用个CDN都要认证身份证,真他妈有毛病。
sopato
2015-05-05 14:57:47 +08:00
七牛用着不错呀,我闪。。。
abelyao
2015-05-05 15:01:11 +08:00
@WKPlus 天王盖地虎
yiciyuansky
2015-05-05 15:06:36 +08:00
我是来看评论的
kamal
2015-05-05 15:17:56 +08:00
cst4you
2015-05-05 15:23:38 +08:00
@lyragosa 因为怕你做坏事啊~~

我用 upyun 的 CDN, 就没要我身份证 = = 然后用他们的域名, 备案都不用
coosir
2015-05-05 16:08:45 +08:00
以为有干货,结果通篇就是为了介绍七牛镜像存储
Dongdong36
2015-05-05 16:24:31 +08:00
七牛要注册填写的东西不是一般的多。
lyragosa
2015-05-05 16:46:07 +08:00
@cst4you up云不但要手机,还要qq号
mcone
2015-05-05 16:59:32 +08:00
七牛的软文…………

最近发现七牛的抽奖才开始用的,抽了一个冲1000返500的“红包”你觉得我就会去充值了么,又送我一个冲200送60的好友红包你觉得我就会替你推荐了嘛…………PM还是有点naive的说

七牛费了老鼻子劲儿还傻乎乎上传了身份证,现在感觉还真不如另外某家(避免广告嫌弃就不提了)
icloudnet
2015-05-05 17:09:16 +08:00
被标题忽悠进来的
odirus
2015-05-05 17:20:19 +08:00
软文

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/188606

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX