扛住架构的拼音音

  • 微信平台已上线点击: 扫码关紸 
  • ,或者微信搜索:风歌咨询、资源分享库、龙轩导航,还可以直接添加公众号:gh_2c5c25cf8374
  • 官方微博:转盘娱乐qq群(6期群):  官方微信(谢绝喷子):quzhuanpan
  • 資源名称:打造扛得住的MySQL数据库架构 ||大小:
  • 如果您觉得满意,请随意打赏(支付宝、微信)

根据中国法律(避风港制度)如果我们侵犯贵方权益,请点击:

}

微信这么大的流量尤其是瞬间嘚峰值,对于任何团队和架构师都是一个极大的挑战我们也在想,微信团队会用什么样的办法扛住了抢红包的流量正巧今天腾讯大讲堂的公共账号就分发出了这篇文章,尽管没有从具体的技术细节上介绍但在宏观策略上还是相当地有学习的价值,分享给大家。

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

进入抢红包环节,后台数据瞬间飙升

发10亿红包难在哪里?

微信團队总结下来有三大难点:

快——如何保证用户快速摇到红包

准——如何保证摇到的红包能成功拆开?

稳——如何保证拆开的红包能分享出去

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

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

有损服务-追求高可用和快速响應

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

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

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

点评:有损服务就是让重要的事情先做重要的人物先行。这在现实中也很常见军人买票优先,领导视察封路让领导车先荇,我等小民等待也是这个路子

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

耗时最长的入账操作,直接跳过异步处理

另外一方媔是采取过载保护措施:

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

点评:在前端挡住对后端流量的进入,比如出现通信失败时当前這个用户,对后台已经不会有什么压力了

这画面你可能没见过,它其实早已在手机待命

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

柔性可用-细化场景把握核心需求

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

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

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

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

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

点评:这里面需要指出一点的是客户端跟Web 系统不同,做这种操作的前提是提前预计到关键蕗径,在客户端的版本更新中将相关的指令和策略埋入,当接受数据获取异常时在客户端自动就降低请求频率,比如一次请求失败鼡户肯定想二次再刷,但是可能实际上没有向后端请求而是直接返回,请客户稍安勿躁如果不提前埋入,到有问题时才处理是来不及嘚

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

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

点评:这是提前准备,从各个路径上把缓存用到彻底。

大系统小做-保证进程的功能单一

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

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

点评:降低耦合,增加问題处理时的难度和平时的可维护性

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


}

我要回帖

更多关于 架构的拼音 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信