您的位置:首页 > 运维架构 > 网站架构

[视频]QQ空间技术架构之深刻揭秘------技术体会

2012-06-11 10:38 417 查看
[文章作者:狂奔的鹿(陆松林)本文版本:v1.0 转载请注明原文链接:http://www.cnblogs.com/dynamiclu/]

QQ空间的规模,5.5亿的活跃用户,千万级人的在线,十亿级别的PV。 06年的时候 ,就对QQ空间的技术实现细节好奇,当时还特意看了看其浏览器端的源码,JS代码实在复杂,让我失去了调试模仿实例的耐心。 前几天看了QQ空间技术总监徐晓的视频“QQ空间技术架构之深刻揭秘”http://djt.qq.com/topic-Shenzhen_Qzone.html,体会如下几点:

体会1.首页是完全用JS绘制好,是用完全静态的html或shtml好,还是两都方式都用?

JS绘制时,大量使用ajax技术是减轻了服务器的负载,服务器端逻辑简化,程序更健壮,后端出错时,前端自动调整,更好的用户体验。 JS绘制首页,更吻合WEB系统优化最重要的原则之“将请求里的逻辑尽量往前移”。

html或shtml的首页,开发速度快,维护方便,html语法简单。apache或nginx开启ssi模块,shtml页面引用碎片的是很多门户首页使用的方式。在epoll的I/0模型下,应用服务器资源消耗少,并发处理能力强。

两种方式缺点也会很明显,想想QQ空间的前端工程师在用JS绘制首页在时,不同系统,不同浏览器种类、版本的情况下调试JS代码,也是一件头大的事。

体会2. 研究用户访问模型,依据统计的比例,确定并实施优化的方案。

QQ空间拉取展现与UGC内容的变更比例是7:1。用户之间互访频繁,看他人与看自己的比例是5:1, 有6/7的访问是可以不需要拉取最终数据的。在此情况下,QQ空间增设了一静态化cache系统。如下图,



用户A发表后,数据进入日志服务,并更新标志服务,发完之后,第一次可能是用户A自已或B来读取用户A首页的数据,静态化系统写服务会将日志数据从日志服务处取过来,并写入静态化存储服务,若更新标志服务没有通知,读取只会走静态化存储服务,不再走原来的日志服务。这样,提升了请求的响应速度。

从访问模型入手进行优化的例子很多,大部分新闻频道、社区经常会有爬虫和浏览器用户两种访问,不同站点也有自已的比例。 QQ空间的上述优化本质还是在读取请求原存储前再加了一层cache(存储)的思路。针对的是内容数据。优势在于原系统改造逻辑较少。 再看如下图,



原系统不变,在日志读取前面加了一层squid作代理缓存, 当有日志更新时,调用更新标志服务器,再通知squid服务器清除代理缓存,清除后,第一次再读取时,会写入缓

存。 实质原理跟QQ空间的方案一样。

体会3:CDN静态资源优化

在多机房的情况下,用户如何取到离用户最近的服务器上的资源。常用的CDN方式是通过路由策略(DNS路由),指定最近的服务器IP给用户访问。这种方式在教育网下有个别用户出现了问题,当clientIP和localDNS的不一致时,这样访问不是离用户最近的服务器IP,导致打开很慢。优化方式:根据用户的第一次访问时,通过http协议,确认clientIP,发现在是在那个运营商,再根据clientIP指定静态资的域名地址。

最后,提到SET模式,灰度发布,在腾讯的讲堂上不同的课都有提到, 值得效仿。

[文章作者:狂奔的鹿(陆松林)本文版本:v1.0 转载请注明原文链接:http://www.cnblogs.com/dynamiclu/]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: