糗百的数据迁移实践

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这个源站就可以废弃不用了。

结语

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

6176 次点击
所在节点    推广
46 条回复
snopy
2015-05-05 22:14:29 +08:00
一入糗门深似海,从此节操是路人。
snopy
2015-05-05 22:15:35 +08:00
还有一句,糗百虐我千百遍,我待糗百如初恋。
coreos
2015-05-05 22:51:18 +08:00
@其实还好 七牛有漂亮妹子,约了,你们还有什么要说的?
Raidal
2015-05-05 22:55:47 +08:00
这个没什么值得说的
churchmice
2015-05-05 22:59:28 +08:00
糗百我感觉有官方雇佣段子手,天天在上面编段子娱乐大众,看得我恶心死了
Borden
2015-05-05 23:49:59 +08:00
@churchmice 没错,直接看糗百各种难受鸡皮疙瘩。但是糗百也有好段子,所以一般看其他网站从糗百选出来的那些段子就行了,体验好很多。
BorisChen
2015-05-06 02:26:46 +08:00
到处都是七牛软文,看见七牛都恶心了。
kn007
2015-05-06 07:37:29 +08:00
我是过来支持又拍云的。嗯,就这样
kn007
2015-05-06 07:39:26 +08:00
七牛如果不是免费,会有那么多人用么?我怀疑
PP
2015-05-06 07:54:11 +08:00
糗百同意你们发布这篇文章了吗?
xdlailai
2015-05-06 08:21:56 +08:00
这种文章完全起反作用吧,反正我不信这里的人看到这篇文章会用。
exuxu
2015-05-06 08:26:15 +08:00
七牛的软文 ...
notcome
2015-05-06 08:40:19 +08:00
原来数据迁移不是这么做的?我小时候想的第一个算法啊……
kier
2015-05-06 09:05:40 +08:00
就这么个东西,值得发一篇文章?
xiaozi
2015-05-06 09:06:34 +08:00
绝望了,这是七牛的软文
tanteng
2015-05-06 09:31:16 +08:00
@kamal
lianxiaoyi
2015-05-06 09:36:44 +08:00
软文写的不错。。。。。
weisdong
2015-05-06 09:45:46 +08:00
糗百这个客户还不错,有机会聊聊哈。
yuankui
2015-05-06 09:49:57 +08:00
软死了...
dreamramon
2015-05-06 11:05:34 +08:00
太软了,七牛的速度很一般,实测下一下就知道了。

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

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

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

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

© 2021 V2EX