写点什么

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

  • 2019-10-29
  • 本文字数:6918 字

    阅读完需:约 23 分钟

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

大家下午好!开场的时候主持人介绍了腾讯计费米大师在 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


2019-10-29 10:093851

评论

发布
暂无评论
发现更多内容

我是如何用 Amazon Serverless 创建一个门铃的

亚马逊云科技 (Amazon Web Services)

Serverless Lambda AWS showdev

在线YAML转XML工具

入门小站

工具

企评家为政府打造决策支撑平台

企评家

Linux内核应该怎么学习?给大家推荐五本书籍

简说Linux内核

Linux Linux内核 驱动开发 嵌入式开发

机器学习算法:关联规则分析

Peter

Python 机器学习 算法

一个快速追踪密切接触者的开源脚本方案

冯骐

Python 数据分析 流调 密接 新冠疫情

读《Software Engineering at Google》(14)

术子米德

架构师成长笔记

未来可期,PlatoFarm的生态通证登录Bitmart等全球四大平台

BlockChain先知

读《Software Engineering at Google》(12)

术子米德

架构师成长笔记

“亿”点点技术情怀

不脱发的程序猿

程序员 程序人生 技术情怀

略谈企业信息化的规律

秋去冬来春未远

信息化规律

Pandas索引的操作

Peter

Python pandas

LabVIEW实现应用程序停止或退出

不脱发的程序猿

LabVIEW

Pandas+Numpy+Sklearn随机取数

Peter

Python pandas

LabVIEW控制电脑关机、休眠、注销和重启

不脱发的程序猿

LabVIEW LabVIEW控制电脑

redis优化系列(二)Redis主从原理、主从常用配置

乌龟哥哥

4月月更

在docker上编译openjdk8

程序员欣宸

Java JVM 4月月更

读《Software Engineering at Google》(13)

术子米德

架构师成长笔记

解决方案架构师的小锦囊 - 架构图的 5 种类型

亚马逊云科技 (Amazon Web Services)

技术 职业 亚马逊云科技

k8s client-go源码分析 informer源码分析(1)-概要分析

良凯尔

Kubernetes 容器 云原生 Client-go

企评家企业大数据平台助力政府智能监管

企评家

为什么我们需要做企业成长性评价分析?

企评家

C++内存池的简单原理及实现(纯代码解析)

简说Linux内核

Linux Linux服务器开发 Linux内核 嵌入式开发

GDB调试程序的核心技术-ptrace系统调用与使用示例

简说Linux内核

内存管理 Linux内核 进程管理 嵌入式开发 设备驱动

Flutter 一文搞定图片选择和图片上传

岛上码农

flutter ios开发 安卓开发 4月月更 跨平台开发

[Day22]-[链表]相交链表

方勇(gopher)

链表 LeetCode 算法和数据结构

Robot OS系统架构设计

轻口味

android 架构 Robot 4月月更

读《Software Engineering at Google》(11)

术子米德

架构师成长笔记

初探 Lambda Powertools TypeScript

亚马逊云科技 (Amazon Web Services)

typescript Serverless Lambda AWS

采用百度飞桨EasyDL完成指定目标识别

DS小龙哥

4月月更

CSV Column Extract列提取

入门小站

工具

腾讯千亿级营收是用什么技术实现计费结算的?_文化 & 方法_段克晓_InfoQ精选文章