微信红包工具服务器,微信红包 是怎么扛住全球用户的!
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.下载工具 2.工具使用 3.增删改查 a:使用云开发数据库 以查询为例 b:调用本地springboot接口 以查询为例 1.下载工具 进入微信公众平台:微信公众平台 ...
- 使用微信开发者工具调试微信网页授权登录-react
转:https://www.jianshu.com/p/9ced1a297c95 1.使用localhost本地调试 使用微信开发者工具, 选择微信网页授权, 微信团队为广大的开发者提供了一个测试账号 ...
- 微信聊天软件哪个好用?好用的微信聊天工具,微信新功能,适合营销老板使用
微信聊天软件哪个好用?好用的微信聊天工具,微信新功能,适合营销老板使用#微信小功能#手机使用技巧#涨知识#分享 微信聊天软件哪个好用?好用的微信聊天工具总控
- 微信养号服务器,微信30天养号技巧(附养号操作图)
你的微信号是经常被封吗? 你的微信号不能够站街吗? 你的微信号没有附近的人吗? 如何批量养好一批账号,并保持账号的活跃度,不被腾讯认为是营销号,事先的规划事关重要,直接决定了28天后,账号是否健康.为 ...
- 微信和mqqt服务器,微信小程序连接MQTT服务器实现控制Esp8266LED灯
上一篇文章已实现Esp8266开发板与MQTT服务器连接实现控制LED灯 这篇文章记录继上篇的功能接入微信小程序实现LED灯的控制 先理解一个概念:微信小程序订阅MQTT服务器一个主题,Esp8266 ...
- 使用微信开发工具开发微信小程序(一)——小程序的代码构成与运行环境
从零开始学习开发微信小程序,对比前端的页面开发,简单易上手. 接下来会持续更新,大家一起学习讨论. 小程序开发与前端网页开发的区别 运行环境不同:浏览器环境.微信环境 开发模式不同:网页开发,浏览器+ ...
- 前端微信签名验证工具_微信jssdk 签名错误排查方法
最近手头业务,移动端页面在微信浏览器中分享转发的时候没有缩率图,只有标题和链接,如下: 无缩略图的情况 按照微信的官网自定义分享功能,引入jssdk ,结果调试,一直报错 签名错误,invalid s ...
- 百度云搭建微信公众平台服务器,微信大众开放平台开发03-百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试...
微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试 微信公众开放平台开发03---百度 ...
- 使用uniapp开发微信公众号(H5页面),用微信开发者工具调试微信公众号
1.先引入入口.html文件 参见官网https://uniapp.dcloud.io/collocation/manifest?id=h5-template 2.配置manifest.json 3. ...
- java做微信开发工具_Java微信公众平台开发(14) 微信web开发者工具使用
为帮助开发者更方便.更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具.它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调 ...
最新文章
- 源文件的编码会对编译结果有影响
- C++:基类和派生类
- OOAD 面向对象分析与设计
- D:Ehab the Xorcist
- 【静态页面架构】CSS之颜色与单位
- Nancy之基于Nancy.Owin的小Demo
- 海量数据存储 - 性能瓶颈 - 解决方案
- 苹果电脑Chrome浏览器截网页长图
- meta-data介绍
- 使用代理ip进行反反爬虫——爬取句子迷网站,获取小说龙族经典句子
- Parcel打包React
- 机器学习——DEAP数据集
- windows家族介绍
- 如何使excel实现汉字转拼音及获取大写拼音并保存为常用函数
- os.path.isfile() 判断问题
- 200-Smart学习笔记:比较传送移位指令的用法案例(3)
- FluentAPI 学习
- php 跳转qq群代码_Q群自动签到php+java实现
- Json解析后显示在listview控件上
- Android大小单位转换工具类