2017 全球移动技术大会

导语

6月9日-10日,“2017年全球移动技术大会(GMTC)”在北京举行。会议为期两天,面向移动开发、前端、AI技术人员,聚焦前沿技术及实践经验,打造技术人员的学习和交流平台。TEG数据平台部产品中心总监(P4专家)Torry作为专题采访嘉宾,前端开发负责人Johnny和移动开发高级工程师Foreach作为演讲嘉宾,围绕移动分析精细化运营和Crash系统实时化演进与实践进行了精彩分享。

关于GMTC全球移动技术大会

2016年InfoQ在北京主办了第一届GMTC全球移动技术大会,大会邀请了来自Facebook、Square、腾讯、百度、京东等公司的技术负责人,共同探讨移动相关的应用场景、技术方案以及架构演进,吸引了近千人参与。

2017年再度起航,6月9日-10日InfoQ在北京·国际会议中心举办第二届GMTC全球移动技术大会。本届GMTC面向移动开发、前端、AI技术人员,聚焦前沿技术及实践经验,将重点关注以上话题,携手一线技术专家输出优质技术干货,促进全球技术交流,推动国内技术升级。

现场专题摘要

“腾讯移动分析(MTA)为App研发者提供完整的数据采集、分析洞察、精准触达的精细化运营支持,并首家推出可视化埋点功能,方便App运营者可视化配置数据埋点,简化原有数据代码、审核、发布上架流程;快捷配置,即时生效,精细化运营瞬间加速。”

1 解决方案专场,演讲嘉宾Johnny,专题介绍《移动分析助力App精细化运营》

“腾讯移动分析(MTA)将内部打磨多年的Crash分析能力对外输出,在复杂的App生态下,专注于构建完善的质量体系,助力App研发者用'一行代码'拥有'完整Crash分析系统',为App运行时的崩溃检测和恢复提供有力保障。”

2 质量保证专场,演讲嘉宾Foreach,专题介绍《腾讯移动分析Crash系统实时化演进与实践》

智能时代的大前端,让我们一起去会场看看吧!

Johnny现场分享

以下为Johnny现场PPT干货呈现

要围绕一个中心,两个基本点。一个中心是以用户为中心,两个基本点是:数据和技术。运用技术和工具,完成用户数据获取、用户识别、用户洞察、用户触达完整闭环,结合标准的数据分析方法,解决实际业务运营中的问题。

背靠数据平台部多年积累的大数据处理、计算的能力,腾讯移动分析每天处理近4000亿的日志流水。从数据接入、到数据计算、任务调度、数据存储、数据应用、机器学习,为移动应用研发者和运营者的实际数据分析的个性化需求,提供坚实的数据计算和处理保障。

目前腾讯移动分析(MTA)提供移动全平台的统计分析服务,从Android/iOS的原生应用,到Html5轻应用,微信小程序,通过采集应用内的用户行为数据,为App运营者提供基础运营指标、质量体系、运营支持、画像等几大类的数据分析服务。

腾讯移动分析(MTA)用户数据的获取和处理的技术架构简图如上所示,大致可分为SDK系统:负责用户在应用内的数据采集,统一网关:借用公司统一服务,做转发和ssl加解密运算,接入层:做数据格式化和header信息摘取,实时模块:字符转换、基础指标累加、去重指标计算;离线旁路:统一走到腾讯大数据平台,做离线计算并将结果出库,最终交付到存储层,供web端展示。

借用微信小程序分析简单介绍一下腾讯移动分析(MTA)在用户数据采集方面的技术细节,app和page线程对外暴露了很多钩子点,方便开发者hook自己的业务逻辑,MTA则利用这一特性,通过重写钩子方法,拿到用户启动应用、渲染页面过程中相关的来源、访问使用、终端环境、网络机型等基础数据源。

用户标识是完成用户生命周期分析的基础,腾讯移动分析(MTA)在Android、iOS终端用户标识上,利用设备指纹:IMEI、Openudid(IDFA),与此同时构建MID服务,为腾讯系内的App账号关联、集团内应用共享数据提供支持,并且利用MID可以进行机型标准化、App-H5的关联分析、反作弊等。

目前数平的基础数据体系已经完成了公司内主流业务账号与用户手机号、邮箱号、以及腾讯移动分析(MTA)的自有MID体系的网状映射关系,从而达到公司内各业务多种账号的互通,以及与移动应用开发者的数据对接。这部分基础数据是用户洞察的基础。

目前用户洞察所使用的用户标签,大概可以分为以下几大类:用户属性类包含用户基础属性、社会属性、人生状态等,游戏兴趣:游戏体彩、类型、模式等,智能设备:硬件品牌型号、网络、wifi、LBS等,广告兴趣:3C、百货、女装等,以及行业和商业兴趣。这些标签已经被深度应用在相关推荐和画像服务中。

用户触达是App精细化运营的端点,也是营销用户最直接&有效的手段,目前腾讯移动推送(信鸽)支持移动设备通知栏的全量广播,应用内的广播如公告中心,应用内的单播消息如评论、红点。并且给应用运营者提供地域LBS、应用版本、用户属性相关的分群标签,提供精准化推送。

上图是腾讯移动推送(信鸽)整体的技术架构图,大致分为终端、接入、逻辑、存储、中间件、公共服务等几个模块。终端SDK负责共享通道、智能选路、灰度调度等工作,接入层负责设备识别、通道维持、会话路由等工作,逻辑层负责做push消息的预处理、消息审计以及队列策略,存储层则存储了基础的会话消息、设备信息、账号映射等数据。与消息网关、消息中间件一起组成了支撑亿级消息,秒级达到的高可用推送服务。

技术是App精细化运营中必不可少的手段,运营者可以利用这些技术和工具,简化运营路径。可视化埋点就是一个典型的将埋点云化的实用功能,专有长连接和通道与埋点设备连接,web端可视化处理埋点,实时测试埋点数据上报和统计分析,保存配置、云端下发,简单的4步完成复杂的埋点,将技术人员从运营需求中释放,让运营者可以按需定制。

整个可视化埋点的数据处理流程如上图:web管理端、config access(配置接入)、设备三层,设备与接入层建立专有通道,将当前页面截图、买点元素信息和位置信息一起上传到接入层,web端跑马,不停向接入层询问页面数据,在web端重绘,埋点设置后形成配置下发到接入层并透传到设备,在测试设备上点击埋点元素,产生点击流数据,实时计算并在web端展示,保存埋点后,配置文件借助云控,下发到所有有效的接入设备上,应用到实际业务场景。

刚刚提到了云控,云控是动态化运营App的关键技术,需要解决设备接入和状态维护、配置管理、配置匹配、配置下发等几个关键问题。设备状态维护包括应用版本、SDK版本、设备ID,平台信息等可以给终端分群的多个维度,配置匹配和管理,主要计算出真正需要下发到终端的配置,配置下发,目前在MTA中主要采取终端拉取,全量覆盖的方式,因为数据上报的方式是http短连接,后续会扩展出基于长连接的,push增量配置更新。

Foreach现场分享

以下为Foreach现场PPT干货呈现

开始之前,介绍一个重要的模型:KANO模型,该模型可以看出,产品性能与用户满足度之间存在非线性关系,对于基本型需求来说,当优化此需求,用户满意度不会提升,当不提供此需求,用户满意度会大幅降低。对于App来说,基本的需求是App稳定可用、不Crash。

研究数据表明,高达大概62%的用户在使用移动App时遭遇Crash,如果Crash发生在首次启动,21%的用户会选择立即卸载,而如果Crash发生在使用过程中,70%的用户会给应用差评。可以说Crash问题对移动端应用的用户留存率、口碑、市场竞争力和收入都有非常大的影响,是移动应用开发过程中不容忽视的重要因素。

腾讯移动分析MTA经过多年的打磨细作,提供全方位的解决方案。主要分为5个层次。一是终端部分,支持全方面多语言的Crash采集,真正做到100%覆盖;二是数据处理层,终端采集的数据实时上报到Access,进行协议解决、数据格式化处理,然后发送到TDBandk消息中间件,供后端的实时处理和离线系统消费。实时系统主要由秒级实时计算、实时还原与实时告警系统组件,用于处理当天的实时数据;对于T+n这种离线处理,是由经深度改造的离线处理平台hadoop负责;同时,我们还有支持定向推送的云控系统帮助开发者修复Crash;数据处理完会落地在通用存储层。整个集群已云化处理,支持分集群业务隔离,资源动态调配;最后的运营平台是系统的前端页面,支持分QA、研发、运维等不同角色视图的报表和功能。

整个方案重要要解决的是终端堆栈、机型、日志等数据的完整采集,数据的实时高效处理,堆栈数据的精准还原,以及完善的告警运营体系。

终端数据采集主要分为两个维度,一个是基本平台的建设,即Android和Java与C/C++、iOS的Objective C和Swift;二是专业领域的定制,比如主流的手游引擎Cocos2dx中的C/C++、Lua与JS,以及Unity3d的C#。有了这两个维度平台,基本上能覆盖绝大部分场景。而在众多语言平台上,Android的C/C++异常捕获是最具挑战性的。

一个简单的Crash处理会涉及到至少三个重要环节:一是源代码文件编译时的编译过程,中间会生成符号表和二进制文件;二是用户安装运行时,发生Crash后,整个捕获过程;三是后台对上报的异常堆栈进行堆栈符号还原的过程。

C/C++的Crash涉及到App、NDK、System、CPU指令集四个重要层次,主要是通过linux信号机制来监听的,分为初始化和捕获处理两个过程;初始化时,先注册需要监控的linux信号,同时设置好Crash处理专用内存空间与记录回跳地址;一旦Crash时,便会触发设置的处理函数,通过解析/proc目录下对应的文件,得到进程描述数据、运行地址偏移等核心数据,再结合7种不同的CPU指令集差异化处理,最后通过实际Crash的地址回溯整个函数调用链过程,最后通过跳转到之前记录的回跳地址,把数据上传到App上层,做实时上报或开发者自己定义的处理,比如弹出toast通知等。

除了堆栈数据,还需要更多维度更灵活的数据来辅助定位,诸如时间、状态、身份标识、归因、位置等详细的信息。

还原系统主要是用于处理不同平台上报的堆栈,主要有四个部分:预处理,流量控制、数据过滤;堆栈还原,不同平台的符号化堆栈内容;智能合并,特性提取与归类;入库,批量入库,实时检索。

自研的iOS符号表还原工具,不依赖于Mac OS系统,支持framwork符号还原,支持Swift语言,支持Demangle,精准到行号。

通过解析iOS的dSYM文件,可以得到符号表和dwarf数据,解析dwarf数据后可以得到解析后地址与文件行号映射关系,最终可对应到Crash地址发生的行号。

堆栈还原后,需要做结构化处理,方便提取特征堆栈;分级优化,按App、第三方组件、系统分级,第一次提取最直接相关的,第二次做干扰数据的过滤优化;同时,还要对堆栈的调用链过程做分析。

批量插入/更新;按时间维度冷热数据分离;按结构化、全文探索等数据维度切割;按前台访问LRU分级;按应用规模分库。

增量计算模型:单层单节点内计算小段时间(秒级)的增量,定期发送到下一层节点进行汇总;全整数运算:减少字符串处理开销;全内存处理:文件持久化支持,保证端到端的消息可靠传输;智能容灾策略:本地文件备份、双机热备、一致性hash。

一行代码,一个系统。只需要集成简单一行代码,便可拥有Crash分析、自定义事件、分群画像、无埋点等一系列服务,助力开发者做精华细化运营,保障产品质量。

结语

随着React Native、微信小程序、PWA等跨平台方案的涌现,移动和前端融合的趋势越来越明显。过去的一年来,大前端领域出现了众多新技术和新思想,我们希望推动新技术能更快更好的在实践中应用!

原文发布于微信公众号 - 腾讯技术工程官方号(Tencent_TEG)

原文发表时间:2017-06-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

将数据迁移到云:回到未来?

数百家公司现在已经证明,单一数据泄露可能会造成长期的经济,法律和品牌上的损失。除了数据保护之外,仅仅管理云中的数据是不同的,如果做法不当,成本,复杂性和风险会使...

1370
来自专栏Youngxj

EMLOG教程-玩转EMLOG系统2018最新教程-在线高清观看

1684
来自专栏Crossin的编程教室

几个以前发过、回复过很多次、比较有用的学习资源

最近事情有些多,所以“每周一坑”偶尔不得不跳票一下,各位莫急哈。 既然来都来了,说几个经常被问到的资源,应该还是不少人需要的。已经看过的就忽略。有其他好资源欢迎...

28711
来自专栏互联网数据官iCDO

5招教你轻松获得手机App好评

引言:在应用程序方面,意见和评论也会影响到应用程序商店搜索结果的可见性,以及它们在app store中出现的概率。因此,如何能获得更多的好评呢?本文教你5招。 ...

3905
来自专栏Kirito的技术分享

以Dubbo为例,聊聊如何为开源项目做贡献

Github 上有众多优秀的开源项目,大多数 IT 从业者将其当做了予取予求的工具库,遇到什么需求,先去 Github 搜一把,但有没有想过有一天自己也可以给开...

1413
来自专栏微信终端开发团队的专栏

微信 Android 模块化架构重构实践(下)

重构整体架构不是一件容易事,通常也不太可能让整个团队停下来只做重构。本文是微信 Android 模块化架构重构实践的下篇,主要分享模块化架构重构的一点点经验。

1.6K5
来自专栏非著名程序员

是的,这是我的记录之道

前几天分享了两篇关于我的学习之道,面试之道的文章。颇受大家的好评,很多人都感觉受益良多,给了他们借鉴学习的经验。对此,其实我心里还是非常欣慰的,今天继续分享关于...

1395
来自专栏全华班

微信公众号、小程序、接口统一集成开发平台框架

RhaPHP微信平台管理系统,支持多公众号管理,小程序开发,APP接口开发、几乎集合微信功能,简洁、快速上手、快速开发微信各种各样应用。简洁、好用、快速、项目开...

5672
来自专栏云计算D1net

你为什么需要在云端构建Linux服务器?

云端Linux服务器比以往来得成本更低、性能更好。 要是你之前还没有启动过云端Linux服务器,眼下也许正是大好时机。原因何在因为你在短短几分钟内就能安装好一台...

6297
来自专栏福利活动清单

腾讯云学生优惠

腾讯云学生优惠相对于阿里云的槽点在于价格贵了6元一年,而且只能学生认证才能够购买。但是!但是腾讯云学生机可以选择搭配学生优惠的云数据库体验套餐,最低3元一月,还...

20K14

扫码关注云+社区

领取腾讯云代金券