作者介绍

周小军

腾讯高级运维工程师,目前在腾讯社交负责社交业务海量NoSQL集群运维和团队管理。曾在天涯社区任运维副总监。对互联网网站架构、数据中心、云计算及自动化运维等领域有深入研究和理解,积累了十多年的IT运维管理经验。希望穷尽一生来深入钻研运维领域。

全网大调度

8月12日23点30分,天津市滨海新区货柜码头发生集装箱连串爆炸。

占地8万平方米,服务器超过20万台的腾讯天津数据中心是腾讯在亚洲最大的数据中心,危险品仓库爆炸时,数据中心距离爆炸点仅仅1.5公里。

情况十分危急!数据中心随时有可能被迫停止运营!

事件发生后,第一时间排查了损伤,发现损伤包括冷机系统宕机,冷冻水管爆管,地下水发生严重水浸等问题,加之爆炸之后各种信息不明朗…

2亿QQ用户可能深受影响!这甚至影响很多公司的业务,因为QQ早已不是简单的聊天工具,而是商务洽谈之必备!

天津数据中心内含腾讯社交核心业务,包括QQ、空间、相册及音乐等业务。社交核心业务主要按深圳、天津和上海三地来分布部署,各支撑中国三大区域的用户访问。

其中天津数据中心是核心机房之一,承载我国北方所有用户流量,高峰期在线用户超过1亿。如果天津数据中心停运,将有30%以上的QQ用户服务受到影响。

所幸的事,类似于谷歌拥有的全球业务调配能力,腾讯社交网络经过长期的建设积累,具备了数据和业务在全国范围的云数据中心中转换迁移的能力。

经过24小时的技术应急大调度,QQ用户服务最终无感知地在线迁移到深圳和上海,完成中国互联网史上最大规模的用户调度。

在如此严峻的情况下,QQ运营继续保持全年4个9的可持续服务能力。

下面先简单介绍一下调度过程。

1、启动

社交核心业务的三地部署各具有一定的容量冗余,能保证一地灾难性故障时其他二地能支撑所有用户。

事件发生后,社交运营团队立即启动重大故障处理流程,成立突发事件应急团队,启用调度应急预案,做好天津用户调度回深圳和上海的准备:

  • 应急团队按业务分配主、备负责人配合业务线来跟进实施,接入、逻辑和数据三个架构层各安排主备负责人协调。

  • 由故障值班工程师负责在应急团队中协调和沟通。

  • 最上层由大事件经理将汇总信息和实施过程实时同步给总监、业务、运维和QA等工作群组。

2、调度

13日团队开始以每千万为粒度将在线用户调度回深圳。

晚上22时是QQ在线用户峰值时间段,深圳一些服务模块的容量上涨到80%的水位,应急团队利用资源池里的服务器资源,边调度边扩容模块容量,把水位下调到可控范围之内。

对于没有资源扩容的模块,团队采用服务柔性的方式顺利过渡。如QQ采取的柔性为取消一些非关键服务:

如不加载联系人备注,不读取QQ漫游消息等。

通过在线扩容、服务柔性等策略,在线高峰期间用户访问核心服务顺畅,顺利地度过了流量洪峰,用户无感知。

下图为手机QQ天津地区在线用户曲线图:

上图可以观察到从13号晚上到14号凌晨,天津在线用户降到0的曲线下降趋势;以及14号下午回迁60%天津用户后的曲线上升。

整个过程不是仅仅从天津迁出到回迁这么简单,具体是这样的:

  1. 14日凌晨1时30分,天津所有用户全部调度、迁出完毕。

    调度成功结束,此时天津数据中心在线用户数已为零。

  2. 14日上午,天津数据中心运维团队知会天津数据中心暂时可以稳定运营。

    应急团队于是主动将深圳的1千万在线用户调度回天津,以缓解深圳数据中心的内网传输压力,并关闭之前开启的服务柔性开关,恢复全功能服务。

  3. 14日中午,天津数据中心预警解除,现场可控。

    应急团队将大部分在线用户调度回天津,使得天津在线用户恢复到4千万的容量。

  4. 20日,天津爆炸现场解控,数据中心几处受损得到全部修复,基础设施恢复正常,警报解除。

    应急团队将北方用户全部调度回天津,天津恢复回812之前的流量水平。

调度的几点挑战

QQ 2亿多在线峰值用户要实时全网调度,所面临的挑战是非常大的,主要有:

  1. 用户如何在体验无损的情况下调度到异地?

    数据中心三地分布,用户在三地之间以秒间调度,必须保证不掉线、不丢数据,用户完全感知不到异地切换。因此必须要保证状态、消息、数据等做到三地的一致。

  2. 用户的状态数据、消息如何保证不丢失?

    用户有各类状态,如在线、隐身、忙碌等,必须要实时同步到三地数据中心;用户消息包括C2C消息、群消息、离线消息等,要解决用户切换时消息不丢失的挑战。

  3. 用户的数据如何做到几地的全量一致性同步?

    这里要解决以下问题,包括如何保证同步的可靠性、实时性;如何支撑大流量高效分发和灵活伸缩;如何应对频发网络抖动和异地专线延时;如何支持多地区互联和区域自治。

  4. 异地的服务容量(包括服务器容量、模块容量、业务容量和IDC容量等)能否支撑大量用户请求的涌入,异地容量不能支撑时如何处理用户请求?

  5. 容量峰值后如何快速缩容?

  6. 调度能做到多快,分钟级、小时级还是天级?

    调度速度越快就越能具备快速反应能力,而目前QQ已经做到秒级的调度能力。

  7. 运营是否具备自动化的调度能力?
    调度必须是一键式全自动化,一个工程师就能轻易实现全局的调度能力。

以上任何一个挑战解决不了的话,都必将影响调度的实现。

在下篇将讲述,我们是如何应对这些挑战的。本次亿级用户迁移背后的技术架构和运营,其中用到的核心技术是SET,本文先和大家做个预热。

关于 SET

SET,就像标准化的集装箱,是一个标准化的服务模块集群。它把原错综复杂的服务器内连接关系和功能耦合模糊掉,变成运营层面看到的一个个业务部署模块。

腾讯社交业务以SET的方式部署服务,每个SET集合了一个或一组服务模块,通过接口对外提供调用服务。SET对外输出二种容量:

  • 一个从业务层面来看到的量,即一组服务器的处理能力,处理能力有两个量来描述,PCU容量(万人/在线)和存储容量(GB);

  • 另一个层面则直接来自于成本层面,即这一组服务器有多少台服务器和外/内网带宽。

SET间是无状态的,通过SET可以实现横向扩容能力。也就是说这些业务都支持部署最小化,当有需要时,可以不断增加SET数量来支持业务的流量,且SET之间无差异。

欲知后续如何,且听下文分解~~

转载于:https://blog.51cto.com/luoahong/1738682

2亿QQ用户大调度背后的架构设计和高效运营(上)相关推荐

  1. 支撑马蜂窝会员体系全面升级背后的架构设计

    流量红利正逐渐走向终结,这已经不再是什么秘密.后互联网时代,如何维系住用户群,提升用户在平台上的体验是整个行业都需要考虑的事情.正是出于这一原因,现在全行业都在关注会员体系的搭建,这也是马蜂窝 201 ...

  2. 【真·送金卡】支撑马蜂窝会员体系全面升级背后的架构设计

    点击上方"马蜂窝技术",关注订阅更多优质内容 流量红利正逐渐走向终结,这已经不再是什么秘密.后互联网时代,如何维系住用户群,提升用户在平台上的体验是整个行业都需要考虑的事情.正是出 ...

  3. 阅读心得6:《首次公开!菜鸟弹性调度系统的架构设计》

    本周阅读了老师推荐阅读的公众号:架构师中的推文<首次公开!菜鸟弹性调度系统的架构设计>,感想如下: 菜鸟裹裹是一款提供查快递.寄快递的应用软件,主要适用于全网包裹查询,支持淘宝.天猫.京东 ...

  4. 【完结】总结12大CNN主流模型架构设计思想

    文章首发于微信公众号<有三AI> [完结]总结12大CNN主流模型架构设计思想 专栏<CNN模型解读>正式完结了,在这一个专栏中,我们给大家回顾了深度学习中的各类具有代表性的C ...

  5. 24 亿级用户超级 APP 背后的全技术大揭秘

    进入十亿级用户"APP 俱乐部",可以说是很多做 APP 的公司梦寐以求的目标. 2017 年,刚刚成立 2 年的茄子科技(海外 SHAREit Group)交出了一份亮眼的出海成 ...

  6. 5亿微博用户信息泄露背后:BTC与暗网数据的纠缠

    来源 | 碳链价值(ID:cc-value) 在目前中心化架构的互联网服务下,尽管各大互联网公司尽力防备,数据泄露事件层出不穷.再加上在这个时代,数据慢慢变成了一种重要的生产要素,同时猎奇之风盛行,「 ...

  7. 轻松筹1.6亿注册用户的Passport账户系统架构

    轻松筹是全国1.6亿人使用的全民众筹平台,几乎所有核心业务都依赖于账号系统,账号系统的用户体验,安全性,稳定性直接影响着轻松筹所有业务的运行: 轻松筹的发展非常迅速,已经展开了多条产品线,单点登录的需 ...

  8. QQ会员活动运营平台架构设计实践——高效自动化运营

    QQ会员活动运营平台(AMS),是QQ会员增值运营业务的重要载体之一,承担海量活动运营的Web系统.在过去四年的时间里,AMS日请求量从200-500万的阶段,一直增长到日请求3-5亿,最高CGI日请 ...

  9. 首次公开!菜鸟弹性调度系统的架构设计

    阿里妹导读:菜鸟方舟(ark)是面向菜鸟所有研发的资源管理和运维平台,负责对菜鸟的基础设施资源进行管控,以支撑日常和大促的资源需求.弹性调度是菜鸟方舟的一个重要组成部分,也是方舟的一个重要的功能特性. ...

最新文章

  1. SAP成本会计分录大全
  2. 世界坐标系,相机坐标系和图像坐标系的转换(Python)
  3. HDU - 4685 Prince and Princess(强连通缩点+二分图完备匹配)
  4. 互联网产品设计常用文档类型-BRD、MRD、PRD、FSD
  5. Codeforces 1188A 构造
  6. 不当败家子的原因......
  7. SDUT 3399 数据结构实验之排序二:交换排序
  8. 宝塔面板ab模板建站_使用宝塔面板创建网站,安装网站程序,wordpress建站
  9. 【编程珠玑】第八章 算法设计技术
  10. (C#基础) byte[] 之初始化, 赋值,转换。
  11. python数字图像处理(14):高级滤波
  12. windows下解压tar.gz文件
  13. 珍惜现在才能活的快乐
  14. java计算机毕业设计社区养老综合服务平台服务端源码+系统+数据库+lw文档+mybatis+运行部署
  15. 生物科学与计算机科学计算案例,北京林业大学计算生物学与生物信息学考研经验-生物科学技术辅导...
  16. 谷歌开源新模型 EfficientNet:图像识别效率提升 10 倍,参数减少 88%
  17. 一招解决win11系统字体模糊发虚不清楚的问题
  18. 7-3 生化危机 (20 分)java版
  19. 上海帖易之易度文档管理
  20. [C++] 什么是智能指针(Smart Pointer)以及何时使用

热门文章

  1. 【学习笔记】Sass入门指南
  2. DNA repair - HDU 2457(自动机+dp)
  3. javascript初学者必须注意的7个细节
  4. smarty2和smarty3
  5. memmove函数使用时注意的问题
  6. 火的不要不要的公有云和私有云都是什么鬼?
  7. 原阿里中供梁法锋:O2O产品的地推管理 | SHARE 2015产品经理O2O论坛实录
  8. 【干货】APP产品处理加载机制和刷新机制的交互方法解析
  9. 500px不一样的读图
  10. 家长会PPT教师的福利模板