73
QQ空间技术架构之峥嵘岁月 腾讯Qzone平台 徐晓

徐晓 Qq空间技术架构之峥嵘岁月

Embed Size (px)

Citation preview

Page 1: 徐晓 Qq空间技术架构之峥嵘岁月

QQ空间技术架构之峥嵘岁月

腾讯Qzone平台徐晓

Page 2: 徐晓 Qq空间技术架构之峥嵘岁月

自我介绍

2006 – 北京邮电大学软件工程学士毕业

2006 – 加入腾讯 参与Qzone研发工作经历Qzone 3.0 / 4.0 / 5.0 / 6.0 重构

Qzone日志重构、平台提速

Qzone平台框架化(开放平台原型)

腾讯Web前端开发专家

Page 3: 徐晓 Qq空间技术架构之峥嵘岁月

我们的海量服务

5.5亿活跃用户数十亿级全站PV

数千万级同时在线每天千亿级的服务请求

数十P级UGC存储量

过万台设备

Page 4: 徐晓 Qq空间技术架构之峥嵘岁月

目录

石器时代 – 从十万在线到百万在线

冷兵器时代 – 百万在线到千万在线

现代战争时代 – 数千万在线向亿级在线

总结

Page 5: 徐晓 Qq空间技术架构之峥嵘岁月

石器时代 如何生存

Page 6: 徐晓 Qq空间技术架构之峥嵘岁月

Qzone 2.0 客户端

Page 7: 徐晓 Qq空间技术架构之峥嵘岁月

Qzone 1.0 – 2.0 服务架构

电信

Apache

MySQL

server

cache

.qzone.qq.com

网通

Apache

server

MySQL

cache

*

Page 8: 徐晓 Qq空间技术架构之峥嵘岁月

Qzone 2.0 典型载入逻辑

Qzone框架 用户机器

数据服务A

数据服务B

数据服务C

Page 9: 徐晓 Qq空间技术架构之峥嵘岁月

种种苦闷

Windows Client App不利于问题定位

服务接入层压力大

服务集群没有发挥出应有服务能力

Page 10: 徐晓 Qq空间技术架构之峥嵘岁月

没有办法的办法

50万在线限制

排队时请用户玩游戏

Page 11: 徐晓 Qq空间技术架构之峥嵘岁月

轻量化框架

客户端Web RIA化

HTML页面生成由前端页面进行

服务系统故障影响降低

Javascript逻辑开发迭代更快捷

Page 12: 徐晓 Qq空间技术架构之峥嵘岁月

个人主页

Page 13: 徐晓 Qq空间技术架构之峥嵘岁月

整个页面代码

将入口框架的计算降到最低

Page 14: 徐晓 Qq空间技术架构之峥嵘岁月

用户基本信息

Page 15: 徐晓 Qq空间技术架构之峥嵘岁月

效果

客户端Web RIA化

降低服务器CPU消耗 40%+

节约DC的输出带宽约 30%+

启用qhttpd

Page 16: 徐晓 Qq空间技术架构之峥嵘岁月

Web服务器组件优化

自研qzhttp

接入能力比Apache(非FastCGI模式)提高3倍

最适合团队的配置管理方法

无需大幅改变接入单元的编程风格

Page 17: 徐晓 Qq空间技术架构之峥嵘岁月

分析个人主页

个人资料日志

音乐留言板

Page 18: 徐晓 Qq空间技术架构之峥嵘岁月

首页逻辑

Qzone框架 用户机器

日志模块

相册模块

音乐模块

Page 19: 徐晓 Qq空间技术架构之峥嵘岁月

问题

同时依赖日志、相册、音乐、留言的服务

短板效应一损俱损

具体业务容量无法差异化

Page 20: 徐晓 Qq空间技术架构之峥嵘岁月

首页载入性能优化

研究用户访问模型

拉取展现 : UGC内容变更 =

用户间互访频繁,看他人 : 看自己 =

有6/7的访问可以不需要拉取最终数据

??

7 : 15 : 1

Page 21: 徐晓 Qq空间技术架构之峥嵘岁月

首页内容静态化系统

Page 22: 徐晓 Qq空间技术架构之峥嵘岁月

实施效果

首页展现速度提升

用户不再需要玩小游戏等待

设备基本不变 在线迅速突破 1,000,000

5s  3s

Page 23: 徐晓 Qq空间技术架构之峥嵘岁月

收获

自研组件优势

站点前后端逻辑合理分解

按用户行为模型发挥架构最大能力

Page 24: 徐晓 Qq空间技术架构之峥嵘岁月

Qzone 3.0 稳健上线

Page 25: 徐晓 Qq空间技术架构之峥嵘岁月

石器时代 – 从十万在线到百万在线

冷兵器时代 – 百万在线到千万在线

现代战争时代 – 数千万在线向亿级在线

Page 26: 徐晓 Qq空间技术架构之峥嵘岁月

冷兵器时代 功能的磨砺

Page 27: 徐晓 Qq空间技术架构之峥嵘岁月

一切才刚刚开始

网通,教育网用户很不爽!

每一次发布版本留守2小时!

手机关机要罚款!

Page 28: 徐晓 Qq空间技术架构之峥嵘岁月

怎么回事?

服务容量限制…

跨网访问问题…

发布策略不够严谨…

依赖服务多发生故障一损俱损…

Page 29: 徐晓 Qq空间技术架构之峥嵘岁月

解决网通资源

电信

qzhttp

storage

server

cache

.qzone.qq.com

网通

qzhttp

server

storage

cache

*

qhttpd

专线

教育网

海外

Page 30: 徐晓 Qq空间技术架构之峥嵘岁月

一个世界

不再需要开通时区分用户接入

数据层服务得到简化

通用解决其他小运营商问题

Page 31: 徐晓 Qq空间技术架构之峥嵘岁月

跨网访问

静态资源下载量大

静态资源请求次数 : CGI请求数 =

采用CDN系统

用户还是反馈慢

10 : 1

Page 32: 徐晓 Qq空间技术架构之峥嵘岁月

CDN的DNS路由

Page 33: 徐晓 Qq空间技术架构之峥嵘岁月

很多悲剧

Page 34: 徐晓 Qq空间技术架构之峥嵘岁月

跳出DNS拘束

Page 35: 徐晓 Qq空间技术架构之峥嵘岁月

优化思路

Page 36: 徐晓 Qq空间技术架构之峥嵘岁月

用户爽了

大部分教育网用户问题解决

多级支持的思路成为公共方案

Page 37: 徐晓 Qq空间技术架构之峥嵘岁月

故障是常态

低ARPU、低成本、低价机器、大集群

版本迭代快 每周发布版本

用户对故障和低效的容忍度非常低

Page 38: 徐晓 Qq空间技术架构之峥嵘岁月

用户容忍度曲线

Page 39: 徐晓 Qq空间技术架构之峥嵘岁月

操作单元多接口依赖

Page 40: 徐晓 Qq空间技术架构之峥嵘岁月

1s 内必须响应

服务分级

区分为关键和非关键两大类

动态超时

高峰期服务更平滑 (EMA算法)

多层容错

浏览器到各级服务器的容错

Page 41: 徐晓 Qq空间技术架构之峥嵘岁月

多层容错

公网

qzhttp

storage

server

cache

.qzone.qq.com*user.qzone.qq.com/*客户端容错

LVS

L5

HTTP 304

JSON Data Default

Page 42: 徐晓 Qq空间技术架构之峥嵘岁月

柔性可用

Page 43: 徐晓 Qq空间技术架构之峥嵘岁月

柔性可用

Page 44: 徐晓 Qq空间技术架构之峥嵘岁月

飞翔的同时更换翅膀

空间10min打不开给我们的启示

更换翅膀不是瞬间的过程

发布方案作为技术评审的一部分

影响用户的版本发布严格执行灰度发布策略

Page 45: 徐晓 Qq空间技术架构之峥嵘岁月

小版本灰度控制

Page 46: 徐晓 Qq空间技术架构之峥嵘岁月

大版本灰度策略

Page 47: 徐晓 Qq空间技术架构之峥嵘岁月

Qzone 5.0 上线

Page 48: 徐晓 Qq空间技术架构之峥嵘岁月

石器时代 – 从十万在线到百万在线

冷兵器时代 – 百万在线到千万在线

现代战争时代 – 数千万在线向亿级在线

Page 49: 徐晓 Qq空间技术架构之峥嵘岁月

现代战争 立体化运营

Page 50: 徐晓 Qq空间技术架构之峥嵘岁月

新的问题来了

配合上线一个App要用一周?!

Page 51: 徐晓 Qq空间技术架构之峥嵘岁月

平台和应用架构分离

Page 52: 徐晓 Qq空间技术架构之峥嵘岁月

平台和应用架构分离

日志

相册

留言

心情

音乐

模块 二级页面

应用插件区

Qzone 框架表现插件区

装扮插件

活动插件

关系 资料 权限

装扮

活动

Page 53: 徐晓 Qq空间技术架构之峥嵘岁月

简单配置后上线无需平台做代码级变更

Page 54: 徐晓 Qq空间技术架构之峥嵘岁月

问题

神马?深圳出口光缆被挖断了?!

Page 55: 徐晓 Qq空间技术架构之峥嵘岁月

鸡蛋不能都放一起

服务分布从深圳走向全国

x

Page 56: 徐晓 Qq空间技术架构之峥嵘岁月

IDC分布

深圳 其他城市

更新

写读写 读

Page 57: 徐晓 Qq空间技术架构之峥嵘岁月

问题

如何快速发现和解决用户的问题?

Page 58: 徐晓 Qq空间技术架构之峥嵘岁月

服务器流量监控

Page 59: 徐晓 Qq空间技术架构之峥嵘岁月

接口调用监控

Page 60: 徐晓 Qq空间技术架构之峥嵘岁月

前端测速监控

Page 61: 徐晓 Qq空间技术架构之峥嵘岁月

前端调用错误监控

Page 62: 徐晓 Qq空间技术架构之峥嵘岁月

用户自助

Page 63: 徐晓 Qq空间技术架构之峥嵘岁月

持续体验优化

Page 64: 徐晓 Qq空间技术架构之峥嵘岁月

持续体验优化

Page 65: 徐晓 Qq空间技术架构之峥嵘岁月

持续体验优化

Page 66: 徐晓 Qq空间技术架构之峥嵘岁月

持续体验优化

Page 67: 徐晓 Qq空间技术架构之峥嵘岁月

持续体验优化

第一片数据更早到达

浏览器可分段解析

Page 68: 徐晓 Qq空间技术架构之峥嵘岁月

如何根据资源控制渲染

Page 69: 徐晓 Qq空间技术架构之峥嵘岁月

收获

全国甚至全球的分布运营能力

全方位的立体化监控能力

各个逻辑层持续优化能力

Page 70: 徐晓 Qq空间技术架构之峥嵘岁月

目录

石器时代 – 从十万在线到百万在线

冷兵器时代 – 百万在线到千万在线

现代战争时代 – 数千万在线向亿级在线

总结

Page 71: 徐晓 Qq空间技术架构之峥嵘岁月

峥嵘岁月的启示

百万在线

高性能

千万在线

高可用性

面向亿级在线

高可运营性

Page 72: 徐晓 Qq空间技术架构之峥嵘岁月

腾讯《海量服务之道》系列

Set模型 全网调度 灰度升级

过载保护 立体监控 自动部署 柔性可用

大系统做小先扛住再优化

边重构边生活干干净净

有损服务 动态运营

Page 73: 徐晓 Qq空间技术架构之峥嵘岁月

谢谢