QQShow2.0QQShow2.0 重构历程重构历程
QQQQ 秀开发组秀开发组
QQQQ 秀秀 1.01.0 的技术架构的技术架构
存储层
DB/Files
接口层
数据存取、操作 API/ 接口 Server/File Server/ 流程 Server…
应用层
ITEM 显示 / 商城 / 用户换装 / 用户个人形象...
系统 / 存储
层
Web 应用 QQ Client 应用 Chat Room 应用
数据存取、操作 API
UDP File ServerHTTP File Server
User DB Item Info DB Item/Image Fil...
只能提供只能提供 GIFGIF 图片服务图片服务 ,, 限制了应用的进一步发展限制了应用的进一步发展
QQQQ 秀服务抛开商城应用秀服务抛开商城应用 ,, 简单而言其实就是给应用提供一套图片下载简单而言其实就是给应用提供一套图片下载
展示的系统...
QQQQ 秀秀 2.02.0 要解决的要解决的 "" 困惑困惑 ""
在提供一套图形形象的基础上在提供一套图形形象的基础上 ,, 提供基于提供基于 flashflash 的的
形象展示形象展示 ,, 并且把并且把 flashflash 形象作为...
QQQQ 秀秀 2.02.0 商城子系统商城子系统
Web Server/CGI
TTC-cache
商城 DB
TTC-cache
社区 DB
TTC-cache
活动 DB
批价发货 Server
商城管理端 /Daemons
{UIND/...
QQQQ 秀秀 2.02.0 商城子系统商城子系统
面向面向 QQQQ 秀用户访问后台秀用户访问后台 DBDB 全部通过全部通过 DBC/TTCDBC/TTC 层代理,层代理, DBCDBC 屏屏
蔽蔽 TTCTTC 的分布,的分布, TTCT...
前台模块前台模块
采用采用 FlashFlash 引擎,引擎, FlashFlash 负责交互,封装了独立的换装负责交互,封装了独立的换装 jsjs 库负责和库负责和
FlashFlash 通讯通讯
采用采用 AJAXAJAX 技术,用技术,用...
逻辑模块逻辑模块
CGI 逻辑
通用逻辑层 / 公共接口
存储层
DB TTC C4A
采用三层架构,使得存储采用三层架构,使得存储 -- 通用逻辑通用逻辑 -- 业务逻辑解藕。业务逻辑解藕。
数据储存模块数据储存模块
QQShow2.0QQShow2.0 商城现在全部采用商城现在全部采用 DBC+TTCDBC+TTC 的方的方
式实现数据存储。式实现数据存储。
定义了定义了 55 类类 DBCDBC 分别中转不同级别的分别中转不同级...
数据储存模块数据储存模块
对于核心数据,例如用户信息和用户物品对于核心数据,例如用户信息和用户物品
分布了在分布了在 100100 个库个库 1000010000 表,这样可以表,这样可以
减少减少 DBDB 写操作时的锁表情况,提高写操作时的...
数据储存模块数据储存模块
数据存储模块定义了统一的接口基类,用数据存储模块定义了统一的接口基类,用
模板的方式实现了分别针对模板的方式实现了分别针对 DbDb 、、 TTCTTC 、、
C4AC4A 的三个派生类,使得底层存储和上层的三个派生类...
容灾建设容灾建设
Configserver/AgentConfigserver/Agent 服务服务 ,, 保证服务故障的时候保证服务故障的时候
能快速切换到正常提供服务的备用服务上(主要能快速切换到正常提供服务的备用服务上(主要
应用在逻辑层...
日常运营监控模块日常运营监控模块
利用返回码系统实现了关键调用的情况以及调用时间的利用返回码系统实现了关键调用的情况以及调用时间的
上报,而开发人员只需维护关键调用映射表。(模块间上报,而开发人员只需维护关键调用映射表。(模块间
调用监控)调用...
QQQQ 秀秀 2.02.0 后台子系统后台子系统
Web 商城
应用层
QQ Client 应用
逻辑层
系 统 / 存 储
层
http_ifsd
Item 后台
管理网站
tcp
Fileserver
商城
ITEM
Nfs_server...
QQQQ 秀秀 2.02.0 后台后台 itemitem 系统系统
商城子系统中的展示商城子系统中的展示 8484 图图 ,, 换装换装 flashflash 文文
件的拉取都是通过件的拉取都是通过 qqshow2-item.qq.comqqs...
QQQQ 秀秀 2.02.0 后台后台 GDGD 系统系统
GDGD 服务是商城服务和后台服务的一个接口服务是商城服务和后台服务的一个接口
GDGD 生成了用户形象的生成了用户形象的 XMLXML 配置信息,供配置信息,供
clientclie...
QQQQ 秀秀 2.02.0 后台快照系统后台快照系统
负责生成负责生成 flashflash 形象对应的形象对应的 GIFGIF 形象形象
通过通过 linuxlinux 系统下的系统下的 firefoxfirefox 进程挂载进程挂载 fl...
谢谢谢谢
Upcoming SlideShare
Loading in …5
×

腾讯大讲堂24 qq show2.0重构历程

518 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
518
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
18
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

腾讯大讲堂24 qq show2.0重构历程

  1. 1. QQShow2.0QQShow2.0 重构历程重构历程 QQQQ 秀开发组秀开发组
  2. 2. QQQQ 秀秀 1.01.0 的技术架构的技术架构 存储层 DB/Files 接口层 数据存取、操作 API/ 接口 Server/File Server/ 流程 Server… 应用层 ITEM 显示 / 商城 / 用户换装 / 用户个人形象管理 /QQ Client 表 现 /Chat Room 表现 /Web 表现 / 内部管理系统… 系统层 数据缓存 / 图片合成 Server/ 数据 维护 Daemon…
  3. 3. 系统 / 存储 层 Web 应用 QQ Client 应用 Chat Room 应用 数据存取、操作 API UDP File ServerHTTP File Server User DB Item Info DB Item/Image Files DB Cache Server File Cache Server图片处理 Server 接口层 应用层 数据维护 Daemon 各层细化的结构图及数据流各层细化的结构图及数据流
  4. 4. 只能提供只能提供 GIFGIF 图片服务图片服务 ,, 限制了应用的进一步发展限制了应用的进一步发展 QQQQ 秀服务抛开商城应用秀服务抛开商城应用 ,, 简单而言其实就是给应用提供一套图片下载简单而言其实就是给应用提供一套图片下载 展示的系统展示的系统 ,, 在互联网应用初期在互联网应用初期 ,, 由于带宽以及用户机器性能原因由于带宽以及用户机器性能原因 ,, 我我 们只能提供们只能提供 GIFGIF 图片展示用户个性化的形象图片展示用户个性化的形象 ,, 而且也能吸引用户来玩而且也能吸引用户来玩 ,, 但是随着但是随着 QQQQ 秀业务的发展秀业务的发展 ,, 用户也不再满足于简单的图形化形象的展用户也不再满足于简单的图形化形象的展 示示 .. 商城应用性能存在一定的瓶颈商城应用性能存在一定的瓶颈 作为公司最早最成熟产品作为公司最早最成熟产品 ,, 原有的商城设计承受了大于设计容量很多倍原有的商城设计承受了大于设计容量很多倍 的考验的考验 ,, 存在重新规划的需求以满足后续业务的新生存在重新规划的需求以满足后续业务的新生 .. 服务可运营性不足服务可运营性不足 我们提供的服务在运行期缺少跟踪的手段我们提供的服务在运行期缺少跟踪的手段 ,, 来了投诉也没有个清晰的渠来了投诉也没有个清晰的渠 道来获取相应的信息道来获取相应的信息 ,, 在容灾建设方面也缺少快速恢复的手段在容灾建设方面也缺少快速恢复的手段 .. 整个服整个服 务缺少必要的实时化监控务缺少必要的实时化监控 . IDC. IDC 分布等分布等 .. 运营的一些数据缺少数据支撑运营的一些数据缺少数据支撑 不能满足业务精细化运行的需要不能满足业务精细化运行的需要 前台用户交互部分和用户数据逻辑部分耦合度过高前台用户交互部分和用户数据逻辑部分耦合度过高 QQQQ 秀秀 1.01.0 技术架构的一些技术架构的一些 "" 困困 惑惑 ""
  5. 5. QQQQ 秀秀 2.02.0 要解决的要解决的 "" 困惑困惑 "" 在提供一套图形形象的基础上在提供一套图形形象的基础上 ,, 提供基于提供基于 flashflash 的的 形象展示形象展示 ,, 并且把并且把 flashflash 形象作为形象作为 QQQQ 秀形象的主秀形象的主 要应用要应用 ,, 为业务后续的发展提供更丰富的展示平为业务后续的发展提供更丰富的展示平 台台 在用户数快速增长的环境下解决商城性能问题在用户数快速增长的环境下解决商城性能问题 提高服务的可运营性提高服务的可运营性 ,, 提高服务的质量提高服务的质量 支撑业务发展所必需了解的运营数据支撑业务发展所必需了解的运营数据 商城前后台逻辑实现用户交互以及数据逻辑的分商城前后台逻辑实现用户交互以及数据逻辑的分 离离 ,, 方便后续业务的扩展以及简化开发方便后续业务的扩展以及简化开发
  6. 6. QQQQ 秀秀 2.02.0 商城子系统商城子系统 Web Server/CGI TTC-cache 商城 DB TTC-cache 社区 DB TTC-cache 活动 DB 批价发货 Server 商城管理端 /Daemons {UIND/USD 等非逻辑层并且有状 态服务 } 应用容灾机制实现 IP 的 可替换 , 但不能热备 通 过 Agent 动 态 获 取 DBC 服务接 口信息 {GD Server/ OIDB/ 消息中转 Server// 搜索引擎 等无状态逻辑层服务 } 属于逻辑层服务 , 应用 容灾备份机制实现 N+1 互备 {DataProxy} 属于逻辑层服务 , 应用容灾 备份机制实现 N+1 互备 各类底层服务 /TCP 服务 /UDP 服务 / 文件储存 服务 /DB 储存服务 通 过 Agent 获取相应服 务接口信息 通 过 Agent 动 态 获 取 相 应 服 务 接 口 信息 Web Server/CGI TTC-cache 商城 DB TTC-cache 社区 DB TTC-cache 活动 DB 批价发货 Server 商城管理端 /Daemons {UIND/USD 状态服 务 } 应用容灾机制实 现 IP 的可替换 , 但不 能热备 通 过 Agent 动 态 获 取 DBC 服务接 口信息 {GD Server/ OIDB 无状态逻辑 层服务 } 属于逻辑层服务 , 应用容灾备份机制实现 N+1 互备 {DataProxy} 属于逻辑层服务 , 应用容灾 备份机制实现 N+1 互备 底层服务 /TCP 服务 /UDP 服 务 / 文件储存服务 /DB 储存服 务 通 过 Agent 获取相应服 务接口信息 通 过 Agent 动 态 获 取 相 应 服 务 接 口 信息
  7. 7. QQQQ 秀秀 2.02.0 商城子系统商城子系统 面向面向 QQQQ 秀用户访问后台秀用户访问后台 DBDB 全部通过全部通过 DBC/TTCDBC/TTC 层代理,层代理, DBCDBC 屏屏 蔽蔽 TTCTTC 的分布,的分布, TTCTTC 屏蔽屏蔽 DBDB 的分布,既有的分布,既有 cachecache 能力,又能有效能力,又能有效 的屏蔽后台的屏蔽后台 DBDB 物理分布信息,给后台数据的扩容以及迁移带来很大物理分布信息,给后台数据的扩容以及迁移带来很大 的便利。另外的便利。另外 DBCDBC 按业务按业务 DBDB 细分成细分成 1010 种类型(当前实际部署种类型(当前实际部署 55 种种 类型),部署在一台服务器上为一组,一共类型),部署在一台服务器上为一组,一共 33 组提供中转服务。组提供中转服务。 面向管理端面向管理端 /daemon/daemon ,考虑到,考虑到 TTCTTC 对部分对部分 SQLSQL 功能的支持不能满足功能的支持不能满足 业务的需求,这部分时直连业务的需求,这部分时直连 DBDB 解决。后续持续对管理端解决。后续持续对管理端 /daemon/daemon 部部 分功能直连分功能直连 DBDB 部分做进一步改造,达到部分做进一步改造,达到 IPIP 的全部配置化,进一步的全部配置化,进一步 完善完善 TTCTTC 等等。等等。 对公司对公司 // 部门的公共接口服务采用无状态逻辑部门的公共接口服务采用无状态逻辑 serverserver 进行中转进行中转 // 避免避免 用户接入层的频繁变更,采用用户接入层的频繁变更,采用 N+1N+1 的方式进行热备的方式进行热备 对文件存储的服务做到接口服务对文件存储的服务做到接口服务 IP/PORTIP/PORT 的可配置,可以方便的迁的可配置,可以方便的迁 移这类服务部署到其他位置(类似移这类服务部署到其他位置(类似 TTCTTC 对对 DBDB 的物理分布配置功的物理分布配置功 能)能)
  8. 8. 前台模块前台模块 采用采用 FlashFlash 引擎,引擎, FlashFlash 负责交互,封装了独立的换装负责交互,封装了独立的换装 jsjs 库负责和库负责和 FlashFlash 通讯通讯 采用采用 AJAXAJAX 技术,用技术,用 XMLXML 作为前后台的通讯媒介,方便调试和自动作为前后台的通讯媒介,方便调试和自动 化测试化测试 前台采用了统一的出错处理机制以及页面填充函数,简化了页面的前台采用了统一的出错处理机制以及页面填充函数,简化了页面的 开发开发 前台相关交互部分尽量都模块化,形成互补干扰的子模块, 比如换前台相关交互部分尽量都模块化,形成互补干扰的子模块, 比如换 装系统、菜单模块、专区模块、一些业务线经常变更的特性做成可装系统、菜单模块、专区模块、一些业务线经常变更的特性做成可 以管理的模块方便更新以管理的模块方便更新 前台模块的基本思路和前台模块的基本思路和 QzoneQzone 的前台优化思路一致的前台优化思路一致 ,, 降低流量降低流量 ,, 提提 高用户体验速度以及提高交互的感受高用户体验速度以及提高交互的感受
  9. 9. 逻辑模块逻辑模块 CGI 逻辑 通用逻辑层 / 公共接口 存储层 DB TTC C4A 采用三层架构,使得存储采用三层架构,使得存储 -- 通用逻辑通用逻辑 -- 业务逻辑解藕。业务逻辑解藕。
  10. 10. 数据储存模块数据储存模块 QQShow2.0QQShow2.0 商城现在全部采用商城现在全部采用 DBC+TTCDBC+TTC 的方的方 式实现数据存储。式实现数据存储。 定义了定义了 55 类类 DBCDBC 分别中转不同级别的分别中转不同级别的 TTCTTC 请请 求,避免非核心功能的频繁更改影响核心业务求,避免非核心功能的频繁更改影响核心业务 每类每类 DBCDBC 分别部署到分别部署到 55 台不同机器,实现了负台不同机器,实现了负 载均衡和容灾载均衡和容灾
  11. 11. 数据储存模块数据储存模块 对于核心数据,例如用户信息和用户物品对于核心数据,例如用户信息和用户物品 分布了在分布了在 100100 个库个库 1000010000 表,这样可以表,这样可以 减少减少 DBDB 写操作时的锁表情况,提高写操作时的锁表情况,提高 DBDB 写效率写效率 尽量将核心数据的尽量将核心数据的 TTCTTC 部署在其部署在其 DBDB 的同的同 台服务器上,可以大大提高台服务器上,可以大大提高 TTCTTC 的读写的读写 速度。速度。
  12. 12. 数据储存模块数据储存模块 数据存储模块定义了统一的接口基类,用数据存储模块定义了统一的接口基类,用 模板的方式实现了分别针对模板的方式实现了分别针对 DbDb 、、 TTCTTC 、、 C4AC4A 的三个派生类,使得底层存储和上层的三个派生类,使得底层存储和上层 逻辑独立。逻辑独立。
  13. 13. 容灾建设容灾建设 Configserver/AgentConfigserver/Agent 服务服务 ,, 保证服务故障的时候保证服务故障的时候 能快速切换到正常提供服务的备用服务上(主要能快速切换到正常提供服务的备用服务上(主要 应用在逻辑层无状态服务上)应用在逻辑层无状态服务上) 数据层容灾主要靠数据层容灾主要靠 BUBU 公共组件提供支持公共组件提供支持 业务侧暂时保证对核心数据层服务提供业务侧暂时保证对核心数据层服务提供 N+MN+M 热热 备备 ,, 结合结合 Configserver/AgentConfigserver/Agent 服务能快速恢复服服务能快速恢复服 务务 对非核心数据层服务提供冷备服务对非核心数据层服务提供冷备服务 ,, 结合冷备数结合冷备数 据以及据以及 LOGLOG 恢复数据恢复数据 ,, 再借助再借助 AgentAgent 能快速恢能快速恢 复服务复服务
  14. 14. 日常运营监控模块日常运营监控模块 利用返回码系统实现了关键调用的情况以及调用时间的利用返回码系统实现了关键调用的情况以及调用时间的 上报,而开发人员只需维护关键调用映射表。(模块间上报,而开发人员只需维护关键调用映射表。(模块间 调用监控)调用监控) 返回码系统记录关键调用路径,并将错误和调用时间超返回码系统记录关键调用路径,并将错误和调用时间超 过过 1s1s 的调用集中以的调用集中以 UDPUDP 的方式发送到的方式发送到 logserverlogserver 集中集中 管理管理 CGICGI 服务的自动化测试监控服务的自动化测试监控 页面级测速监控页面级测速监控 运营数据统计接入运营数据统计接入
  15. 15. QQQQ 秀秀 2.02.0 后台子系统后台子系统 Web 商城 应用层 QQ Client 应用 逻辑层 系 统 / 存 储 层 http_ifsd Item 后台 管理网站 tcp Fileserver 商城 ITEM Nfs_server qqshow_nfsd 用户 形象 xml 文件 Ts_Server 时间 戳文 件 FasSvr Image_Exchange_Server UDP UDP UDP GD Server qqshow_gd TCP Tcp_Item TCP nfs 切 CDN 切 CDN
  16. 16. QQQQ 秀秀 2.02.0 后台后台 itemitem 系统系统 商城子系统中的展示商城子系统中的展示 8484 图图 ,, 换装换装 flashflash 文文 件的拉取都是通过件的拉取都是通过 qqshow2-item.qq.comqqshow2-item.qq.com 来拉取来拉取 ClientClient 应用中拉取应用中拉取 flashflash 文件来显示形象也文件来显示形象也 是通过是通过 flash2-item.qq.comflash2-item.qq.com 来拉取来拉取 这两个域名外包这两个域名外包 CDNCDN 实现分布实现分布 ,, 内容部分内容部分 是通过业务管理段实现上传和管理是通过业务管理段实现上传和管理
  17. 17. QQQQ 秀秀 2.02.0 后台后台 GDGD 系统系统 GDGD 服务是商城服务和后台服务的一个接口服务是商城服务和后台服务的一个接口 GDGD 生成了用户形象的生成了用户形象的 XMLXML 配置信息,供配置信息,供 clientclient 来拉取,并由来拉取,并由 clientclient 来负责解析,在来负责解析,在 通过通过 clientclient 主影片负责显示主影片负责显示 qqshowqqshow 形象形象 GDGD 负责负责 NFSDNFSD 以及时间戳服务上相应数以及时间戳服务上相应数 据的更新工作据的更新工作 ..
  18. 18. QQQQ 秀秀 2.02.0 后台快照系统后台快照系统 负责生成负责生成 flashflash 形象对应的形象对应的 GIFGIF 形象形象 通过通过 linuxlinux 系统下的系统下的 firefoxfirefox 进程挂载进程挂载 flashflash 进程来进程来 生成快照生成快照 GDGD 负责通知快照服务负责通知快照服务 快照服务生成快照之后需要通知原有的快照服务生成快照之后需要通知原有的 GIFGIF 形象形象 系统系统 ,, 更新相应的接口更新相应的接口 ,, 保证保证 GIFGIF 形象能正常显形象能正常显 示出来示出来
  19. 19. 谢谢谢谢

×