红包的技术升级之旅

鸡年春节,红包再次成为年味儿最重要的催化剂。先是腾讯QQ钱包推出“LBS+AR天降红包”等三种创新有趣的玩法,支付宝上线AR实景红包,微博亦推出视频红包等形式。虽然微信退出红包营销让人稍有意外,但用户对红包的热情仍未消减。


事实上,红包已成为用户在春节的一种习惯。这三年来,腾讯红包一直处于迅速增长的态势。2014年除夕夜红包收发总量为0.16亿个。2015年除夕当天,微信和QQ两大平台的红包收发总量达16亿个。2016猴年除夕当天,微信红包和QQ红包支付超过了25亿笔,总收发量达到132.8亿个。




微信和QQ红包给普通中国人生活日常行为带来了变化:通过智能终端,在日常生活中发红包和抢红包已成为“新风俗”。

 


每秒15.8万笔的世界纪录之后是什么


新风俗必然会给服务者带来挑战。


数据显示,在2016年除夕夜20:00左右春晚开始时,腾讯的用户支付数据是每分钟476万次,到了“猴年”的第一分钟,即2016年2月8日00:01分,支付总次数就上升到了765万,到了00:06分时,用户在微信和QQ上的支付达到了“峰值”每秒15.8万次——而此时整个核心系统处理峰值达到了每秒48.2万次。


而随着移动支付的进一步普及,鸡年春节支付峰值还在进一步提升。腾讯FiT(腾讯支付基础平台与金融应用线)金融支付产品开发总监郭懿心告诉我们,“在构建红包的核心系统时,我们主要以快、稳、安全三大目标来进行。微信和QQ上的社交关系链非常丰富,加上用户的活跃度很高,技术团队建立了非常完善的支付系统来保障腾讯的红包产品。”


红包数据看起来枯燥抽象,背后却存在着超出用户想象的技术难题。难题主要来源于两个层面,一是服务器承载能力,二是腾讯和商业银行之间的对接。




在春节红包发送高峰期,用户请求量过大,会给服务器带来考验。大量用户在同一时间发、抢红包,瞬间产生每秒数十万级的请求,请求如果不加以疏导处理直接到达后台,会导致服务过载甚至崩溃。


腾讯和商业银行之间的对接成本同样很高。表面上看,一个红包从发出到抢到时间不足一秒,但背后的流程异常复杂。红包是在红包业务系统、交易支付系统、零钱账户系统这三个层级之间游走。


腾讯FiT支付平台研发中心总监李茂材介绍,一个红包如果是通过银行卡发出,必须要先向银行提出申请,银行会进行扣款,扣款成功后,后台会通知支付系统,红包系统把红包放出。在其他用户抢到红包后,又会存入零钱账户中,小额资金不断进出银行账户。


这几秒中,现金出出进进,都需要耗费服务器资源,由于资金频繁进出银行,早期部分银行的技术能力又非常有限,腾讯需要和银行前期协调,进行压力测试。


腾讯FiT支付平台产品负责人、产品专家陈起儒对记者介绍说,腾讯每年9月份开始就要和多家银行沟通,把除夕红包的目标值给到银行,把内部系统和银行接口对接,在前期进行数轮压力测试。


红包发放数据会逐年增长,这对技术要求更高。不过,数量增长背后的“红包守望者”,已经通过技术手段化解了这些问题。

 


一个“红包”的技术升级之旅


2014年春节,腾讯就因为“红包”太受欢迎遇到了技术上的“惊险一刻”。在春节红包功能正式上线前,腾讯红包技术团队内测时便发现,这个“本来想活跃一下节日气氛的小功能”使用人数远超预期,除夕夜更是达到顶峰。幸好,当时技术团队临时调来了10倍于原设计数量的服务器,加上过载保护的策略,有惊无险地扛住了考验。


经过总结,技术团队认为,安全、容灾、性能这三个要求是春节红包要长期考虑的问题,“是我们的生命线”。




2015年9月,腾讯宣布组建支付基础平台与金融应用线(FiT),将原有的支付、理财等业务升级为事业线,腾讯公司副总裁赖智明出任支付基础平台与金融应用线负责人。


这是腾讯涉足金融业务以来,首次对相关业务进行整合,宣告了互联网金融正式升级为腾讯战略业务,也意味着FiT技术团队肩膀上的担子更重,稳定、安全成为了红包的生命线。


就像“双十一”考验着一个物流企业的运输配送能力一样,春节也同样考验着腾讯FiT的技术能力。为了保障用户体验的“流畅”和“爽”,在2016年以后,技术团队逐渐为春节红包构建了一套“多点多活、多地多中心”的分布式交易系统,并且加上了一套智能的“支付管家”系统。


所谓的“多点多活、多地多中心”指的是有同时跑动的备份,出现问题能够快速切换。采用分布式交易系统,这可以让全国各地的用户能够散布到不同的地方去完成交易,保证安全和容灾;当大量的红包进来的时候,入账系统能够把这些数据存储起来,提前告知用户抢了多少钱,然后这些数据再进行排队,把钱依次精准无误地转入到个人账户。这套堪比金融级别的分布式交易系统,保证了当灾难级的问题发生时,性能还能提升,不会因为地区性的瓶颈导致用户体验下降。


而智能的“支付管家”系统可以随时随地可以检测各个环节的状态,不再需要程序员“人肉检测”。系统一端连着微信和QQ,一端连着银行,对银行会进行智能流量调度,防止银行崩溃。即便是出现灾难级的问题,系统也能自动接管,用户也还是能够完成支付环节,正常抢红包、发红包。


这种技术能力被李茂材比作为“高速列车上动手术”,2016年一年下来,技术团队已经做过一百多次容灾演练。线上智能容灾也已经发生过七八十次——当然,这些状况丝毫没有影响到用户体验,因为普通用户对此毫无感知。


随着技术不断升级,不仅可以确保支付的安全和流畅,而且耗费的人力也大幅减少。陈起儒说,过去的红包系统需要人工跑脚本,但现在脚本都写好了,工程师们直接管理系统即可,“除夕即使需要加班,远程监控也能解决问题,在家拿着电脑,敲几个代码就解决问题”。





 

我们期待春节红包究竟在期待什么


用户期待春节红包,更多还是在期待春节红包能够带来的那种人情味——亲情、友情、交情,“红包”从一个具象、特定日期才有的中国传统习俗,变成了智能终端里一个简单、日常的社交行为,成为了人与人之间关系的催化剂。


QQ红包的新玩法就是为了回归沟通本质。腾讯副总裁殷宇在1月11日谈到,AR等新技术的使用根本目的还是为了能“给春节增加一点年味,让大家能够在玩红包中,回归人与人沟通的本质。”


这种“返璞归真”的做法也与腾讯在2016年提出的“赋能于人”不谋而合。2013年,腾讯曾提出“连接一切”的理念,希望连接人与人、服务和设备。“连接一切”的目的则是为了“赋能于人”,让网络中的个体获得更多的资源和能力,去实现更大的价值。


过去几年,腾讯和阿里在新年的红包战素来是大众焦点,一方面是因为微信、QQ和支付宝的平台业务发展需要培育和巩固用户使用习惯,竞争加速了用户的增长,用户增长则推动着FiT技术团队不断升级,提升了金融支付技术的效率和安全性。经过三年红包大战的洗礼,技术部门“健身”练出了肌肉,提升了微信支付和QQ钱包的商业支付能力。


但在另外一面,两个巨头在春节红包大战上的竞争,也开始让不少用户感觉失去了某些春节假期时应该有的轻松和陪伴家人的气氛,“返璞归真”的主张恰恰暗合这部分用户的感觉。


熟悉腾讯企业文化的人都知道,每年正月初七、初八,腾讯大厦楼下总会排起长龙,堪比春运。因为,腾讯高管们会准备大量实体红包,发放给新年返回工作岗位的员工。据传,2014年春节红包的创意由此而来——如今,腾讯更希望“还时间于用户“,回到初心,让用户在这个被智能终端不断改变着日常生活行为的时代,可以重新体验亲情和陪伴的温情。


正如陈起儒提到,“很多用户是通过红包而开始使用移动支付的,从这个角度看来,红包的意义远不止于支付,而是让用户通过微信、QQ连接生活服务、零售电商、理财等线上线下的生活场景,深刻的体验到移动支付的便捷、安全。”

原文地址:http://mp.weixin.qq.com/s/n9ZsP34wHUGqwtRUClBuLg


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中生成1000~10000之间的随机数

要生成在[min,max]之间的随机整数,可使用Random类进行相关运算: Random random new Random(); int s random.nextInt(max)%(max-min1) min; random.nextInt(max)表示生成[0,max]之间的随机数,然后对(max-min1)取模。 以生成[1000,10000]…

破坏双亲委派模型

转载自 破坏双亲委派模型 1.第一次破坏 由于双亲委派模型是在JDK1.2之后才被引入的,而类加载器和抽象类java.lang.ClassLoader则在JDK1.0时代就已经存在,面对已经存在的用户自定义类加载器的实现代码,Java设计者引入双亲委派模型时不得不做出…

volatile可以保证原子性吗

在之前我们了解到了线程的三大特性:原子性,可见性,有序性。 前面的例子我们知道了volatile可以保证共享变量的可见性,但是volatile可以保证原子性吗? 我们来看看: public class Test {public volatile i…

C# 7.0新功能

下面是对C#7.0 版本所有语言功能的描述。随着 Visual Studio “15” preview 4 的发布,大部分功能可以被更灵活的应用。现在正是时候将这些功能介绍给大家,你也可以借此让我们知道你的想法。 C#7.0 增加了很多新的功能,更专注于数据的消费&am…

MybatisPlus学习(四)条件构造器Wrapper方法详解

https://www.cnblogs.com/xianz666/p/13857733.html MybatisPlus学习(四)条件构造器Wrapper方法详解 文章目录 1、条件构造器2、QueryWrapper 2.1、eq、ne2.2、gt、ge、lt、le2.3、between、notBetween2.4、like、notLike、likeLeft、likeRight2.4、isN…

使用ueditor实现多图片上传案例

UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量、可定制、用户体验优秀等特点。开源基于BSD协议,所有源代码在协议允许范围内可自由修改和使用。百度UEditor的推出,可以帮助不少网站开发者在开发富文本编辑器所遇…

自定义ClassLoader和双亲委派机制

转载自 自定义ClassLoader和双亲委派机制 ClassLoader ClassLoad:类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码&#xff0…

ASP.NET Core 1.0 开发记录

ASP.NET Core 1.0 更新比较快(可能后面更新就不大了),阅读注意时间节点,这篇博文主要记录用 ASP.NET Core 1.0 开发简单应用项目的一些记录,以备查阅。 ASP.NET Core 1.0 相关 Nuget 程序包源:https://api.…

volatile 关键字

volatile是干啥用的,有什么含义和特点呢? 当一个共享变量被volatile修饰时,它就具备了“可见性”,即这个变量被一个线程修改时,这个改变会立即被其他线程知道。当一个共享变量被volatile修饰时,会禁止“指…

使用ueditor实现多图片上传案例——实体类(Shopping.java)

/** * Title: Shopping.java * Package org.entity * Description: TODO该方法的主要作用: * author A18ccms A18ccms_gmail_com * date 2017-9-30 下午9:37:33 * version V1.0 */ package org.entity;/** * * 项目名称:test_fuwenben * 类…

深入浅出ClassLoader

转载自 深入浅出ClassLoader 你真的了解ClassLoader吗? 这篇文章翻译自zeroturnaround.com的 Do You Really Get Classloaders? ,融入和补充了笔者的一些实践、经验和样例。本文的例子比原文更加具有实际意义,文字内容也更充沛一些&#xf…

三种获取Class类型的实例的方法

通过Object类中的getClass()方法;通过静态方法Class.forName("全类名");通过类字面常量Class.class。 三种获取Class类型的实例的方法 方法1:通过Object类中的getClass()方法返回一个Class类型的实例 示例如下: Per…

使用ueditor实现多图片上传案例——Dao层(BaseDao)

package org.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List;/*** * * 项目名称:test_face_photo * 类名称&#…

微软任命LinkedIn高级副总裁为首席技术官

Kevin Scott曾是LinkedIn工程方面的高级VP,被任命为微软CTO后,Scott将全面统筹微软战略规划,以主动的姿态推进公司间合作,以最大化微软在伙伴及客户间的影响力。据了解,该职位为新创职位,为微软公司级CTO&a…

四种常见的 POST 提交数据方式对应的content-type取值

做前后端分离一般都有第3中 , 第一种 基本上jquery那年代用的了 第2种在需要传文件时用的 https://www.cnblogs.com/wushifeng/p/6707248.html 四种常见的 POST 提交数据方式对应的content-type取值 application/x-www-form-urlencoded 这应该是最常见的 POST 提…

jQuery 基础教程 (三)之jQuery的选择器

一、jQuery 选择器 (1)选择器是 jQuery 的根基, 在 jQuery 中, 对事件处理, 遍历 DOM 和 Ajax 操作都依赖于选择器 (2)jQuery 选择器的优点: 简洁的写法 $(#id) //documnet.getElementById(id); $(p) //documnet.getEl…

用rollback()VS不用rollback()

不用rollback()表面和用了rollback()效果一样,但是不用rollback()可能导致被锁住的数据不能及时的释放(需要等事物超时释放),会影响下一次的事物操作

使用ueditor实现多图片上传案例——Dao层(IBaseDaoUtil)

/*** */ package org.dao;/*** * * 项目名称:test_face_photo * 类名称:IBaseDaoUtil * 类描述: 共用接口 * 创建人:Mu Xiongxiong * 创建时间:2017-9-22 下午6:59:36 * 修改人:Mu Xiong…

update字段变更SpringBoot @JsonProperty的使用属性的名称序列化为另外一个名称

https://blog.csdn.net/wtb617806038/article/details/86093301 Restful 接口调用Json接收相关问题 1、背景: 在项目上使用SpringBoot为框架,调用第三方接口时,返回的参数类型,不符合标准的命名规则,需要进行处理&am…

SQL Server 2014内存优化表的使用场景

最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表是从SQL Server 2014开始引入,可能大家对内存优化表还是比较陌生,网上也鲜有内存优化表使用场景的文章 朋友公司做的业务是跟蜂鸟配送类似的配…