一直陪伴你成长的QQ相册后台长什么样?

QQ空间陪伴大家走过了将近12年的时光。时至今日,QQ相册已经存储了超过2万亿张图片,对比业界,可以说是当之无愧的中国第一大相册,也是世界上规模最大的图片类产品之一。本文从存储架构、容灾、加速等多方面对相册的架构进行了阐述。

QQ空间(QZone),陪伴大家走过了将近12年的时光。其中的QQ相册,也和大家一路走来,记录下了很多中国人的成长瞬间。

时至今日,QQ相册已经存储了超过2万亿张图片,物理存储量300PB。平均日增3亿张图片,日用户浏览数达500亿次。对比业界,可以说是当之无愧的中国第一大相册,也是世界上规模最大的图片类产品之一。

随着业务的发展,不仅用户看得到的页面样式在变,由腾讯架构平台部开发和运营的相册系统也经历了不断的优化。下面我们介绍一下QQ相册的后台架构长什么样。

如果从头搭建一个小型的相册系统,我们通常想到的架构是这样的。

索引系统存放用户的相册列表和每个相册内的图片列表。文件系统存放实际的图片文件。

实际上最早的QQ相册系统,就是直接用MySQL存储用户索引,Linux文件系统存放图片文件。这是一个最简易的系统,能够满足少量的用户和基本的功能。在面对相册用户和请求量急速增长的过程中,部门针对性地研发了底层的TFS存储系统家族KV引擎进行支撑。

索引

针对相册用户量大、读写频繁、操作数据小、需要支持平滑扩容等特点,TFS推出了基于大容量SSD的分布式K-V存储平台TSSD。通过多副本保证数据可靠性,通过自研持久化存储引擎解决随机写性能瓶颈,结合SSD与生俱来的随机读优势,使得TSSD具备出色的混合读写性能,单台峰值10万+次的读写IOPS。在支持高并发读写的同时, 独有的IO延时毛刺控制技术,使得运营中99.9%读写访问延时低于10ms。

此外,针对用户行为进行分析,发现有大量的用户操作只是拉取相册和图片列表,并没有去查看图片的详细信息。对此,我们对用户索引进行了轻重分离,将列表所需关键信息和其他详细信息分开存储,大大降低了每次操作平均读写的索引数据块大小。

压缩

QQ相册支持JPG、PNG、GIF等主流图片格式,并且在保证图片质量的前提下不断尝试和使用压缩比更高的新格式。比如已经全面支持WebP,比JPG节约存储和带宽30%。目前正在推进使用公司自研图片格式sharpP,对比WebP体积还减少15%以上。

为了应对超大并发量的压缩请求,我们搭建了几千台机器规模的压缩集群。并且这部分压缩集群大部分使用Docker技术,和现有业务机器混用,显著节约了成本。

对于时延敏感的场景,我们还推广使用了FPGA硬件压缩卡,耗时仅为CPU机器的10%。这项能力目前也通过腾讯云对外开放。

园区分布

10亿+的相册用户被逻辑上划分到不同的园区,每个园区都有一套完整的服务。每个园区可以平滑扩容,园区也可以按需增加。

就近上传

为了保证索引信息的一致性,每个用户的完整索引信息最终只会保存在某一个特定园区。用户的园区归属信息是预先划分好的。比如一个用户的索引归属信息在上海,他在深圳出差期间,如果每次上传需要访问上海的服务器,延时将很高。

为此我们后台进行了就近上传的改造,用户上传图片时,会根据地域、运营商接入最近的上传园区,并就近落地图片数据。索引归属信息则由我们的server在后台进行同步。很大程度提高了上传成功率,降低了响应时延。

异地容灾

当程序感知到某个园区发生网络故障等情况时,数据和索引可以写入备份点。多个园区之间形成了一个环状备份关系。

下载加速

在全国建立了30+个CDN加速点,就近为用户提供下载服务。还建有香港和美国加速点,为海外用户提供加速。

cache预推送

根据对用户行为的分析,最近上传的图片访问量往往最大。为了给用户提供更好的下载体验,在用户上传相册后,我们会预先发送指令给CDN加速点通知它们拉取图片进行缓存,当后续用户的好友进行访问时,能够快速加载,无需回源。

未来我们还会在提升服务质量和稳定性上继续努力,让网友们放心、便捷地使用QQ相册来记录生活点滴。

文章来源:腾讯架构师

掌握最新互联网及腾讯资讯

关注 腾讯大讲堂

原文发布于微信公众号 - 腾讯大讲堂(TX_DJT)

原文发表时间:2018-04-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏艾斯博客www.vpsss.net

WordPress 搭建网站流程-零基础搭建 wordpress 教程

接触 WordPress 时间久了,魏艾斯博客发现很多人都想学习如何用 WordPress 搭建网站,苦于没人领进门不明白从哪里开始,在门外乱转也不得要领。老魏...

1.2K4
来自专栏FreeBuf

SiteLock最新报告显示:针对网站的攻击激增,平均每天有63起

根据SiteLock于本周一发布的最新分析报告显示,在过去的几个月里,针对网站的攻击活动数量出现了大幅增加。 ? SiteLock的网站安全内部报告是基于对超过...

2309
来自专栏Eugene's Blog

2018黑帽SEO优化排名技术方法大总结分类目录文章标签友情链接联系我们

7412
来自专栏极乐技术社区

小程序 · 一周报

小游戏新增分包加载功能。运用分包功能后,小程序或小游戏代码包总上限可提升至 8M。建议开发者将每个分包做得尽可能小,以便提升用户的打开速度,优化服务体验。

1150
来自专栏FreeBuf

如何制作一款智能家用温控器?(part 1)

引文 我现在想要利用手里的树莓派制作一款WiFi智能温控器,这样我就可以将设备接上电源安装在大厅,然后随时可以监控室内温度,同时这款DIY制作的温控器价格比较便...

1945
来自专栏即时通讯技术

京东京麦商家开放平台的消息推送架构演进之路

京麦实时消息推送是京东的京麦商家开放平台的核心组成部分。从消息源到消息中心再到触达用户,以及最终根据消息协议呼起操作页面,京麦实时消息推送是一个完整且健康的生态...

1111
来自专栏北京马哥教育

利用Python分析2018智联招聘全国各个城市的职位数排名

新年快到了,工作了一年你,躺在床上,退下一身的疲怠,是否也曾向往去到一个新的城市工作和生活呢那中国除了公认的北上广深工作机会最多以外,还有哪些城市也相对不错呢这...

4367
来自专栏Python爬虫与算法进阶

Android 7.0最新体验报告

在无数“加油”的殷切期盼下,一加终于在12月14号放出了基于Android 7.0的氢OS 3.0公测版,适用于一加3。那这“一加”牌的牛扎糖口味如何呢?新的氢...

4329
来自专栏即时通讯技术

解密“达达-京东到家”的订单即时派发技术原理和实践

达达-京东到家作为优秀的即时配送物流平台,实现了多渠道的订单配送,包括外卖平台的餐饮订单、新零售的生鲜订单、知名商户的优质订单等。为了提升平台的用户粘性,我们需...

1940
来自专栏施炯的IoT开发专栏

移动物联网 之 智能家居

本系列文章结合时下正热的“物联网”概念,介绍实现“智能家居”的一套解决方案。 引言     随着科技的发展,手机已经不简单地是个通讯设备,而是人们生活的必需...

2568

扫码关注云+社区

领取腾讯云代金券