浅谈「DataFlux」移动设备数据采集

DataFlux是上海驻云自研发的一套大数据统一分析平台,可以通过对任何来源、类型、规模的实时数据进行监控、分析和处理,释放数据价值

DataFlux 作为实时大数据分析平台,支持移动设备数据的收集,是其中非常重要的功能。短期规划,我们的目标是聚焦用户行为分析。下面就用户行为分析这一块展开,从系统设计、原理实现、后期展望来说说 Dataflux 移动设备的收集。

系统设计

移动端的数据采集,通过集成方在应用中集成我们的 SDK 来实现。具体实现如下图:
浅谈「DataFlux」移动设备数据采集

DataFlux 所有的系统设计都本着一个概念叫旁路,这里摘录一段百度百科的解释:

ByPass Mode(略过模式或旁路模式),泛指在一个系统的正常流程中,有一堆检核机制,而“ByPass Mode”就是当检核机制发生异常,无法在短期间内排除时,使系统作业能绕过这些检核机制,使系统能够继续运行的作业模式。

回到 SDK 的设计,我们引入了程序设计 AOP (Aspect-oriented programming 面线切面的程序设计)的概念,我就这里就不对 AOP 做赘述,相对应原理讲解网上有很多,简单来说集成方只需要进行简单的 SDK 启动配置之后,不需要将我们 SDK的夹杂应用的业务代码,换一种说法,这个就是全埋点。
浅谈「DataFlux」移动设备数据采集

好处是不要进行埋点的重复工作,另外因为没有和业务代码中添加代码,降低了代码耦合,在版本迭代过程中,不需因为界面或者业务代码变动一同修改,减少了代码维护成本。

当然全埋点也有它的缺点,因为把所有的数据都采集,如何在这些数据中过滤出有价值的数据,又变成了新的课题。我们这里一方面是通过 SDK 配置,通过黑白名单策略对上报采集数据进行过滤,另一方面是通过 Dataflux Web 端的自定义图标来实现。
浅谈「DataFlux」移动设备数据采集

实现原理

用户行为分析,全埋点这一块,这里 Android 使用了 Gradle Plugin Transform 静态代理的方式写入拦截代码,原理是在代码编译之前,由插件写入需要拦截的方法,iOS 则是在 Runtime,动态代理方式,在程序运行之后,注册拦截方法进行拦截,拦截到方法之后,我们对应应用的界面和用户的行为进行采集,之后以时序数据的方式,上报给 DataFlux服务器,然后用户通过 DataFlux 进行对收集数据进行洞察。
浅谈「DataFlux」移动设备数据采集

为了解除集成方安全性顾虑我们对SDK iOS 和 Android 进行了开源。

后期展望
在移动设备数据采集规划上,用户行为分析只是一部分,中期规划是采集设备的监控项目,例如,一方面用户行为数据可以根据这些监控数据做关联,另一方面可以作为实时监控手段,主要针对的是手机平板性能监控场景。

目前 SDK 只限于移动端,支持Android、iOS ,后期还会支持Flutter,并且会对支持的设备进行扩充,理论上安装有移动操作系统的设备,都是我们努力的目标,例如TV、车载设备等等。

浅谈「DataFlux」移动设备数据采集

上一篇:初识SpringCloud(2)集群/分布式/微服务/SOA的相关概念


下一篇:最佳拍档 | 云计算+大数据+DataFlux,轻松发挥数据“原生”力