小红书移动端
自动化数据采集实践
朱智伟
小红书数据采集的过去
初期我们在自建自己数据平台的时候,移动端主要
是手动埋点采集用户行为数据,功能还没有现在那
么复杂。
基本是采集PV UV ,和一些分析师觉得有意义的行
为。
通过某个具体指标的涨跌来定义这个页面或者功能
是否达到预期。
得到每一个结论之前的链路太长,步骤过多,需要
对每一个场景做分析,具体到那些点需要统计。
小红书以前是如何管理这些点
?维护一个打点Key的表
?每个点需要手动写Code
?分析师通过Key的表来找到对应事件
391个打点事件需要手工通过excel维护
我们碰到了那些问题
① 埋点代码遍地都是
② 复用性基本为零
③ 需求改动太快 ,埋点也要跟着一起改
④ 我们无法预知到分析师需要哪些数据
⑤ 维护一套打点事件的表成本很高
⑥ 错打漏打经常发生
⑦ 花费了大量时间进行数据清洗
自动化数据采集的推出
数据采集与上报是构建数据平台过程中最重要的环节
如果在采集与上报上花费了过多的精力,那么我们花费在得出结论的精力就会变少。
在数据采集和清洗上我们也许花费了80%的精力,但是只产出20%的价值。真正有价值
的是这些数据告诉我的一些结论,可以帮助我们产品做决策。
所以我们决定做一个产品来解决这个问题
就是自动化数据采集
我们做了一些思考
当时有2种解决方案,一种是可视化埋点 ,一种是无埋点
手动埋点虽然使用起来灵活,但是开发成本较高 ,每次页面改动都要修改大量打点代码。
可视化埋点开发成本较高,需要开发一个后台系统供分析师和产品经理去操作。
既然无法预知打点需求就全部采集
既然需求改动太快那就自动采集
无埋点 是最适合我们的解决方案,它所带来流量的压力和数据量的增加都是我们可以
接受。
所以,小红书最后才用了无埋点的方案。
移动端有哪些有价值的数据
页面:
整个页面出现和消失
行为:
交互式事件打点
用户 赞笔记 评论笔记 收藏笔记
曝光:
每个笔记的出现
核心 :AOP
面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向
对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软
件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码
就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。
概括的说,通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态
统一添加功能的一种技术。
在数据采集这件事上
其实就是当用户发生行为
我是谁
我从哪里来
我要到哪里去
但在现实世界中,并不是所有问题都能完美得划分到模块中,有些功能是横跨并嵌入众
多模块里的。
核心2 :View树结构
无论是 Web 上的 DOM 结点结构,还是 App 上的 UI 控件结构,都是构建好的一颗完整的树形结构渲染在页
面或者屏幕上。
所以我们给View 和 Page增加了一些附加属性,来和业务产生数据绑定。
Referrer & Parent
简单的说就是你从哪来,和你是谁生的问题
1 2 3 4 5 6 7