1微信架构为啥不崩溃?
“地上一毛不捡,微信一分誓抢”这句话是对当前人们抢红包的形容最恰当的一句话了。
在微信群里,即使是那个永不开口的那个人,当看到红包也会“本能”的去抢一下。2015年除夕当天,微信红包收发总量达10.1亿次,是2014年的200倍,QQ红包收发总量6.37亿个,抢红包人数为1.54亿。
如今,解决高并发的互联网用户访问几乎是所有互联网企业的难题,12306、某商城等等都会在某些时候因为访问过高而引起网站宕机。那么微信是如何扛得住如此海量的数据洪流?如何保证用户快速抢到红包呢?
抢红包环节,后台处理难在哪里?
一是快,要保证用户能够快速的摇到红包?
二要准,保证摇到的红包能够成功拆开?
三要稳——如何保证拆开的红包能分享出去?
每年节假日的时候,大量用户在同一时间摇红包,瞬间就会产生每秒千万级的请求,这个量级的请求如果不加以疏导处理直接到达后台,必定导致后端服务过载甚至崩溃。
腾讯微信团队为了解决抢红包对后台系统的高要求,做了多方面的技术创新和改进。本篇文章笔者就跟各位探讨下微信红包的那些事儿。
2数据中心成为有力支撑
数据中心成为有力支撑
一款互联网产品的成功,尤其是像微信红包这样成功的产品,离不开IT系统架构的支持。数据中心的建设是至关重要的。从2007年开始,腾讯在全球各地建立了自己的数据中心,为的就是更好的支撑自己的业务。
而微信红包能够稳定的运行,与腾讯强大的数据中心后方支持有着很大的关系。
腾讯在2006年前后起步,称为第一代数据中心,采用的是传统的电信解决方案,数据中心PUE(能效比)在1.6左右;第二代数据中心则全面转向超大规模数据中心的建设,采用了当时国际上最为先进的自然冷却等节能技术;从2012年开始,腾讯开始自主研发以“微模块”为核心技术的第三代数据中心技术TMDC。
腾讯数据中心
TMDC即腾讯模块化数据中心(Tencent Modular Data Center),是指完全按照模块化设计思路搭建的可快速部署的数据中心模型,数据中心内部由多个完全相同的微模块(Micro Module)组成;微模块则是以若干机架为基本单位,包含制冷模块、供配电模块及网络、布线、监控在内的独立的运行单元,全部组件可在工厂预制,并可灵活拆卸,快速组装。
腾讯IDC平台部数据中心高级经理郁智华在分享日上围绕海量运营体系、安全应急保障体系、运营节能、成本控制和自动化运营平台等方面,他将海量运营的关键之道归纳为:做好计划性运营、做好自动化运营、做好外包管理和人员培养、做好预防性维护和应急演练、做好精细化运营。
3什么是有损服务?
除了数据中心的有力支持,在微信后台的策略方面,微信开发团队也根据应用的需求进行了应对。可以归结为三大点:有损服务,柔性可用,大系统小做。
什么是有损服务?
微信的应用特点是业务单一、业务规则简单、瞬时访问量涨落巨大、数据一致性要求较弱。因此,互联网数据中心架构需要在分布式架构基础上,进一步放松了对数据一致性和设备可靠性的要求,追求在极大规模访问压力时的响应能力和低成本。
这个就是有损服务,其主要是针对微信红包的特殊性进行的,通过精心拆分产品流程,可以选择性的牺牲掉一部分数据的一致性和完整性,从而保证核心应用大部分功能的稳定运行。
有损服务是当前互联网企业在运营总经常会用到的特色运营策略——在资源一定的前提下,互联网条件千变万化的场景中,量力而为,满足用户的核心需求。
抢红包
微信红包的核心点在摇,拆,分享红包,整个系统的设计需要尽可能的保证一气呵成。任何一个关联系统出现异常,都可能引起整个系统的雪崩。这就需要在出现异常的情况下进行系统降级。
系统降级可以分为两个方面,一是把核心功能进行分拆和简化,通过辅助轻量化的服务实现,确保最短关键路径的可行。同时后端采用异步分拆,接收到用户请求时仅进行合法性验证,验证完成后直接告知成功,后续业务逻辑进入异步队列进行处理,减少了用户的等待时间,也极大降低了峰值雪崩的概率。微信红包还有全程压测流程,对整个业务链接进行自动提前评估,防止过载。
在有损服务思想的重重保护下,微信系统能够在客户端、接入层层减压、过滤,最终把压力进一步降低,仅把十万级压力传递到后台。
4什么是柔性可用?
什么是柔性可用?
由于微信应用要保证系统的灵活等特性,这就需要柔性可用来放弃一些不重要的信息。在有损服务价值观支持下的方法,重点在于实际上会结合用户使用场景,根据资源消耗,调整产品策略,设计几个级别不同的用户体验场景,保证尽可能成功返回关键数据,并正常接受请求,绝不轻易倒下。
柔性服务更具有产品的思维性质,意义在于深刻理解产品每一个场景的核心价值,把握用户在每一个场景中的核心需求,设计不同层次的满足核心诉求的办法,对柔性服务在微信红包中的实践,红包团队也有相应的措施,主要可以分为系统容灾、资源隔离、快速拒绝、支付分组等几大类。
什么是大系统小做?
对于微信这样的大系统来说,还需要一个意识,就是大系统小做应该来说。简单来说就是将功能复杂较大的系统,化大为小,减少模块耦合,降低关联性,用多个独立的模块来实现整体系统的功能,大系统小做采用的是化繁为简,分而治之,便于开发和迅速实现。
团队的分工
微信红包如此庞大的后台系统,模块也相当之多,而这次的模块微信开发后台团队采用了系统高度模块化的方式,分成一个个高度自制的小系统,形成高内聚低耦合的格局,每个模块之间不会过分依赖对方,这样的好处是不会因为任何一个模块而影响全部服务,避免牵一发动全身的风险,实现真正的灰度服务。
这样做的好处就是能够灵活的进行各种服务,同时还能够保证业务的快速上线,不影响整体的业务运行。
5怎样做一个好的系统?
怎样做一个好的系统?
说道最后,问题来说,那么如何做一个好的IT系统呢?
a、首先,维护人员要预估架构可控性。
简单来说就是对IT架构是否可控进行评估,如果IT系统的承载能力已经达到极限,再添加新的应用程序很可能造成数据中心的瘫痪,从而影响所有的业务正常运存。
IT系统
b、IT系统是否能够支持高峰稳定运行。
不同的业务类型的访问的高峰时间会有不同,尤其是在如今的互联网时代,很多企业业务往往面临突发的高峰访问。如,12306网站的瘫痪就是因为其在人们春节回家高峰时段的高频繁访问造成的IT业务系统崩溃。
c、能够快速的解决问题。
在软件定义时代,需要借助管理软件及时发现问题、解决问题。例如,微信出现问题到解决问题,历时半天多的时间,虽然看起来时间并不很长,但是从发现问题到解决问题,整个解决过程拖沓,并不让网友满意。
d、确保业务可用的情况下,保证系统的灵活性。
随着web 2.0时代的来临,人们对数据中心的衡量标准也开始改变,由原来的注重稳定性,开始向持续性、灵活性等方面转移。
文章总结:IT系统的管理随着互联网时代的来临越来越重要,如今的很多功能都需要由数据中心来提供支持,而IT系统的运行情况直接影响到人们的应用感受。例如,如果微信频繁出现宕机或者网络断网的情况,那么可能会减少很多的用户。
IT系统的成功与否与多方面有关,性能、灵活性、稳定性等如今都加入了对系统的审核。在互联网时代,需要互联网客户紧跟需求,对IT系统进行更多的技术创新,才能保证新业务的稳定运行。