`
java-mans
  • 浏览: 11457641 次
文章分类
社区版块
存档分类
最新评论

QQ 架构的演变

 
阅读更多

轉載地址:http://www.cnblogs.com/samuelchoi/archive/2012/03/31/2427424.html

后台技术演化启示

  在QQIM后台技术演化过程中,每一个级别要求的技术不一样,如十万级和百万级在线要求高性能、7*24小时连续服务;千万级要求高可用性和高可运维性。而到了亿级在线,就要求高性能、高可用性、高可运维性和高灵活性“四高”准则,每提升一个量级,相应的四个高都会有相应的要求,而且技术难度也会提升一个量级。
  团队经历了从1.4万到千亿级飞跃的过程,免不了很多教训,正是因为有了这些技术积累,才换来今天这么大的规模。互联网行业与传统IT行业不一样,有自己的技术规律,需要做自己的技术积累。
不仅IM业务,腾讯公司在很多不同业务上都走过一些弯路,积累了相应的经验,边重构边生活、大系统做小、先扛住再优化、干干净净......这些正是在不断的试错和总结中得出的理念和价值观,是在技术演化的过程中得出的启示。

从十万级到百万级在线,第一代架构难支持
  QQ在最早期1.0时代,由于用户量较少,十万级在线,并且业务功能非常简单,例如登陆、添加好友、在线状态获取等,因此架构非常简单,由QQ客户端+接入服务器+存储服务器组成。随后随着业务的拓展,需要支持支持视频、语音、传文件等实时宽带业务,以及更多类型的用户资料,我们增加了长连接服务器,为无法直连的客户端进行实时宽带数据中转,还对存储服务器进行轻重分离,使核心服务器保证稳定,利用扩展服务器快速支持新增业务,这就是之后的1.5版本。但是我们发现无论是1.0还是1.5,我们发现都难以支撑百万级别在线。因为一百万的时候,各方面都会遇到很大的瓶颈。以接入服务器的内存为例,单个在线用户的存储量约为2KB,索引和在线状态50字节,好友表400个好友* 5字节/好友=2000字节,这样算来2G内存只能支持一百万在线用户,因此第一代架构肯定没有办法继续下去,我们必须要升级。
  2.0的主要改进在于单台服务器扩展成集群,增加状态同步服务器。在接入服务器之间同步在线状态。

  这次升级帮助QQ在2001年顺利突破100万在线用户数。随后为了支持,又将2.0升级到2.5,增加了服务器和群贴图服务器。

在从十万到百万的过程中,有两个重要的经验,一是后台架构的高性能,主要通过六个方面实现:绝对不用企业级解决方案,逻辑层多进程,万有一失的无锁设计,用户态IPC,MySQL分库分表,好友表自写文件存储。二是7乘24小时连续服务,主要通过以下方法实现的:大系统小做,平滑重构,核心数据放入共享内存,接入层与逻辑层分离,命令分发动态配置化。

千万级在线的考验,第二代架构难维系
  2005年QQ同时在线迅速增长到千万级,于是之前的架构再次面临挑战,突出的问题主要体现在,同步流量太大,状态同步服务器遇到单机瓶颈;所有在线用户的在线状态信息量太大,单台接入服务器存不下;单台状态同步服务器支撑不下所有在线用户;单台接入服务器支撑不下所有在线用户的在线状态信息。没有办法,只得进行再次升级,3.0时代到来。
  3.0改造的主要特点是全面的集群化

  但是事情并非我们想象的那样顺利,很快新问题产生了。
  问题一:后台机器越来越多,单机死机/故障经常出现,IDC故障也不少,影响服务,也影响人员生活。经过分析我们决定加速容灾改造,存储集群建立半自动切换模式,业务集群、接入集群、同步集群建立自动切换模式,后台分布在两套IDC,并有指挥中心设备健康状态。
  问题二:每周有新代码发布,BUG不断出现,严重影响服务。这个问题我们采用Code Review和灰度发布的方法,得到有效的解决。
  问题三:监控机制原始、报警设置不全,出事了都不知道。这个促使我们完善监控和报警机制。
  问题四:运维操作通过vim或者mysql进行,非常容易失误。我们通过运维操作Web化(半自动化)、自动化有效的解决了这个问题,并服务可用性终于提升到了行业先进水平。
  通过解决以上问题,我们得到了3.5架构

这一阶段,我们得到如下经验,架构必须对外提供高可用性的服务,对内提供高可运维性的系统。同时利用灰度发布,运营监控,容灾,运维自动化/半自动化等方法解决架构问题。

亿级在线的飞跃,新时代伴随着新烦恼

  随着在线亿时代的到来,新的问题和烦恼也随之出现。首先是灵活性问题,比如说QQ昵称长度增加一半需要两个月,增加故乡字段需要两个月,增加最大好友数从500变成1000需要三个月。其次,亿时代还需要具备一些重要的能力,比如原来有上万的好友;对隐私权的控制;PC QQ与手机QQ别互踢;异地容灾,即一个城市出问题的时候,别的城市也能提供服务等等。但亿时代带来的最大的挑战是,原先IM后台从1.0到3.5都是在原有的基础上改造升级,IM后台1.0的代码在3.5的下面都能找到,但是这种持续打补丁的方式已难以支撑上亿级的用户。所以除了底层的公共部分之外,IM后台4.0必须从零开始,重新设计实现。
  IM后台4.0存储系统历时三年完成,支持千万级的好友在线,加强了隐私权限控置,可以灵活扩展字段,原来扩展一个字段需要两三个月,现在只需要一周,同时还具备高可运维性,高性能。
  IM后台4.0通信系统历时两年多,架构比原来的复杂很多,希望再过一年可以完成。到目前为止,已取得了一些成果:首先是多点登陆,可以管理不同的登陆终端;支持5至10亿个实例同时在线;方便接入微信等多种业务;实现区域自治。
  在亿级在线时代,需要的关键技术首先是提供高灵活性的业务支持,传统IT行业可能半年到两年出一个新版本,而互联网行业每个月就需要出一个新版本。同时还要保持高性能,高可用性,高可运维性。展望腾讯IM服务的未来之路,全球化分布、高效的研发、监控报警的智能化成为未来发展的战略。

REFPPT:http://djt.qq.com/article-19-1.html

REF视频:http://djt.open.qq.com/article-33-1.html



分享到:
评论

相关推荐

    大型网站架构演变和知识体系

    大型网站架构演变和知识体系大型网站架构演变和知识体系

    QQ会员活动运营平台的架构设计演变:高效自动化运营

    SDCC2015-腾讯-徐汉彬-QQ会员活动运营平台的架构设计演变:高效自动化运营

    腾讯大讲堂 - 2012精品讲座合集(pdf)

    6-QQ基础数据库架构演变之路 7-QQ空间技术架构之峥嵘岁月 8-架构之美-开放环境下的网络架构 9-智能应用和云服务:手机浏览器的未来之门 10-开放之路:成就创新的四把钥匙 11-从十元到十亿:腾讯包月产品深度思维 12-...

    人人都是架构师+分布式系统架构落地与瓶颈突破+高清完整版

    了大型网站在架构演变过程中出现 系列技术难题时的解决方案。本书首先从分布式服务案例开始 介绍,重点为大家讲解了大规模服务化场景下企业应该如何实施服务治理;然后在大流量限流/消 峰案例中,笔者为大家讲解了...

    5G中CU-DU架构、设备实现及应用探讨

    目前5G无线接入网架构已经初步成型,相关工作重点转向具体的部署与应用,因此从接入网的架构演变出发,首先简要介绍了5G无线接入网CU-DU架构以及其主要优势,然后重点探讨了面向实用的CU-DU设备方案、部署方案和应用...

    【批量下载】知乎架构变迁史等.zip

    互联网公司-架构演进豆瓣、京东、车之家、知乎等大型公司系统架构演变

    阿里巴巴企业级互联网架构

    阿里巴巴企业级互联网架构,阿里的演变过程

    淘宝框架历程

    今天我们重点说淘宝最重要的一次架构演变,这次演变在整个淘宝发展历程中算是最具决定性的一次,没有之一

    从程序员到CTO大牛企业内部PDF与PPT合集.zip

    基于Hybrid的移动应用混合开发模式架构演变 阿里移动端图像加载优化与增强 滴滴移动端基础架构的演进与探索 搜狗前端测试质量的度量 负载均衡利器 HAProxy功能剖析及部署案例 高可用技术的实践分享 高性能存储及文件...

    网络架构师148讲视频课程

    │ 第148节:阶段一之后的发展和架构演变.avi │ ├─x-gen-ppt │ 使用外部主题.pdf │ 具体调用.pdf │ 分发调度.pdf │ 整体介绍.pdf │ 模板管理.pdf │ 生成代理.pdf │ 生成输出.pdf │ 自定义外部主题.pdf ...

    redis 高可用详细文档

    详细文档总结。包括架构的集群架构的演变示意图,详细部署过程,配置文件详解,文档排版,你值得拥有。

    分布式文档.rar

    一个成熟的大型网站系统架构并不是一开始就设计的非常完美,也不是一开始就具备高性能、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步完善演变过来的。在这个过程中,开发模式、技术架构等都会...

    大数据平台安全与隐私保护.rar

    《Hadoop安全 大数据平台隐私保护》阐述了Hadoop从早期开放的消费互联网时代到现在作为敏感数据可信平台的演变历程,介绍了包括身份验证、加密、密钥管理和商业实践在内的诸多主题,并在实际环境下加以讨论。...

    Java项目:企业人事系统(java+SpringBoot+Vue+ElementUI+maven+mysql)

    相对于MVC模式和MVP来说,MVVM是一个比较新的开发架构,它是一种将MVP模式与WPF相结合应用方式发展演变而成的新型开发架. 前后端分离是指将前端和后端从之前的全部由后端负责中分离开来,不再共用一个Server,前端作为一...

    第五媒体数字杂志系统1.02build070201版

    基于网站技术的,可以说是第一代数字杂志的升级,比较典型的是QQ杂志与网易行业电子样本。网站技术具有强大的后台处理与系统架构能力,能轻松满足聚合、分发、阅读、统计、交流等各种需求,但前台就很难达到Flash...

Global site tag (gtag.js) - Google Analytics