微信工程师为你讲述春晚红包的系统设计和优化

  羊年春晚,微信收发总数为10.1亿次红包,高峰期出现在00:00~00:02,瞬间峰值达到每分钟55万个红包被发出,165万个红包被拆开(更多数据请参考羊年春节微信数据大解析),这么大的数据量几乎没有出现宕机的情况发生,他们是如何做到的?让微信工程师为你讲述春晚红包的系统设计和优化。

  讲师:jeri

 

核心功能&目标
 

首先,了解下微信红包的4个逻辑:摇/发/抢/拆。看似简单,实现可不简单再review下微信红包要实现目标:

摇:摇的流畅

快:抢的要快

爽:拆的爽

稳:能分享出去

 

系统难点
 

1.中国运营商网络环境复杂,覆盖面广,春节期间网络吃紧,容易出现网络故障

2.在尖峰摇时如何避免服务雪崩

3.在服务资源有限时,如何提供柔性服务

4.如何构造有损服务

5.如何构造set模型

6.如何解决并发抢

7.如何实现实现数据一致性

系统整体架构图
 

跨区域网络解决方案
 

微信客户端分布全球,接入点较多,用户资料靠近接入点,可以加速用户资料访问,但是红包的业务逻辑层并不全网分布,业务逻辑层访问数据层比较多,数据层有状态强一致性问题,只能同用一个数据副本,比如上海用户与深圳用户在同个群里,抢同一个红包,如果订单数据在上海与深圳都有,在抢的时候,无法保证数据同步,可用性低,所以,设计系统时,一定要梳理清楚系统间的调用关系,优化接入层的业务逻辑,把网络耗时降到最小,系统吞吐量才能提升。

 

跨区域网络问题,在物理实施上,也需要有备份绕行的能力,这个可以在系统的底层框架中实现,当指定专线出现故障时,快速切换网络,恢复服务

 

 

如何构建有损服务
 

什么是有损服务?选择性牺牲一部分数据一致性和完整性从而保证核心功能绝大多数运行,经过一段时间窗口,数据一致性与完整性能得以恢复,这也是腾讯的一直运营策略,在有限资源前提下,量力而为,满足用户的核心需求

 

比如,春晚摇一摇,我们的核心点是摇/拆/分享,那系统的资源优先需要保证这些服务的响应,任何关联系统出现异常的时候马上进行系统降级,防止引起系统雪崩。

 

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

 

 

柔性服务.打造好的产品体验
 

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

 

比如,红包的核心功能拆,拆完需要记录用户头像昵称,转帐资金划转,同时输出同个订单下其它拆记录,拆过程这些操作都可能失败,但是核心操作获取红包是成功的,此时,我们至少可以告诉用户抢到金额,不至于让用户焦急等待,不断重试,未完成的操作(头像补全与资金转帐),可以通异步补尝方式重试。这样解决了用户的问题,也缓解了系统压力。

 

 

如果构造set模型
 

Set模块就像一个集装箱,把各模块标准化,模块化,规模化,它为海量服务运营,特别是设备管理、网络架构,提供了宏观运营支撑框架,从而极大提高了海量服务运营效率。

微信红包的set模块,以拆服务为例,从接入层开始,数据开始sticky,按订单号路由,即按单号分set,同一个set尽可能在一个IDC 里,减少模块间调用的耗时,在同一个set内,逻辑层任何一台机器,调用方可实时摘除,如果是数据层发生故障,先在接入层,把新产生的红包订单号屏蔽有故障对应的set编号,比如,set1 数据库出现故障,为了避免在故障的set1 上继续产生新的支付请求,在订单生成器直接跳过set1的单号规则,把新请求导致其它set, 只有未抢完的部分红包,会提示故障,稍后恢复,阻止了故障引发的进一步恶化,在故障db上的数据,通过备机与业务逻辑层的数据核对,完成数据一致性的修复。

 

 

如何解决并发抢
 

群里红包的规则是金额随机抢,在一个大群发一个红包出去,抢并发请求量高,在同一个资源上操作,需要增加锁操作,避免一个抢总数超过发送红包总数,众所周所,mysql的加锁操作,很多抢在一个锁上等,性能损耗大,吞吐量下降,对于海量服务的操作,是不能满足要求。

 

在set模块的基础上,我们把发/抢的资源请求都会落到同一个资源set,在最外层,cache红包的状态,如果红包已经被抢完了,即刻返回,如果红包未接完,对于一个红包进去抢环节还有限流,这是第一级保护,通过一致性hash算法,一一个单到dao层都会路由到同一个机器的同一个进程,dao到mysql在现一个连接上完成抢操作,把并发抢修改成串行化,mysql可以无锁等待,性能明显提升。

 

 

如何实现数据一致性
 

谈到分布式系统,先回顾CAP理论

 

C:Consistency数据一致更新,所有变动都是同步的

A:高可用,好的响应性能

P: 分区容忍,可靠性

 

在我们的系统设计中,同样碰到这个问题,无法同时满足三个因子,移动互联网系统,高可用性是必要要求,数据分区也是分布式系统的条件,所以,我们设计系统时,只能尽量保证数据一致性,只要一定时间窗口内,完成数据一致,让用户满意。

 

微信红包的数据有几份,订单数据,用户数据,还有对应的cache数据,

 

N:数据副本份数红包有三份

R: 一次需读取的副本红包一次从一个副本可以全部读取需要数据

W: 一次写入数据2份实时写,一分异步化

R(1) + W(2) <=N从公式算出,我们的数据模型也是弱一致性

 

用户数据是异步更新,更新失败,通过消息中心,异步重试,根据DB资源负载设置调用方的调用阀值,除了实时重试,我们还有准实时数据核对,保证数据最终一致性。

时间: 2024-07-29 19:59:43

微信工程师为你讲述春晚红包的系统设计和优化的相关文章

揭秘支付宝春晚红包的台前幕后

我们在2月14日发了一篇文章<支付宝"咻一咻"峰值达到177亿次/分钟,技术如何支撑?>提到四位专家来约稿.目前已经在收稿阶段,很快第一篇就将公布. 而在这篇技术实战文章之前,发现[无界新闻]刚发布了一篇"消失的"敬业福":揭秘支付宝春晚红包的台前幕后".这是另一个不为人知的角度.先分享给大家.下为正文: 陈亮走进中央电视台大楼的那一刻,他的心里还是一片忐忑. 2015年10月28日,中央电视台春节联欢晚会独家互动平台冠名的竞标日.距

支付宝猴年春晚红包如何抢 支付宝猴年春晚红包抢法攻略

央视春晚除夕夜直播的同时,观众根据主持人的提示,打开支付宝APP参与春晚互动,拿到相应的红包.拿到红包的用户,还可以分享给亲朋好友,让好运与大家一同分享,还有更多机会共同完成任务而获得更大红包. 据透露支付宝9.5版本将在1月15日更新发布正式上线"咻"红包相关体验功能.由于版本还未更新,所以玩法暂时还不知道哦. 手机支付宝传福气红包怎么抢 支付宝联合央视推出了春晚红包新玩法--咻红包.传福气,两种玩法都是在春晚播出期间支付宝与之互动的抢红包玩法哦,因为支付宝9.5的最新版本还未发布所

微信春晚红包为何成功?因为四个关键

2月27日消息,在羊年春晚中,微信红包成为了节目重要的一环.这种多屏互动创新是如何考虑和如何设计的,业内人士从产品出发点.特征.运营和目标四个方面总结了微信红包成功的关键点. 关键词一:用产品说话   春晚,虽然每年收视率逐渐下降,但是30%的收视率相对于其他晚会或电视剧的1-2%的收视率,依然是电视界的霸主.倚靠这个媒体,微信要做什么?打硬广?植入软广?都不是.用电视行业的话说,是深度合作的第二屏互动;用互联网的话说,是微信连接电视的t2o的初步尝试;用微信的话说,是摇电视互动;用舆论的话说,

微信与春晚联手颠覆传统电视直播

"这是春晚历史上第一次实现用户的全面互动参与."在昨晚2015年央视春节联欢晚会上,主持人李思思公布节目微信互动数据时如此评论. 彼时,春晚刚刚进行了一个小时,观众已通过微信摇一摇完成8.57亿次互动,而一个半小时后,这一数字便攀升到20.47亿次. 在昨日春晚的整个直播过程中,用户都可通过微信的"摇一摇"参与到和春晚环节设计紧密的各种互动中.除了微信和众多品牌赞助商派出的逾5亿元微信现金红包,"摇一摇"内容还包括红包电子节目单.给好友的新年贺卡

【100亿次的挑战】之春晚微信摇一摇设计理念

  讲师:eka   双屏(电视与手机)互动在我看来,包括三个最主要的构成成分:媒介号召力.媒体内容.GUC内容.这三个构成成分所在的三条路径形成了一个闭环,也就是双屏互动的闭环路径.   路径一:电视作为广播媒介具备媒介号召力,手机作为窄播媒介对媒介号召力进行相应:于此同时,手机也能自造自身的媒介号召力,使得手机用户对号召力进行相应.   路径二:电视作为广播媒介产生大众媒体内容,这些媒体内容延伸到手机上,成为手机用户二次消费的内容.   路径三:手机用户产生UGC内容,这些UGC内容传播到电

今年春晚广告不仅有那些传统土壕了,近乎被互联网企业扎堆

摘要: 今年春晚广告不仅有那些传统土壕了,近乎被互联网企业扎堆.最喜感的赶集网;最烧包的小米;最强三国杀:国美+京东+苏宁;最故弄玄虚的阿里巴巴;最土豪的腾讯;最丧心病狂的 360安全 今年春晚广告不仅有那些传统土壕了,近乎被互联网企业扎堆.最喜感的赶集网;最烧包的小米;最强三国杀:国美+京东+苏宁;最故弄玄虚的阿里巴巴;最土豪的腾讯;最丧心病狂的 360安全卫士;最出人意料的新浪微博--花样迭出的广告中,你认出了几个? 今年春晚,昨晚射掌被折腾地写京东IPO,然后给各个粉丝群发红包,都没好好看

央视春晚互联网企业扎堆

摘要: 今年春晚广告不仅有那些传统土壕了,近乎被互联网企业扎堆.最喜感的赶集网;最烧包的小米;最强三国杀:国美+京东+苏宁;最故弄玄虚的阿里巴巴;最土豪的腾讯;最丧心病狂的 360安全 今年春晚广告不仅有那些传统土壕了,近乎被互联网企业扎堆.最喜感的赶集网;最烧包的小米;最强三国杀:国美+京东+苏宁;最故弄玄虚的阿里巴巴;最土豪的腾讯;最丧心病狂的 360安全卫士;最出人意料的新浪微博--花样迭出的广告中,你认出了几个? 今年春晚,昨晚射掌被折腾地写京东IPO,然后给各个粉丝群发红包,都没好好看

春晚广告谁有钱,谁任性?

摘要: 2015年春节,央视春晚的广告几乎被互联网公司霸占,谁家的广告最入你的法眼?时尚时尚最时尚的小米.今晚坐好一点的的滴滴.还是强东哥代言从中关村走到 纳斯达克的JEEP? 微信在 2015年春节,央视春晚的广告几乎被互联网公司霸占,谁家的广告最入你的法眼?时尚时尚最时尚的小米."今晚坐好一点的"的滴滴.还是强东哥代言"从中关村走到纳斯达克"的JEEP? 微信在春晚可谓是占尽风光,主持人实时口播微信抢红包活动,昨日我们报道了微信春晚红包都是谁赞助的,并将<

【独家】老庙黄金2016春晚抢红包活动技术架构详解

[编者按]2016春晚红包技术实践系列选题来了!阿里云有一支特殊的团队--护航团队.从最初的12306到现在的红包,每一个备受关注的项目背后都有他们的身影.今年护航团队由支付宝.阿里云和其他技术伙伴组成.本文来自驻云科技COO兼首席架构师肖凯的纯干货分享,欢迎交流反馈.   肖凯 驻云科技COO兼首席架构师 云计算技术践行者,曾帮助新华社.陌陌.航天信息等数百家企业完成上云,曾就职于IBM.EMC等外企,对企业互联网化转型及企业IT架构有深刻理解,坚信公有云才是企业IT的未来. 下为正文: 抢红