Upload
drewz-lin
View
1.403
Download
7
Embed Size (px)
Citation preview
QQ空间技术架构之峥嵘岁月
腾讯Qzone平台徐晓
自我介绍
2006 – 北京邮电大学软件工程学士毕业
2006 – 加入腾讯 参与Qzone研发工作经历Qzone 3.0 / 4.0 / 5.0 / 6.0 重构
Qzone日志重构、平台提速
Qzone平台框架化(开放平台原型)
腾讯Web前端开发专家
我们的海量服务
5.5亿活跃用户数十亿级全站PV
数千万级同时在线每天千亿级的服务请求
数十P级UGC存储量
过万台设备
目录
石器时代 – 从十万在线到百万在线
冷兵器时代 – 百万在线到千万在线
现代战争时代 – 数千万在线向亿级在线
总结
石器时代 如何生存
Qzone 2.0 客户端
Qzone 1.0 – 2.0 服务架构
电信
Apache
MySQL
server
cache
.qzone.qq.com
网通
Apache
server
MySQL
cache
*
Qzone 2.0 典型载入逻辑
Qzone框架 用户机器
数据服务A
数据服务B
数据服务C
种种苦闷
Windows Client App不利于问题定位
服务接入层压力大
服务集群没有发挥出应有服务能力
没有办法的办法
50万在线限制
排队时请用户玩游戏
轻量化框架
客户端Web RIA化
HTML页面生成由前端页面进行
服务系统故障影响降低
Javascript逻辑开发迭代更快捷
个人主页
整个页面代码
将入口框架的计算降到最低
用户基本信息
效果
客户端Web RIA化
降低服务器CPU消耗 40%+
节约DC的输出带宽约 30%+
启用qhttpd
Web服务器组件优化
自研qzhttp
接入能力比Apache(非FastCGI模式)提高3倍
最适合团队的配置管理方法
无需大幅改变接入单元的编程风格
分析个人主页
个人资料日志
音乐留言板
首页逻辑
Qzone框架 用户机器
日志模块
相册模块
音乐模块
问题
同时依赖日志、相册、音乐、留言的服务
短板效应一损俱损
具体业务容量无法差异化
首页载入性能优化
研究用户访问模型
拉取展现 : UGC内容变更 =
用户间互访频繁,看他人 : 看自己 =
有6/7的访问可以不需要拉取最终数据
??
7 : 15 : 1
首页内容静态化系统
实施效果
首页展现速度提升
用户不再需要玩小游戏等待
设备基本不变 在线迅速突破 1,000,000
5s 3s
收获
自研组件优势
站点前后端逻辑合理分解
按用户行为模型发挥架构最大能力
Qzone 3.0 稳健上线
石器时代 – 从十万在线到百万在线
冷兵器时代 – 百万在线到千万在线
现代战争时代 – 数千万在线向亿级在线
冷兵器时代 功能的磨砺
一切才刚刚开始
网通,教育网用户很不爽!
每一次发布版本留守2小时!
手机关机要罚款!
怎么回事?
服务容量限制…
跨网访问问题…
发布策略不够严谨…
依赖服务多发生故障一损俱损…
解决网通资源
电信
qzhttp
storage
server
cache
.qzone.qq.com
网通
qzhttp
server
storage
cache
*
qhttpd
专线
教育网
海外
一个世界
不再需要开通时区分用户接入
数据层服务得到简化
通用解决其他小运营商问题
跨网访问
静态资源下载量大
静态资源请求次数 : CGI请求数 =
采用CDN系统
用户还是反馈慢
10 : 1
CDN的DNS路由
很多悲剧
跳出DNS拘束
优化思路
用户爽了
大部分教育网用户问题解决
多级支持的思路成为公共方案
故障是常态
低ARPU、低成本、低价机器、大集群
版本迭代快 每周发布版本
用户对故障和低效的容忍度非常低
用户容忍度曲线
操作单元多接口依赖
1s 内必须响应
服务分级
区分为关键和非关键两大类
动态超时
高峰期服务更平滑 (EMA算法)
多层容错
浏览器到各级服务器的容错
多层容错
公网
qzhttp
storage
server
cache
.qzone.qq.com*user.qzone.qq.com/*客户端容错
LVS
L5
HTTP 304
JSON Data Default
柔性可用
柔性可用
飞翔的同时更换翅膀
空间10min打不开给我们的启示
更换翅膀不是瞬间的过程
发布方案作为技术评审的一部分
影响用户的版本发布严格执行灰度发布策略
小版本灰度控制
大版本灰度策略
Qzone 5.0 上线
石器时代 – 从十万在线到百万在线
冷兵器时代 – 百万在线到千万在线
现代战争时代 – 数千万在线向亿级在线
现代战争 立体化运营
新的问题来了
配合上线一个App要用一周?!
平台和应用架构分离
平台和应用架构分离
日志
相册
留言
心情
音乐
模块 二级页面
应用插件区
Qzone 框架表现插件区
装扮插件
活动插件
关系 资料 权限
装扮
活动
简单配置后上线无需平台做代码级变更
问题
神马?深圳出口光缆被挖断了?!
鸡蛋不能都放一起
服务分布从深圳走向全国
x
IDC分布
深圳 其他城市
更新
写读写 读
问题
如何快速发现和解决用户的问题?
服务器流量监控
接口调用监控
前端测速监控
前端调用错误监控
用户自助
持续体验优化
持续体验优化
持续体验优化
持续体验优化
持续体验优化
第一片数据更早到达
浏览器可分段解析
如何根据资源控制渲染
收获
全国甚至全球的分布运营能力
全方位的立体化监控能力
各个逻辑层持续优化能力
目录
石器时代 – 从十万在线到百万在线
冷兵器时代 – 百万在线到千万在线
现代战争时代 – 数千万在线向亿级在线
总结
峥嵘岁月的启示
百万在线
高性能
千万在线
高可用性
面向亿级在线
高可运营性
腾讯《海量服务之道》系列
Set模型 全网调度 灰度升级
过载保护 立体监控 自动部署 柔性可用
大系统做小先扛住再优化
边重构边生活干干净净
有损服务 动态运营
谢谢