1除夕80.8亿红包:微信你还好吗?

抢枪抢!随着互联的迅速发展,很多人表示:除夕的四大习俗已经从过去的贴春联、贴门神、守岁、领压岁钱,过渡到现在的抢红包!抢红包!抢红包!抢红包!

相对于每年双十一的“买买买”,似乎除夕的“抢枪抢”伴随着清脆的“叮铃”声更能让人肾上腺素飙升,造就了今年除夕夜微信红包收发总量80.8亿个,是羊年除夕10.1亿个的8倍。最高峰发生在00:06:09,每秒钟收发40.9万个红包。

如此庞大的微信红包收发行为,无疑让微信红包成为了一个现象级的产品。从2014年微信红包的试水;到2015年引入摇一摇红包,峰值1400万次/秒,8.1亿次每分钟;再到今年的微信红包大联欢。微信红包已经成为很多人拜年的一种途径,成为土豪刷存在感的一种方式。

那么让我们来看看,为了确保微信红包在高并发访问的情况下稳定运行,工程师们除了在除夕的彻夜坚守之外,究竟还采取了哪些技术手段扛住全球用户?简单来说,三个词:

可控——对核心支撑的评估梳理

柔性——对系统可靠的质疑态度

应变——对极端情况的充分准备

数据中心

可以说,对于任何拥有海量系统的企业都会面临敏捷的困境。因为海量系统要保证千万级用户同时在线,亿级摇一摇,但集群百亿级的服务请求和99.95%的可用性,导致了在海量系统上保证敏捷性,无异于在悬崖边上跳舞。

2一切尽在掌握

一、可控:对核心支撑的评估梳理

养花的人都知道,修剪枝叶是让植物更好生长的重要一步。在做一款产品时也会面临同样的问题:系统在随着业务需求的快速迭代上线过程中,会渐渐变得荆棘密布,大量的非核心调用、基础模块的重复调用、随意的跨城调用,淹没了核心的关键路径,所以当流量暴增时,会压垮那些准备不足的分岔路。

微信架构(图片来自网络)

此时便需要“养花人”的调控:突出核心路径、进行容量评估和利用冗余多活。

1、做“减法”

面对布满荆棘的分岔路,最好的办法就是突出核心路径,给错综复杂的路径做减法。

比如异步非核心调用、消灭重复调用、合并相关调用、减少跨城调用还有特殊裁剪静态信息调用。微信红包团队通过在服务框架层增加染色信息,并层层进行上报收集,生成出完整的调用关系图。对着调用关系图,通过尽量做减法,将其中最核心的路径进行标记出来。而优化了核心路径之后,也为下一步的容量评估做好了准备。

做“减法”(图片来自大讲堂)

2、容量评估

微信红包团队已经在优化核心路径过程中,进行了路径染色,然后按照业务预期,从用户进入每个业务场景的每秒触发次数作为源头,分解到各场景内操作的核心路径,制定了容量核算表,从而评估出为了满足业务预期所需要的容量:单接口QPS;模块整体QPS;模块带宽流量;跨城穿越带宽流量。

3冗余多活

这样的扩容工作以具体的容量评估和特定的压力测试为基准,能够给出运维上需要提供的各模块机器数,同城带宽和跨城带宽的需求。

容量评估

毫无疑问,这样的扩容工作更有计划性,避免了资源的浪费,也避免了评估不充分而边压测边扩容带来的效率低下。

3、冗余多活

可是微信红包做完了核心路径和容量评估,是不是就做到了可控呢?答案是否定的。因为墨菲定律告诉我们,任何事都没有表面看起来那么简单。而冗余多活的存在正是提高系统稳定性的不二法宝。

抢红包

如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导致灾难,则必定有人会做出这种选择。为了避免在除夕有部门败给墨菲定律,还需要针对每个核心资源,尽可能来做到消除单点和单策略,以降低坏事情发生的可能。

除了多点冗余部署的无状态逻辑层(一方面负载均衡,一方面消除单点)以外,微信红包还采用了多套调用方式、多套数据获取和多套访问链路。

4保护无处不在

二、柔性:对系统可靠的质疑态度

柔性也常被称为柔性可用,目的是在服务请求次数超出预期的情况下,宁可用户体验降级,也要保证核心应用不受损,运用过载保护不能让系统“死”掉。

体验降级(图片来自大讲堂)

过载保护(图片来自大讲堂)

在应用设计过程中,结合用户使用场景,根据资源消耗,调整产品策略,设计几个级别不同的用户体验场景,保证尽可能成功返回关键数据,并正常接受请求,先解决用户最最核心的需求。而柔性可用在微信红包中,主要可以分为系统容灾、资源隔离、快速拒绝、支付分组等几大类。

微信红包

除了体验降级以外,过载保护也是微信红包团队在提升应用柔性可用时的重要手段。系统尽可能提供自己所能的服务,当压力过大时,丢弃无法处理的请求(做好前端的友好提示)而使得系统活下来,避免出现雪崩,主要包括:事前保护的接口限频和事中保护的快速拒绝。

5气定神闲镇场

三、应变:对极端情况的充分准备

其实这里的应变和我们日常意义上的应变是一个意思。古人说:谋事在人成事在天;也说:事在人为。而微信红包团队为了确保应用正常运行,可谓“无所不用其极”。

抢枪抢!

针对前面的冗余多活和柔性可用有两种实施策略:一种是系统自动触发,一种是人工干预(制定《应急预案手册》)。

由于实际情况可能决策比较复杂,自动触发的验证很难覆盖全,所以微信红包团队最终决策还是基于充分的监控,在除夕当晚进行人工干预。

除了以上的应变方法之外,微信红包还通过零钱包将复杂的请求路径巧妙引流,降低了服务器压力。

众所周知,在支付中如果使用零钱,那么请求是在内部系统就可以完成。如果是使用银行卡,那么支付请求必须发送到银行进行扣款。很显然,银行接口的性能对于整个系统来说是一个局部短板。通过合理引导压力,在跨年时刻到来前,只要用户零钱足够,就优先引导用户使用零钱,巧妙的降低了银行卡支付请求量。

如今,除了微信收发红包,腾讯还通过摇一摇红包,QQ红包等方式让“抢红包”在2016年除夕成为“继春晚之后的第二大娱乐节目……”

微信红包工具服务器,微信红包 是怎么扛住全球用户的!相关推荐

  1. 微信开发者工具开发微信小程序

    微信开发者工具开发微信小程序 1.下载工具 2.工具使用 3.增删改查 a:使用云开发数据库 以查询为例 b:调用本地springboot接口 以查询为例 1.下载工具 进入微信公众平台:微信公众平台 ...

  2. 使用微信开发者工具调试微信网页授权登录-react

    转:https://www.jianshu.com/p/9ced1a297c95 1.使用localhost本地调试 使用微信开发者工具, 选择微信网页授权, 微信团队为广大的开发者提供了一个测试账号 ...

  3. 微信聊天软件哪个好用?好用的微信聊天工具,微信新功能,适合营销老板使用

    微信聊天软件哪个好用?好用的微信聊天工具,微信新功能,适合营销老板使用#微信小功能#手机使用技巧#涨知识#分享 微信聊天软件哪个好用?好用的微信聊天工具总控

  4. 微信养号服务器,微信30天养号技巧(附养号操作图)

    你的微信号是经常被封吗? 你的微信号不能够站街吗? 你的微信号没有附近的人吗? 如何批量养好一批账号,并保持账号的活跃度,不被腾讯认为是营销号,事先的规划事关重要,直接决定了28天后,账号是否健康.为 ...

  5. 微信和mqqt服务器,微信小程序连接MQTT服务器实现控制Esp8266LED灯

    上一篇文章已实现Esp8266开发板与MQTT服务器连接实现控制LED灯 这篇文章记录继上篇的功能接入微信小程序实现LED灯的控制 先理解一个概念:微信小程序订阅MQTT服务器一个主题,Esp8266 ...

  6. 使用微信开发工具开发微信小程序(一)——小程序的代码构成与运行环境

    从零开始学习开发微信小程序,对比前端的页面开发,简单易上手. 接下来会持续更新,大家一起学习讨论. 小程序开发与前端网页开发的区别 运行环境不同:浏览器环境.微信环境 开发模式不同:网页开发,浏览器+ ...

  7. 前端微信签名验证工具_微信jssdk 签名错误排查方法

    最近手头业务,移动端页面在微信浏览器中分享转发的时候没有缩率图,只有标题和链接,如下: 无缩略图的情况 按照微信的官网自定义分享功能,引入jssdk ,结果调试,一直报错 签名错误,invalid s ...

  8. 百度云搭建微信公众平台服务器,微信大众开放平台开发03-百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试...

    微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试 微信公众开放平台开发03---百度 ...

  9. 使用uniapp开发微信公众号(H5页面),用微信开发者工具调试微信公众号

    1.先引入入口.html文件 参见官网https://uniapp.dcloud.io/collocation/manifest?id=h5-template 2.配置manifest.json 3. ...

  10. java做微信开发工具_Java微信公众平台开发(14) 微信web开发者工具使用

    为帮助开发者更方便.更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具.它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调 ...

最新文章

  1. 源文件的编码会对编译结果有影响
  2. C++:基类和派生类
  3. OOAD 面向对象分析与设计
  4. D:Ehab the Xorcist
  5. 【静态页面架构】CSS之颜色与单位
  6. Nancy之基于Nancy.Owin的小Demo
  7. 海量数据存储 - 性能瓶颈 - 解决方案
  8. 苹果电脑Chrome浏览器截网页长图
  9. meta-data介绍
  10. 使用代理ip进行反反爬虫——爬取句子迷网站,获取小说龙族经典句子
  11. Parcel打包React
  12. 机器学习——DEAP数据集
  13. windows家族介绍
  14. 如何使excel实现汉字转拼音及获取大写拼音并保存为常用函数
  15. os.path.isfile() 判断问题
  16. 200-Smart学习笔记:比较传送移位指令的用法案例(3)
  17. FluentAPI 学习
  18. php 跳转qq群代码_Q群自动签到php+java实现
  19. Json解析后显示在listview控件上
  20. Android大小单位转换工具类

热门文章

  1. thinkphp5.1 安装think-queue 2.0.4
  2. 微信小程序 图片显示不出来的问题 100%管用
  3. cl.exe nmake.exe
  4. 智能车制作——速度环PID
  5. Excel模板与Word模板【java】
  6. rtmp代理php源码_RTMP直播系统(示例代码)
  7. MapTileDownloader 全能电子地图下载器
  8. java性能调优原因和因素
  9. 拦截器和过滤器之间的区别
  10. python第三方库怎么下载安装_简谈下载安装Python第三方库的三种方法