2015年微信红包数,除夕摇一摇总次数110亿次,峰值1400万次/秒,8.1亿次每分钟,微信红包收发达10.1亿次!惊人数字的背后,腾讯是怎么支撑的?

4800倍的挑战

今年微信红包方式与去年用户与用户之间互发红包相比,摇红包的方式对业务量来说是一个极大的爆发,光是除夕10:30送出的一波红包就达到了1.2亿个,已经是2014年除夕夜峰值的4800倍之巨(2014年峰值每分钟被拆开红包数量仅2.5W个)!

发10亿红包,难在哪里?

微信团队总结下来有三大难点:快——如何保证用户快速摇到红包?准——如何保证摇到的红包能成功拆开?稳——如何保证拆开的红包能分享出去?

大量用户在同一时间摇红包,瞬间产生每秒千万级的请求,这个量级的请求如果不加以疏导处理直接到达后台,必定会导致后端服务过载甚至崩溃。上文中除夕当天后台监控数据曲线便能说明一切——在前台重重的分流减压下,后台服务器负载仍然瞬间飙升十倍以上。

三大应对策略齐上阵

对于以上三个难点,微信后台开发团队主要通过三大应对策略应对:有损服务,柔性可用,大系统小做

什么是有损服务?有损服务是通过精心拆分产品流程,选择性牺牲一部分数据一致性和完整性从而保证核心功能绝大多数运行。这是腾讯在PC时代积累下来的一种特色运营策略——在资源一定的前提下,互联网条件千变万化的场景中,量力而为,满足用户的核心需求。

微信红包的核心点是摇,拆,分享红包,整个系统设计时必须尽最大可能保证这三个步骤一气呵成,任何关联系统出现异常的时候马上进行系统降级,防止引起系统雪崩。

系统降级可以分为两个方面,一是把核心功能进行分拆和简化,通过辅助轻量化的服务实现,确保最短关键路径的可行,比方说在接入层置入摇红包逻辑,将每秒千万级请求转化为每秒万级的红包请求,再传到红包服务的后端逻辑,降低雪崩的可能性。

同时后端采用异步分拆,接收到用户请求时仅进行合法性验证,验证完成后直接告知成功,后续业务逻辑进入异步队列进行处理,减少了用户的等待时间,也极大降低了峰值雪崩的概率。


另外一方面是采取过载保护措施。微信红包的过载保护在客户端已提前预埋了策略,在连接失败或超时情况下会有相应提示,减少用户重复请求次数。接入层面也会进行自我保护,针对频繁发出请求的客户端限制响应速度,并对系统负载划分出若干等级,达到不同阈值时引导客户端使用不同限速速率;在异常情况出现时,采取减少红包数,异步限流降低拆/分享红包的速率等措施减轻服务器端压力;与此同时,微信红包还有全程压测流程,对整个业务链接进行自动提前评估,防止过载。

在有损服务思想的重重保护下,第一波的摇红包体验活动中,微信红包几乎满分通过考验,其中过载保护的作用相当明显,在客户端、接入层层减压、过滤,最终仅把十万级压力传递到后台。

柔性可用是在有损服务价值观支持下的方法,重点在于实际上会结合用户使用场景,根据资源消耗,调整产品策略,设计几个级别不同的用户体验场景,保证尽可能成功返回关键数据,并正常接受请求,绝不轻易倒下。

柔性服务更具有产品的思维性质,意义在于深刻理解产品每一个场景的核心价值,把握用户在每一个场景中的核心需求,设计不同层次的满足核心诉求的办法,对柔性服务在微信红包中的实践,红包团队也有相应的措施,主要可以分为几大类。

1、系统容灾:面对大规模的请求量,系统容灾必不可少,容灾一般可分为逻辑层容灾和数据层容灾,这次微信后台开发团队在容灾布置中采用30%切换的逻辑层方案,即核心服务都能做到最多1/3服务器出问题的情况下自动容灾切换以保证服务质量,提高预警级别换取系统的可用性。

2、资源隔离:顾名思义就是把资源进行隔离减少服务支路间的影响,从逻辑入手,在资源逻辑中,当A服务同时分派任务给BC服务时,设定单个最大分配上限值,避免任意一个支路出问题影响整个服务链条,这样即使部分服务出现问题也不会影响到整个服务的崩塌。

3、快速拒绝:当服务过载时尽早拒绝请求,由服务调用方换机重试避免单一服务器重试过载,快速拒绝和有损服务中的及早拒绝是一个概念的方法,从过程的源头将问题解决,成本越低,影响越小,前端保护后端的方式来解决问题。

4、支付分组:从支付环节入手,将所有红包分为50个组,放在50个单独的set上互不影响,单组set出问题最多只影响1/50用户,保证多数人服务不受干扰。分组set化也是柔性可用的一个重要技术手段,这一思维非常类似于现实生活中的集装箱思维——通过标准化,规模化的箱体设计,应对复杂多样的货物,使每个流通环节既独立又不失灵活。

5、流量预加载:从客户端入手,将语音图片等极消耗流量的资源提前让客户端自动下载预置好,提前将流量洪峰疏导,并在活动当天CDN将准备数百G带宽应对,这块也与过载保护中的快慢分离是相通的,将耗流量的服务提前加载避免高峰期间的冲突。

大系统小做应该来说,是一种意识,他的核心思想是将功能复杂较大的系统,化大为小,减少模块耦合,降低关联性,用多个独立的模块来实现整体系统的功能,大系统小做采用的是化繁为简,分而治之,便于开发和迅速实现。

微信红包如此庞大的后台系统,模块也相当之多,而这次的模块微信开发后台团队采用了系统高度模块化的方式,分成一个个高度自制的小系统,形成高内聚低耦合的格局,每个模块之间不会过分依赖对方,这样的好处是不会因为任何一个模块而影响全部服务,避免牵一发动全身的风险,实现真正的灰度服务。

海量服务能力决定成败

从2014的滴滴打车,到2015的微信红包,腾讯用一个个案例,去证明自身在海量服务方面的实力。事实上,真正支撑起微信红包顺畅运营的幕后英雄,正是腾讯内部一个叫做“海量之道2.0”的技术体系。有损服务,柔性服务,大系统小做三大手段也是脱胎于此体系中。移动互联网大战硝烟味愈浓,BAT都在为争夺支付入口使出浑身解数,在业务从起步到小跑再到腾飞的过程中,巨头背后的海量服务能力将对其最终成败有着来越发深远的影响。

免 责 申 明

文章均来自互联网及其他平台,内容仅供参考,不确保文章的准确性,如有侵犯版权请告知,我们将在24小时内删除

转自:少壮派

腾讯大讲堂:发10亿个红包,微信为啥没崩溃?相关推荐

  1. 快手春晚10亿元红包玩法来了:最高得2020元现金

    [TechWeb]1月17日消息  作为2020年央视<春节联欢晚会>独家互动合作伙伴,快手已经确认春晚发10亿元现金红包,从1月24日晚8点到次日凌晨发放,其中包括221万个" ...

  2. 马云除了发20亿玩红包,支付宝还干了一件轰动全球的大事儿!

    导读:马云为了支付宝,相继拿出10亿(10亿+10亿=20亿)玩红包.时隔半月,马云为支付宝就花了20亿,但马云拿20亿玩红包只是为了在线下支付市场超越微信支付吗?错,大错特错,其实支付宝还干了一件轰 ...

  3. 腾讯日赚10亿 人均年薪84万

    腾讯日赚10亿 人均年薪84万 3月18日,腾讯发布2019年第四季度和全年业绩报告,这也是产业互联网战略升级后,腾讯公布的首份完整财年报告. 2019年全年腾讯营收3772.89亿(相当于每天收入1 ...

  4. 阿里再发10亿助农,店宝宝:中小卖家喜迎流量红利

    近日,由阿里巴巴与中国品牌建设促进会联合发布的"超10亿"品牌上市敲钟仪式在中国杨凌农业高新科技成果博览会现场举行.活动现场,赣南脐橙.烟台苹果.宣威火腿等11个"超10 ...

  5. 腾讯总监周颢:亿级用户微信采用的架构宝典

    微信--腾讯战略级产品,创造移动互联网增速记录,10个月5000万手机用户,433天之内完成用户数从零到一亿的增长过程,千万级用户同时在线,摇一摇每天次数过亿... 在技术架构上,微信是如何做到的? ...

  6. 腾讯大讲堂-1.4亿同时在线背后的故事_学习笔记(一)

    2011年10月31日,腾讯即通平台部高级总监T4级技术专家庄泗华在北航进行了主题为<1亿在线背后的技术挑战>的技术讲座,有幸亲临现场,观摩学习,由于信息量很大,后来又借助原ppt和现场视 ...

  7. 优朋普乐大数据_优朋普乐发5亿广告红包 开拓互联网电视价值空间

    电科技1月4日(记者 张倩)近日,互联网电视服务提供商优朋普乐CEO邵以丁表示,愿意拿出"5亿广告大红包"来培育互联网电视广告市场. "发红包"这件事,在互联网 ...

  8. 腾讯大讲堂-1.4亿同时在线背后的故事_学习笔记(二)

    千万级同时在线,主要解决问题是高可用性和高可运维性.他主要从以下5个方面讲: 1.原来的qq群业务做成集群,到后来的多种业务都做成集群处理 2.容灾处理. 大的方面,所有业务放在两个IDC(inter ...

  9. 如何进入训练模式_如何用“训练营+社群”模式,在超10亿用户的微信生态掘金?...

    不记得是哪一年,我的朋友圈里突然出现了一个训练营类的产品,很多人在朋友圈发"xxx166天,221589字[xx阅读]",我就心想,这个不就是打卡吗,怎么这么多人在学,能有效果吗? ...

最新文章

  1. 存储过程中同一语句多个聚合函数时 into 用法
  2. 如何在Ubuntu 11.10下安装Java
  3. c语言标准库函数大全.chm,C语言标准库函数(word版).doc
  4. 自定义拦截器,拦截到了某个请求就返回给前端一个JSON串
  5. Axios和Ajax处理后台返回文件流实现文件下载(图片和Excel)
  6. python 内置函数_python的内置函数、方法
  7. 交大计算机软件学院,上海交通大学软件学院
  8. 正当防卫指导性案例以及研析
  9. oracle驱动包下载
  10. 专访Riverbed CEO:私有化和出售业务瘦身后的Riverbed更专注
  11. 代码实现HelloMeituanCom转换为hello.meituan.com
  12. 预防甲肝和戊肝,海产品烧熟煮透吃
  13. docker pull报错:Timeout exceeded while awaiting headers解决思路
  14. 【粒子动画】iOS流星雨效果如何实现
  15. 马尔可夫链的定义、举例和应用
  16. 【Active Learning - 13】总结与展望 参考文献的整理与分享(The End...)
  17. ios12.3beta2_如何回滚到iOS 11(如果您使用的是iOS 12 Beta)
  18. 中科院计算所培训中心2017年三季度课程安排
  19. oracle里的ols机制,Oracle DV和OLS以及VPD的区别(转)
  20. 勘测定界土地利用现状表生成—(依据地块和权属统计)

热门文章

  1. 第六周学习周记——学习JavaScript
  2. pytorch在调用GPU的时候出现cuda runtime error (2) : out of memory at ..\aten\src\THC\THCGeneral.cpp:50
  3. 测绘程序设计大作业——TIN三角网生成+等高线生成
  4. 游戏服务器维护是干啥的,网络游戏的服务器维护都是在做些什么?
  5. html游戏 养狗,养宠物游戏哪个好玩 手机上最火爆的十款养宠物游戏推荐
  6. fft变换之后的实际意义
  7. easypoi 多sheet导入_EasyExcel写入百万级数据到多sheet---非注解方式
  8. 企业信使运营管理平台登陆入口 发送方法
  9. 2022版本的idea没有定位图标
  10. nextcloud私有云一键搭建脚本