腾讯移动分析系统揭密



作者简介:foreach,2012年加入腾讯,一直专注于腾讯大数据产品建设,重点参与腾讯移动分析(MTA)、腾讯移动推送(信鸽)等核心产品研发,亲身经历两款产品从0开始到数十万开发者使用的过程。目前专注于系统改造优化,以及广告与金融领域高价值服务建设。


腾讯移动分析(Mobile Tencent Analytics,简称MTA)是一款专业的第三方移动统计分析运营平台,是腾讯大数据对外开放的核心产品之一。平台不仅提供大数据的指标统计,满足常规的移动App运营诉求;还提供个性化、精细化的运营工具,能够有针对性去解决产品研发、运营中遇到具体领域问题;同时,还通过数据的开放生态,输出腾讯在大数据领域积累的能力,帮助企业快速、低成本使用或构建数据平台,提升企业竞争力。


目前,平台每天接入的设备超过10亿台,每天新增日志条数超过5000亿条。十亿的设备账号和千亿的数据如何做计算处理、关联分析、多维交叉是一个不小的技术挑战,下面会分享构建海量数据分析平台的关键技术以及一系列思路与做法。

 

开始之前,先简单介绍下MTA系统。MTA主要通过采集App、H5&小程序、Hybrid、智能终端等应用数据,通过数据关联,计算处理,为开发者提供实时数据统计分析服务,监控版本质量、渠道状况、用户画像属性及用户细分行为,通过数据可视化展现,协助产品运营决策。平台已累计接入全球上百万款应用,支撑数十万开发者日常统计分析工作。

        

MTA平台主要分为三个部分:终端数据采集、后台数据存储与处理、运营平台,平台主要特点有:

1. 全平台覆盖:包含原生的Android和iOS应用,智能硬件应用,Hybrid混合应用,H5&小程序,基本上覆盖了主流的终端应用类型;

2. 多模式计算:覆盖离线计算、实时计算、智能计算和数据挖掘;

3. 数据生态开放:支持业务指标前台导出、REST API数据对接,可无缝对接业务自建的运营平台,做数据二次开发。

 

要构建海量数据分析平台,关键技术主要有3点:

1. 数据连接:数据连接是作为一个数据分析平台的基础,要保证不同的App,甚至不同类型的应用比如原生App与H5 App上报的数据是可关联的,这主要涉及到设备标识、账号关联以及数据的沉淀如用户画像和机型库;

2. 数据处理:离线计算、实时计算、多维实时分析、数据挖掘、机器学习、可视化等;

3. 数据生态:数据导出、平台对接、数据价值、赋能企业大数据能力;

 

首先,我们先看看设备ID识别。在移动互联网,设备ID的识别一直是个痛点也是个难点。比如Android平台,由于权限等因素IMEI、MAC很可能采集不到真实数据,甚至存在大量的刷机刷量行为,导致采集到的设备ID基本上不可用。


MTA根据移动平台的特点,专门设计了一套设备唯一标识(Mobile ID,简称MID)体系,特点有:

全匿名:MID的生成算法与终端硬件属性没有依赖关系,是后台随机生成,通过安全协议下发到终端SDK;

唯一性:后台通过算法唯一生成,全局保证唯一性;

关联性:可用于关联设备属性、IMEI、MAC、账号等信息;

防伪造:MID字符串本身含有自检验信息,同时,后台存储MID与设备的关联信息,可防止伪造;

可运营:支持在线运营,分配的MID是具有生命周期的,可在线重置或回收。同时,通过特征分析、数据挖掘,还可识别异常的MID,并做逻辑修正。

 

MID的核心在于其跨域关联性,可以做到一度关联、二度关联,如此扩散,可从单个App扩散到App间,甚至是全网。

 

解决了数据的连接性难题,下面我们来看看如何构建海量数据处理系统,总的来说,可以按照商业复杂度和时效性2个关键因素,按照不同的数据指标,不同的场景,选用不同的技术。


离线分析平台:全量的指标计算、严格的时序类计算、按天汇总的基础数据报表等;

秒级实时分析:对时效性要求非常高的场景,比如监控告警、质量诊断指标等;

多维实时分析:对数据的归类聚合,比如用户分群、用户标签、设备属性

在线预测分析:对未来的在线预测能力,比如潜流失用户、潜付费用户

 

参考开源的Strom流式计算解决方案,我们自研了一套纯C++实现的秒级实时系统,主要用于新增、活跃等通用指标的实时计算,系统可以保证“终端日志采集->上报后台->后台计算->存储->前台展示”全流程控制在3秒内,达到秒级刷新。

主要特点有:

1. 增量计算模型:ESP负责计算单位时间(通常为1秒)内的数据增量,然后发送到ESA节点汇总,定期写入Redis,供前台查询;

2. 全整数运算:系统将所有非int类型通过ESA编码模块转换成int,并将映射关系存储在LevelDB,供查询时翻译;

3. 全内存处理:为减少磁盘IO耗时,所有的数据计算和处理都在内存中;

4. 智能容灾策略:系统关键节点有主备异地部署,支持自动监控和切换。

 

在数据分析过程中,多维交叉分析是一个常见的应用场景,比如用户分群,就是通过一系列的属性条件(例如:活跃情况、用户渠道、用户画像、用户属性和用户行为等)筛选出一批符合相应条件的用户集合,涉及到大量的高维组合操作,通常使用离线系统来处理。为了解决多维交叉的实时性问题,我们引入Roaring Bitmap位图压缩算法和改进后的Druid,将维度和设备ID映射到bitmap上,通过维度的预聚合的bitmap数据来完成实时用户分群功能。一方面通过数据的预聚合,可以大大的压缩原始的数据;另一方面,配合列式存储、针对维度的inverted index,将字符串操作转换成SET的与或非操作,可以准确定位到目标数据而不需要扫描整个数据集,从而将用户发起查询到返回结果的整个过程控制在3秒左右。

 

用户分群同时支持基于规则和基于算法的分群,客户可以容易通过MTA与广告平台的打通,直接对接广点通和win,甚至可以通过数据开放网关,对接业务自建平台。

 

甚至,还可以通过移动推送平台(信鸽)导入功能,导入MTA分群好的用户设备标识或号码包,针对不同的用户群推送不同的方案,有针对性的营销推广,达到精准触达的目的。

 

作为一个公共平台,客户的接入门槛是否够低也是一个事实上的衡量标准。MTA一直强调简洁高效,只需要在终端简单的一两行代码便可对接整个数据服务系统,同时,还支持埋点的可视化操作,运营人员可以不需要通过开发在项目中硬编码埋点,而是将常用的自定义事件以可视化界面呈现,可见即可得,大大降低接入和使用门槛,助力客户挖掘数据价值。

 

腾讯大数据产品总监洪桃李Torryhong再三强调:大数据能力是企业必备的技能,作为一个公共平台,有义务低成本开放腾讯大数据沉淀的大数据处理能力,帮助企业洞察用户、行业变迁及资本走向,支持公司战略决策,精细化运营。未来,MTA将继续提升平台的能力,继续优化并构建一套高效率、高可伸缩的统一计算平台,并在广告和金融等垂直领域深耕细作,通过整合大数据能力,给客户带来更多的价值。


专题介绍

ArchSummit全球架构师峰会是InfoQ中国团队推出的面向高端技术管理者、架构师的技术大会,参会者数量1000+。其中,出品人及演讲嘉宾中高级技术专家比例占79%,90%拥有10年以上开发经验。本次“TEGer在全球架构师峰会”专题将带来TEG人在会上的系列主题分享。

作者简介:foreach,2012年加入腾讯,一直专注于腾讯大数据产品建设,重点参与腾讯移动分析(MTA)、腾讯移动推送(信鸽)等核心产品研发,亲身经历两款产品从0开始到数十万开发者使用的过程。目前专注于系统改造优化,以及广告与金融领域高价值服务建设。