QQ空间技术架构之深刻揭密
admin 发布:2024-11-14 04:02 15
QQ空间作为腾讯海量互联网服务产品,经过近七年的发展,实现了从十万级到亿级同时在线的飞跃。在这个过程中,QQ空间团队遇到了哪些技术挑战?其站点前后台架构随着业务规模的变化又进行了怎样的演进与变迁?成长背后有过怎样的心酸和快乐……
4.26日晚间,腾讯大讲堂·深圳首站《QQ空间技术架构之峥嵘岁月》活动在腾讯总部腾讯大厦多功能厅举办,腾讯Web前端研发领域专家、腾讯最早的专职Web开发团队核心成员、Qzone核心架构研发总监徐晓在两小时的演讲中揭开了QQ空间技术架构背后的秘密。
正式分享之前,徐晓介绍了QQ空间目前的海量服务数据规模(图1):
1.拥有5.5亿的活跃用户
2.过万台的设备
3.数千万级别的同时在线
4.数十亿级别的全站PV
5.P级的UGC存储量
6.每天千亿级别的服务请求
图1——QQ空间海量服务数据规模
接下来,徐晓把QQ空间成长和发展的历程分成三个阶段:石器时代、冷兵器时代和现代战争时代,分享了QQ空间从开始甚至难以生存,到逐步发展成国内最大的SNS社区产品背后的酸甜苦辣。
石器时代–从十万在线到百万在线
石器时代是QQ空间1.0到3.0稳健上线的过程。
徐晓说:“QQ空间在石器时代遇到的最大难题就是如何生存?如何让这个襁褓中的产品活下来?如何积累第一批宝贵的用户资源?”, 2005年QQ空间首发,最初是采用传统的发放邀请码的方式征集第一批用户。第一款QQ空间是嵌在独立的客户端软件中,看似是个客户端,其实是一个浏览器内核,里面都是HTML页面,以网站的方式存在。 当初的架构非常简单,采用了Apache搭建Web Server,Mysql保存最终数据。用户通过{uin}.qzone.qq.com(uin就是用户的QQ号码)这样的方式访问自己的空间。最开始上线时,仅邀请了电信用户。但上线之后才发现很多北方网通用户也非常希望来体验。但如果让北方网通用户跨网来访问电信的服务,那将是一个非常糟糕的体验。因为当时的跨网之间的带宽是非常有限的。
为了满足网通用户的需求,QQ空间团队在网通搭建了一套与电信一模一样的服务,电信的用户数据只存在电信的服务器上,网通用户数据只存在网通服务器上。看似异地分布,其实两部分数据是互相独立、不能冗余的。在用户注册开通空间时,就确定了他的数据存在于哪个服务器上。
用户访问空间的逻辑抽象来说是这样的(如图2):用户通过浏览器发起请求访问我们的第一个CGI,这个CGI再串行的获取用户数据,比如:装扮数据,日志数据等。等获取到全部数据之后,这个CGI再将所有的数据拼装成一个完整的HTML页面输出给用户。
图2——Qzone2.0典型载入逻辑
但同时,空间第一版的独立客户端也带来了各种问题和烦恼:
第一:非常不利于定位问题。
一旦页面元素填写失败,定位问题将是一件麻烦的事情。因为它不是Web页面,所以只能用其他抓包软件,比如Ethereal(Wireshark的前身)来抓取网络包做分析。但那个时候网络抓包工具的能力还比较弱,没有高亮和HTML语法检测等功能,所以整体环境比较受限。
第二:服务接入层压力大。
由于不仅要接受用户的请求,还要向后访问不同的数据。当后端某一个接口超时严重的情况下,很多用户的请求都会被挂起。这样就会消耗更多的连接资源,对Web服务器CPU的消耗很大。
第三:服务集群没有发挥出应有的服务能力
当时共用30-40台服务器,也只能支持50万左右的用户。无奈之下,团队想了一个没办法的办法:有意限制超过五十万用户,提出了一个排队等待机制,学习海底捞模式,当在线人数达到50w的时候,QQ空间会给用户展示一个Flash小游戏,让用户在等待的时候玩小游戏。
针对当时存在的种种问题,团队做了以下改进来解决:
第一:采用Web RIA。
当时大量使用了Ajax技术来减轻服务器的负载。其中一个极端的例子是:整个空间首页都是采用JS绘制,这样能够将用户访问的CGI足够轻量化。尽量简化了CGI逻辑,让CGI程序运行更加强壮、效率更高。同时,当服务异常时,还可以通过JS脚本绘制一个错误信息给予用户提示。而且,采用JS开发效率更高,调试更方便。 Web RIA化后,降低了服务器CPU消耗的40%,节约了DC的输出带宽约30%(部分JS脚本都可以被浏览器Cache住)。
第二:采用动静分离策略。
静态资源都放在自研的Web服务器qhttpd上,它具备当时ApacheSelect模型的两个数量级以上的接入能力。
第三:采用自研的Web Server:Qzhttp,主要用于动态分离的动态服务的需要。
由于Qzhttp是腾讯自研的、轻量的、更适合业务自己逻辑的Web Server,从而保证了它的高性能,它的接入能力比Apache (非FastCGI模式)提高了3倍。
石器时代做的最大的优化:
当用户申请QQ空间多个服务时,每个服务都有独立的存储和处理逻辑。只有当所有的服务处理完成,才会由QQ空间框架服务器返回给用户。这样对于同时依赖日志、相册、音乐、留言的服务就会产生两大问题:
1.短板效应一损俱损;
2.具体业务容量无法差异化。
针对这两个问题,做了首页载入性能优化及首页内容静态化系统两方面的优化:
研究用户访问模型。拉取展现与UGC内容的变更比例是7:1。用户之间互访频繁,看他人与看自己的比例是5:1.。通过以上数据,可以看出用户的UGC更新很少,但是用户之间互相访问很频繁。根据用户的这种访问模型,空间团队研发了一套静态化系统(图3)。这套系统会将用户首页的内容全部Cache,然后根据用户的访问,以及用户自己UGC内容的更改,采用一定策略更新静态化系统的Cache数据。 通过增加首页内容静态化系统,首页展现速度从5s提升到3s,用户也不用再玩小游戏进行等待。同时在设备没有扩容的前提下,同时在线用户访问数突破100w。
- 上一篇: 视频会员购买渠道哪家强?讨论一下
- 下一篇: 腾讯视频会员多少钱一个月
推荐应用
相关推荐
- 11-15如何使用手机免费开通QQ黄钻业务
- 11-04网易的游戏会员,和视频音乐会员有何不同?
- 11-025亿人在用!到底是什么人还在登QQ?网友:没办法,黄钻续多了
- 11-01qq黄钻对其隐身是什么意思
- 10-28腾讯加速推动IPv6应用,年内完成QQ微信IPv6技术升级
- 10-28qq黄钻刷永久免费网站(黄钻在线刷)
- 10-22QQ空间技术架构之深刻揭密
- 10-21QQ 空间技术架构之深刻揭密
- 10-195亿人在用!到底是什么人还在登QQ?网友:没办法,黄钻续多了
- 10-16视频会员体系不再"大一统"?爱奇艺推出星钻VIP会员
热门下载
-
1
2022百度网盘安卓版突破限速
类别:手机软件
-
2
免费领QQ超级会员助手
类别:QQ软件
-
3
抖音视频自动评论助手——养号必备
类别:手机软件
-
4
亲测可用的微信视频号下载器,内含详细教程
类别:电脑软件
-
5
视频字幕提取器怎么用?2023最新字幕提取工具 Video subtitle extractor 2.0.0
类别:电脑软件
-
6
和平精英捏脸助手v2.0
类别:QQ软件
-
7
酒店微型摄像头检测器-安卓版
类别:手机软件
-
8
抖音无水印解析批量下载pc版
类别:电脑软件
-
9
QQ动态个性名片—安卓版
类别:QQ软件
-
10
全网短视频无水印下载工具 支持tiktok
类别:电脑软件
-
11
2022最新版qq透明头像生成软件
类别:QQ软件
-
12
安卓魔音变声器青春版v2.1.3
类别:手机软件