微信红包【技术篇】——如何在服务有损的情况下保证用户体验

简介:

羊年春晚因着微信摇一摇的介入,变得十分的不一样。而从项目参与者本身出发,100亿次摇一摇、10亿个红包等惊人数据,都是让我们很兴奋的,当然之所以撑起这么大的数量,服务器的多项优化起到了非常关键的作用。作为参与其中的客户端开发来说,我们能做什么?我们扮演的是什么样的角色?而面对春晚这个巨大的项目,我们从哪些方面入手设计?在这里跟大家做一点分享。


对于客户端同学来说,常常直面用户的体验问题,而从春晚这个项目本身出发,可预见的是,当时的服务将会有损,在这样的情况下如何保证用户体验,成了我们设计的一个核心。




春晚项目简介


春晚是一个什么样的项目?它与我们平时遇到的项目有什么不同之处?



1. 并发量大


春晚是在春节起见发生,而同在春节期间发生的还有“春运”。这两者之间虽然完全不同,但也有其相同之处——需求多、资源少。


春晚本身有着很高的收视率,再加上红包的引导,摇一摇的请求量必然会达到这个空前的高峰,服务器也面临着从未有过的压力。除了摇一摇协议本身,还有每个活动背后所需的资源。


2. 项目复杂


春晚项目不是只有抢红包的10分钟,它的整个过程包括电视互动、好友互动、企业红包、人文艺术等多方面的产品,而其中的细节涵盖到每个节目之间的切换等等。不论是项目参与人数还是产品需求,都是一个复杂的项目。


3. 用户预期不可控


绝大多数互联网产品都是希望有着越多越好的用户数。但是对于春晚这个项目,却不尽然。由于资源有限,我们希望“见者有份”,尽可能使所有参与者都有满意的收获。因此我们需要对用户预期尽可能地做一些控制。


高并发我们怎么做?


1.尽可能少请求资源


春晚期间除了摇一摇协议本身的高并发之外,还需要极多的资源请求,如明星拜年的资源、企业红包资源、节目单等等。面对这些资源压力,我们设计了资源预下载的方案。




客户端通过服务器的通知机制,获取资源信息,并启动下载,得到资源包。由于这些资源都有着保密性需求,所以我们下载得到的资源包都是加密了的。在活动临近时,客户端再获取资源加密的控制信息,并进行解密。


另外很重要的一点,我们在整个启动下载、下载成功、重试下载、解密成功等各个环节处都做了上报,监控每个资源的准备情况。




通过上面的数据展示可以看出,我们很好地平滑了资源下载的压力。


2.优化404,提高用户体验


纵然我们有了资源预下载的方案,但也不能保证每个客户端都完全地做好了资源的准备,所以,在异常时,我们依旧紧紧关注着用户的体验。



首先,我们设计了彩蛋。在用户可预期的活动之外,加入一些搞笑的彩蛋,不仅缓解服务器的压力,同样能够给到用户趣味感。




另外,我们美化了404。在除夕夜这样合家欢聚的时刻,我们避免数字和科技用语。你看不见“服务器繁忙”“请稍后再试”等冷冰冰的话语,我们给你的是体贴温暖的“陪家人说话”。


结合节日的气氛,我们还设计了一个404页面,鞭炮+服务器。一个作为技术人员不愿见到的界面,但又是一个精巧的设计。这个界面表示服务器这时候压力真的巨大了,但是这个界面给用户带去的感受是新奇,是无限的想象。“鞭炮下面挂的是礼盒吗?”“我是中奖了吗?”最终一声哈哈大笑,在春晚这个项目中,完美地体现了有损服务下保证用户体验这个价值观。


项目复杂我们怎样来稳定?

1.方案要简单


精细的方案设计的确可以带给我们非常细致的体验。但是也意味着有着极多的技术细节要处理,这样带给大家的就是系统更加复杂,稳定性的降低。所以,我们不得不弱化一些灵活性,来得到我们需要的稳定。


为了保护服务器,可以支持服务器告知限流时间,限流期间不做请求,减少服务器压力。然后限流时间的设定就是一个需要考虑灵活和稳定双重标准的设计。


简单地由服务器传参数作秒数,充分具备灵活性,但若出问题,也有可能出现几百甚至更到的限流时间,将会导致不可用。


若是有客户端写死,就充分稳定,但也完全不灵活。


两者兼顾,最终协定共用一份枚举,服务器传参表示限流level,客户端查得相关时长,如此,一来保证限流时长都在可接受范围内,二来限流时长可由服务器控制。


2. 异常要简单


程序运行中,有很多异常会出现,如:企业资源未下载时,去下载?明星拜年没资源时,跳网页?节目ID不匹配时,保留匹配的部分?面对这些问题,我们依旧从稳定性出发,简单处理,直接进入美化过的404。


3.系统要可扩展


这个项目中,有着很多我们不可预知的变化。系统的稳定,除了很多逻辑要简单之外,必要的扩展性,也是保证可稳定运行的重要因素。在设计中,我们加入通用H5的设计,而这个设计,也是在两次预热和“一年又一年”的需求中,起到了至关重要的作用。


用户预期我们怎么控制?


  1. 运营位的引导


在红包详情页,设计加入运营位,可引导至春晚摇一摇。这是一种相对较弱的引导方式。


2. 红点提示引导


红点提示是目前常用的提示能力。在春晚项目中,我们对红点进行控制,可以分平台下发、红点加入有效期控制、一次下发中带有多个红点等。然而,数据标明,红点的能力有限,只能带来一次性的点击量,不能够持久引流。


3. 倒计时Banner

用户看到红点,进入活动后,一次的摇一摇后没有结果便会离开。而倒计时的设计,给用户持久的能量,使用户持久参与活动。


我们还做了什么?


上述的阐述都在描绘我们如何设计,如何从设计上尽力地匹配海量服务的特点,但是并不能够真正100%地解决一切问题。我们在实践过程中,还意识到一些项目进行中要注意的问题



  1. 关键问题要追根究底

  2. 把握每次预热的机会


由于没有发布前的灰度过程,我们只能依靠预热的机会,发现问题、解决问题。也只有在预热过程中,我们尽力去发现问题,才能真正明确自己的能力,更好地优化,已达到目的。


小结

面对像春晚这样海量服务的项目,我们认为“一定会挂,只是怎样更优雅?”我们可以用这样一张图来理解





原文发布时间为:2015-03-27

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关文章
|
2月前
|
小程序 Java 关系型数据库
基于微信小程序的智慧养老服务系统
本系统基于Java、MySQL和Spring Boot技术,构建高效、安全的养老院管理系统,提升信息处理速度与管理规范性,实现数据自动化备份与网络化管理,助力养老机构信息化升级。
|
3月前
|
安全 NoSQL API
拼多多:通过微信支付API实现社交裂变付款的技术解析
基于微信JSAPI构建社交裂变支付系统,用户发起拼单后生成预订单与分享链接,好友代付后通过回调更新订单并触发奖励。集成微信支付、异步处理、签名验签与Redis关系绑定,提升支付成功率与裂变系数,实现高效安全的闭环支付。
460 0
|
4月前
|
人工智能 监控 安全
微信怎么无限制加人?有这种技术吗
微信无限制加人技术解析与合规实践指南
|
5月前
|
存储 人工智能 小程序
微信掌上医院是如何实现的?智慧掌上医院核心实现原理及关键技术解析
微信掌上医院(智慧医院)小程序源码,基于uni-app与Vue.js开发,集成预约挂号、在线支付、报告查询等功能,支持与医院HIS、医保系统对接,采用微服务架构与多重安全机制。
218 2
|
6月前
|
JSON 安全 定位技术
微信附近人提取v3脚本, 微信附近人id提取技术插件,采集附近人wxid数据工具
本内容介绍微信“附近的人”功能的技术原理与实现方法,基于LBS服务,涉及位置模拟、协议分析及数据解析。通过修改GPS坐标或使用Frida等工具hook位置函数
|
6月前
|
存储 缓存 运维
微信读书十周年,后台架构的技术演进和实践总结
微信读书经过了多年的发展,赢得了良好的用户口碑,后台系统的服务质量直接影响着用户的体验。团队多年来始终保持着“小而美”的基因,快速试错与迭代成为常态。后台团队在日常业务开发的同时,需要主动寻求更多架构上的突破,提升后台服务的可用性、扩展性,以不断适应业务与团队的变化。
268 0
|
9月前
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
2796 11
技术小白如何利用DeepSeek半小时开发微信小程序?
|
11月前
|
敏捷开发 开发框架 小程序
微信纯血鸿蒙版正式发布,295天走完微信14年技术之路!
不管外界如何评价和鞭策,这款产品本身,依然需要研发团队一个键一个键敲出来,从内核,到架构,到内测,到公测,再到一轮一轮的 debug,他们要在不到一年的时间里,走完微信14 年的路。 回顾鹅厂所做过的产品里,也许从未有过一款,被如此放在放大镜下凝视。每一次上架,每一个 bug,乃至于每一个里程碑,几乎都预定当天热搜。
570 6
微信纯血鸿蒙版正式发布,295天走完微信14年技术之路!
|
11月前
|
存储 缓存 关系型数据库
社交软件红包技术解密(六):微信红包系统的存储层架构演进实践
微信红包本质是小额资金在用户帐户流转,有发、抢、拆三大步骤。在这个过程中对事务有高要求,所以订单最终要基于传统的RDBMS,这方面是它的强项,最终订单的存储使用互联网行业最通用的MySQL数据库。支持事务、成熟稳定,我们的团队在MySQL上有长期技术积累。但是传统数据库的扩展性有局限,需要通过架构解决。
310 18
|
11月前
|
存储 缓存 监控
社交软件红包技术解密(四):微信红包系统是如何应对高并发的
本文将为读者介绍微信百亿级别红包背后的高并发设计实践,内容包括微信红包系统的技术难点、解决高并发问题通常使用的方案,以及微信红包系统的所采用高并发解决方案。
329 13