腾讯千亿级营收是用什么技术实现计费结算的?

阅读数:112 2019 年 10 月 29 日 10:09

腾讯千亿级营收是用什么技术实现计费结算的?

大家下午好!开场的时候主持人介绍了腾讯计费米大师在 4 月份正式开放了,对外提供 saas 服务,大家可能想知道米大师的核心能力是什么,能对合作伙伴提供哪些服务,今天很高兴有这个机会和大家一起走进米大师。

我是腾讯计费架构师段克晓,我大概有近十年的移动层面的经验,2012 年加入腾讯之后,我非常有幸见证了米大师的诞生,陪伴它的成长,包括从 2016 年开始踏上海外征程。

腾讯计费 (米大师) 介绍

首先问一下大家,大家最近有没有关注过腾讯第一季度的财报,营收是多少亿?答案是 735 亿。这么庞大的收入的背后,整个腾讯的收入都是由腾讯计费米大师来进行结算的,这个计费结算的平台就叫米大师。

所有的腾讯游戏业务,如日活大几千万的王者荣耀,吃鸡、CF 等;还有腾讯云和效果广告;包括微信小程序支付、QQ 钱包支付,都是统一使用米大师的计费服务。通过十几年的打磨,我们在支付转换率和风控的打击方面都走在行业的前列,比如支付转化率,我们刚开始在做的时候,那时候支付转换只有百分之四十多到五十多,就已经很高了。但根据这些年用户付费习惯的改变,现在很多业务能做到八九十多,所以这个数据已经在行业前列了。

这个产品肯定不是一朝一夕打造出来的,而是经过了十五年的打磨。米大师的前生诞生于 2003 年,当时的我们在支付路上独自前行,直到 7 后年迎来同行者。我们的产品形态也经历了运营商计费,云支付,移动支付和开放四个阶段。大家都能感受的到,移动支付是我们当前的主要支付场景,大家也都不陌生,不就是微信支付、支付宝吗,我们直接入对接就是了,你们一个米大师做支付做了 15 年有什么可做的?

我们从用户的角度或者商户的角度看一下,一笔交易的完成经历了哪些流程呢?比如在王者荣耀,我去买一个点券,进入一个商城页,随便进一个档页选择微信支付,再输入密码或者指纹验证,瞬间点券就到帐了,很简单吧。但实际从商户的角度可能会考虑更多,举两个简单的例子。比如微信扣完款了,但实际上微信后台通知我们的时候,通知超时了,或者根本没有通知我们,这个时候是给玩家发点券还是不发?

另外一个例子商户想做更多的活动,给手中的用户发货券,不同的用户发不同的面额,这个用户使用的时候是不是要叠加,是不是要互斥,商户要吭哧吭哧写很多代码去实现,那万一被黑产进行盗刷了怎么办,辛苦投入的营销资源打水漂了。实际上支付过程中遇到的问题会更多,会更复杂,一个支付系统要解决商户最大的痛点,要确保在交易可靠性、安全性、稳定性三个方面形成一个稳固的铁三角,并在这之上做到可运营。

腾讯千亿级营收是用什么技术实现计费结算的?

计费系统面临的挑战及应对

1. 腾讯计费系统架构概览

下面大家看一下米大师的支付架构是怎么样的。首先是一个全平台的支付入口,通过网络路由和系统容灾,选择一个最近最快捷的接入点进入支付系统,经过风控安全校验,完成交易扣款后就落地到 DB,对于是海量交易,这块还要做分布式存储架构,防止存储服务宕机做好容灾。和支付系统并列的是数据服务,需要对用户的历史交易,用户的画像特征进行分析,为用户推荐最优的交易方式和营销活动。在这之下任何系统的异常,都要进行可视化监控告警。我们抽象出来整个腾讯计费系统由在线交易,数据服务和运营平台三大系统组成。

实际上商户对计费系统的需求也是多变的,需要不停的拓展功能,拓展不同的支付渠道。而新功能和新特性上线前,我们要确保通过沙盒环境或者白名单进行灰度验证,基此原则,米大师系统架构按功能分层,模块化,可进行垂直方向和水平方向的扩展。

腾讯千亿级营收是用什么技术实现计费结算的?

2. 交易可靠性保障

接下来,详细分享一下米大师在交易可靠性和安全性是怎么应对这些挑战的。一个广告商预先充值的费用和信用额度快用完了,此时输入完密码进行充值,但是计费过程中如果有一个环节出现超时异常,那这笔钱我们算是到账呢还是没到账,要给他停播广告吗,如果停播那对于广告商或者平台方都带来损失。对于广告商来说他们想要的体验是,一笔交易订单通过一次点击操作立即完成扣费和发货确认(即“一键支付”)。但实际上背后的支付流程很长也很复杂,任何一个环节出现了异常,我们怎么应对呢?

在这种扣款超时异常的场景下,米大师会把交易控制权下放给订单中心,该笔交易从实时的同步交易请求降级为异步处理,订单中心在一段时间内如果侦测到扣款结果,就会执行交易的下一步。即使订单中心一直没有等到扣款通知,此时订单的异步处理会进一步降级为离线处理,通过离线账单处理确保交易的一致性。

腾讯千亿级营收是用什么技术实现计费结算的?

而为了进一步保障交易的一致性,米大师稽核平台与交易系统形成互补,通过对交易系统的数据同步采集、撮合、分析和告警,无论是伪造票据流水,还是篡改 DB,都能够同步发现。综上、一笔看是简单的支付行为,米大师通过实时交易、订单流、账单流的三级策略,来保障扣款异常情况下的交易一致性。

但有时候,不是架构设计得好,代码写得好,可靠性就能保证。有时候可靠性是来自一个意外,比如服务器宕机或者光纤被挖断了。对于这种情况,米大师是怎么解决容灾问题的?我们是通过一个跨机房异地部署。所有的系统模块在设计的时候都可以进行跨机房的部署能力,容灾最大的难度是数据层。以米大师自研的金融级的数据库为例的话,整个服务分四块,网关、DB(一主两备、一主多备),这样单机或者单机房出现孤岛网络的情况,都可以继续保证数据服务有效进行。虽然在概率上几乎不可能出现深圳多机房同时不可用的情况,但计费数据是公司非常核心的数据,所以我们在上海搭建同样架构的数据存储层集群,异常情况下,可以直接将支付流量引导到上海提供服务

腾讯千亿级营收是用什么技术实现计费结算的?

虽然我们做了 2 地 6 中心的部署解决容灾问题,但每到节假日的时候就会有打折活动,容易出现交易请求洪峰,导致系统不可用,对于支付系统来说,商户交易额翻一百倍也得支持。米大师不但要处理内部的复杂交易流程,还要和外部很多平台打交道,但外部平台接口的稳定性,它的抗洪峰的能力是个不可预估挑战。

这个就是我们构建的支付子系统,是按照场景、业务、流量,核心的业务进行独立 SET 部署,SET 是物理隔离的。。但对于整个计费大盘而言,主体是一个共享的平台,不可能为每个业务不同的活动切分出独立的 SET,所以,我们将“场景化”压测方法直接用于现网,并且选择凌晨业务低峰时段,通过逐步放量压测,一旦观测到压力瓶颈点,及时停止压测并按策略快速扩容。

出现这种系统异常,请求洪峰,当出现异常的时候再处理就晚了,因为现在系统承载了千亿级的收入,如果系统挂机一分钟就损失几十万,这个时候如果两小时不处理,我可能就要直接走人了。

腾讯千亿级营收是用什么技术实现计费结算的?

中国人讲的,不是亡羊补牢,而是未雨绸缪。整个支付系统怎么做未雨绸缪?就是要看现网运营监控,看哪里可能出现异常就提前去堵上。对现网监控运营难点的是怎么快速的发现问题,并且发现的准,不要晚上睡觉的时候动不动一个告警电话过来的,这样可能早早就猝死了。我们从现网数据采集之后 -》到 TDBANK 上报 -》到 TDP 实时计算,整个过程实现了秒级别的处理,实时计算结果再存入内存 KV,但基于内存的存储空间是有限的,为了能查看更长周期是监控数据,我们进行了“冷热数据分离”,这样可以轻松保存半年的细粒度数据和永久保存天数据了。

在准确性方面,首先是对现网变更和实时告警进行自动关联,这样变更引发了哪些告警就一目了然。其实很多系统出现异常,真的是人祸。版本的变更和运营监控打通起来,任何版本的变更首先能发现,一个版本变更可能会产生一个异常。另外,一个小业务请求量比较小,比如广告这种。一个业务一天可能就没有几百笔,但有大额,几百万、几千万,如果把几百笔业务和王者荣耀这种相比,可能广告里面一个用户支付异常之后就会淹没在大盘里,我根本就发现不了,但这样在支付系统里是不行的,任何一笔异常我都要监测出来。所以就需要进行线网的剥测,快速发现问题。

总结下,米大师通过异常交易场景下实时交易、订单流和账单流确保交易流程的高一致性、通过流量调度、跨城异地部署和现网运营监控确保交易可靠性。

3. 支付系统安全性

实际上我们还面临一个更大的问题,就是在整个支付过程中安全风控问题,因为很多时候你的支付系统的风险,并不一定是设计或者出现代码 bug,是你的业务形态决定了一定会出现风险。比如苹果支付,苹果的系统里如果是虚拟类的交易,比如游戏买东西或者买付费音乐必须使用苹果支付,支付完成后可以七天无理由退款。很多是把东西拿走了之后再退款,就催生了黑产代付,很多人没有苹果,就在网上找人打八折充值,用户少花钱了,黑产充值之后就找苹果退款,这样商家就没有拿到钱。

腾讯千亿级营收是用什么技术实现计费结算的?

前两年一个语音通话类的应用,自己到海外,接了谷歌支付,用了一个月发现 80% 的业务都是损失,退掉了。因为 80% 这些用户拿了这个语音通话,又找谷歌退款,语音通话又给当地的运营商结钱,也就是不但没有赚钱,还要赔钱给运营商。

还有去年俄罗斯的卢布,两天的时间兑美元的汇率下跌了 25%,这样黑产很容易利用,就使用卢布充值,这样实际是打七五折冲的。还有黑卡,这种在国外还好,主要是在巴西、越南等地。

风控主要是数据采集和分析,并将分析结果应用与支付流程。我们通过事前发现、事中检测、事后审计的方式,覆盖整个支付交易链路。目前已经建立了 500 多个风控策略模型,比如,通过设备标识区分用户常用设备信息,根据数据挖掘获取代充设备黑名单,实时拦截黑名单设备的交易请求;通过用户位置信息、应用内交易数据甄别用户是否正常用户,对异常用户进行柔性验证;同时通过模型计算,离线提取恶意代充账号,对代充账户进行封号打击。

这样可以准确识别异常交易场景,有效防范渠道汇率差套现、第三方低价代充、羊毛党恶意刷单等风险。米大师交易风控平台,目前日均拦截恶意交易达千万次,为接入业务挽回损失百万元以上。

4. 全球计费能力

实际上支付的稳定性和可运营性上面,还是有很多工作要做的,这里就不展开了。随着腾讯业务在海外运营经验的积累,越来越多业务选择自主发行模式出海,米大师在 2016 年也率先和业务一起出海,截至到目前接入了 80 多个支付渠道,覆盖 180 多个国家。

腾讯千亿级营收是用什么技术实现计费结算的?

米大师在出海时也是面临了诸多挑战,比如如何拓展部署、如何应对海外网络复杂、怎么集中化运营数据。。拿《王者荣耀》海外版来说,海外运营分四个区域,欧洲、南美、北美、澳洲。为了保证性能,我们也部署这四个区域,但是王者荣耀发布海外的时候一般和运营商绑在一起,运营商为了成本就提供几台有限的服务器,不仅服务器有限,还要快速部署、自动伸缩。因此我们就重构了计费引擎,实现了一套全球的分布式架构,这套架构可以支持在线请求按需加载,还有一些是离线处理,就没必要部署在当地,比如就部署在香港,很容易进行伸缩处理。

为了跟随他们部署,我们通过一个完全微服务化的架构,可以根据场景灵活的进行差异化部署,最少使用三台服务器就能够负载整个计费能力。部署了这么多服务器到海外的机房,在整个支付过程中,每天会做很多的活动、配置,这些配置怎么准确无误推到海外去呢?其实这个配置数据也是支付的一个核心数据。所以我们采用了一个集中了国内的数据管理方式,支持按业务、按区域,更多维度的进行相关统计,采用同步队列,可以确保整个配置实时同步到国外。

腾讯千亿级营收是用什么技术实现计费结算的?

因为在国外还有一些其他的问题,有的国家基础建设不像国内这么好,比如印度,几十家运营商,整个支付系统要通过公网、第三方账户支付等这样极容易出现超时,体验也很差。我们就在这个上面构建了一个跨国的支付网关调度系统。可以在骨干网络上通过加速,二级网络上接入当地的云服务,在前端可以做一些预加载,合并网络请求,一些柔性的优化,甚至可以跟随部署,减少物理距离。这样通过优化,现在 97% 的时耗都是低于 3 秒的。

整个交易链路打通之后,海外的数据怎么监控分析呢?因为海外区域通过公网数据回来,网络很不稳定,很容易丢失。我可以通过公网建立的隧道,实现可靠的数据传输。比如台湾和泰国的数据,通过公网建立一个隧道,在香港通过专网传到深圳。

一站式计费解决方案

介绍了这么多米大师在计费方面经过多年对系统的打磨和耕耘经验,之前一直是为腾讯内部业务服务,现在正式面向大家放开 ,大家怎么样才能享用和王者荣耀一样的计费服务呢,那我们只需三步就可以完成极速接入。

腾讯千亿级营收是用什么技术实现计费结算的?

米大师对外屏蔽了全球支付渠道的差异化,提供统一接口,只需要一次接入,即支持全球支付渠道,新增支付渠道,无需变动接口。这么多支付渠道米大师通过大数据分析,推荐最优支付转换率渠道,提高付费转换率。并且该服务采用公有云部署,可以直接接入,减少商户的软硬件投入

而且因为现在有海量的数据,所以可以分析用户的画像,根据他的付费能力、付费行为可以推荐最优的支付渠道。这一套也是部署在腾讯云上,可以减少合作伙伴的硬件投入,就可以直接接入了。

现在对外开放这几大能力,比如还有账户服务,现在大家在《王者荣耀》里面充值点券,每个人的点券都存在米大师,我们现在有一百亿 + 的个人账户,这是通过十几年的积累,现在像浦发银行、微众银行也在使用我们的 TDSQL 数据库服务。基于账户上面可以叠加很多能力,比如积分类、订阅类等。

腾讯千亿级营收是用什么技术实现计费结算的?

接下来详细介绍三个大家比较感兴趣的,比如营销。因为我们整个支付这一块,经历了十多年的行业积累,积累了很多生命周期的产品,有游戏、动漫、泛娱乐等,建立了全面的互联网增值营销体系,通过对用户的付费习惯、支付能力的解读,给用户一个针对个性化的营销,节约开发者的运营成本。 此外还开放了腾讯权益。比如买水果送七天的腾讯视频 VIP,我们有数百个权益对外开放,通过 APP、小程序都可以接入。

另外一个是商户服务,对于支付系统来说,对账结算的工作繁琐易出错,花费较多人力。而且对账结算涉及多个子系统进行打通和处理,要保证每一笔流水不能差错。那米大师屏蔽了对账结算方面的繁琐工作,提供标准化自助对账能力,并且可以根据商户的需要进行商户和多级子商户的分润,通过自助化平台让商户无忧接入。

今天可能朋友圈被一个消息刷屏了,就是壮年的腾讯,到壮年之后要承担更多的社会责任了,其实米大师也在践行这个社会责任。像我们在智慧旅游、智慧交通领域,正在跟云南省打造“一部手机游云南”,已经上线了。还有智慧校园,无人智能化零售也即将上线。其实我们做产品,无非是抓住用户的痛点、痒点、尖叫点,那米大师所能解决痛点:提供自助黑产风控打击,99.996 的高一致性的一站式计费解决方案;痒点:账户服务、多模式商户服务;尖叫点:一次接入发布全球,零代码营销活动和腾讯权益的开放。作为米大师的架构师,期待和大家合作,为大家下一个千亿级的业务保驾护航,谢谢。

互动问答

Q:我们公司是做直播行业的,遇到过盗刷方面的问题。我也有幸接触了他们如何直接退款的流程,除了核心的申请流程不知道,他们现在并不是七天,4 月份我接触这个,是 45 天之内所有订单一天可以退三笔,百分之百退。想问一下米大师这方面,在 45 天之内的订单也可以处理吗?

A:我们的订单不会删除的,按照退款订单是一年的,一年内有效订单都可以退款,前提是你是正常用户,不是恶意用户。像刚才说的直播类的,腾讯截止目前为一百万商户提供对外结算的业务,这个一百万商户就包括很多的主播,现在大概一年能结算出数百亿。

所以这一块,米大师对风控处理的是很严格的,对于苹果退费,不光从技术上,也和他们商务上进行一些联动,出现一些订单实在技术上解决不了,会提给他们商务,一起来查这个用户。像前面已经介绍了风控有五百多个风控模型。

Q:我们也和苹果客服打过交道,因为我们出现过坏账,但苹果官方只提供坏账率,不会针对到个人。想问一下米大师针对盗刷退款的用户可以针对到个人吗?

A:可以的,我们是设备级和用户级的,如果用户级是恶意的就可以封号,还有一些柔性的检测看他是不是正常的用户。

Q:之前我们团队也做过支付,当时用的是其它通道,想问一下米大师支持的支付有多少种。还有提供营销的方式是什么?

A:微信支付、QQ 钱包、银联都支持的,支付宝从技术上是支持的,我们技术服务。

营销上,如果你是一个账户类的,可以有首充、满赠、满减、红包等都是支持的。如果你是一个直购类,把我当成支付通道的话,我就会有打折、满减、抵扣券等。

Q:如果我们保证不接入支付宝的话,您这边有什么优惠吗?问这个问题因为支付宝那边说如果不接受微信的话,会有优惠,所以我反过来问这个问题。

A:首先我们说我们做技术服务首先是不收钱的,就看你的支付用在什么行业。比如现在你的线下交易,微信和支付宝都在鼓励,可能是千分之三的手续费,当然有些行业可能是千分之一,如果是高校、政企等的话还可以跟它谈,针对一些特殊行业免费。我们的通道这一块是免费的,渠道这块具体业务要和渠道去谈。

Q:关于黑产,如果发现用户疑似恶意会柔性的验证,如果他是真实的用户,确实也在盗刷东西,是封号是吗?但封号会被告知吗?

A:封号下次进来就不能支付了。

Q:因为之前爬过腾讯的东西,发现同一个 QQ 号,一天之内只能登陆 210 次,然后就挂掉了。这个也是我对网络安全比较感兴趣,不是针对腾讯,阿里我也爬过。

A:没关系,学习研究嘛,大家一起交流。

作者介绍:
段克晓,腾讯计费架构师,近 10 年移动产品研发经验,陪伴腾讯计费(米大师)的诞生、成长、出海。

本文转载自公众号云加社区(ID:QcloudCommunity)。

原文链接:

https://mp.weixin.qq.com/s/ms7zwLA5Jm-sNCAM8rrloQ

评论

发布