大数据开发之路-读书
大数据之路
1. 日志数据采集
1.1 浏览器的页面日志采集
浏览器页面采集往往分为两部分:
(1)页面浏览日志:分为页面浏览量PV和页面访客数UV
将JavaScript脚本植入到HTML文档内,当页面被浏览器解析的过程中自动执行
采集后,大多数情况会立即执行发送,发送到日志服务器
日志服务端收到日志后立即做出回复
服务端解析日志并进行存档
(2)页面交互日志:记录用户在页面上与控件互动的情况
业务方在元数据管理界面注册需要采集日志的交互业务,平台生成代码模板供交互式页面进行嵌入,互动代码和控件一起被响应执行
日志采集代码将日志发送到日志服务端,服务端进行简单的转储,不进行解析
在页面数据采集之后,还需要进行数据清洗。
1.2 无线客户端的日志采集
无线客户端的日志采集任务交由采集SDK完成,SDK将用户行为分为不同的事件,如页面事件和控件点击事件
(1)页面事件日志
每条页面日志记录三类信息:1.设备和用户的基本信息 2.被访问的页面信息 3.访问的路径,用户还原用户完整的访问行为
SDK通常提供三个端口,一个在页面进入时触发,记录在进入页面时的信息,,一个在退出页面时触发,发送日志,除此之外还提供了拓展信息的接口,用于给页面日志添加相关参数
SDK还提供透传参数的机制,当前页面的部分信息,可以传递到下一页面,方便进行行为路径追踪
(2)控件点击和其他事件日志
控件点击逻辑简单,只需要记录所在页面,用户、设备信息、控件信息等。
其他事件由用户根据业务场景自定义事件来采集相关信息
除此之外,SDK还提供了一些无需触发的采集接口,例如捕获应用崩溃的日志信息
(3)特殊场景
为了平衡日志大小,对于某些如曝光和一些性能技术类日志,推荐使用SDK的聚集功能,避免日志的多次上传,减小服务器压力。
app具有明显的回退功能,这会影响SDK的访问路径,所以需要对页面是否存在回退行为进行分析
(4)H5&Native 日志统一
为了避免将嵌入到Native中的H5页面日志与Native日志关联时出现数据丢失,成本过高的问题,需要对二者的日志进行统一处理,本文选用H5向Native归的方式
(5)设备标识
在统计UV时,需要通过设备标识来判断用户的唯一性,采用UTDID。
(6)日志传输
无线客户端日志的上传,不是产生一条发送一条,而是先储存在客户端本地,伺机上传。通过POST请求发送给服务端,服务端经过校验,将数据追加到客户端本地文件中进行存储,并进行维度切分,及当天的日志存储到当天文件中。还对日志进行分流。最后通过消息队列将日志数据推送给下游任务。
2.3 日志采集挑战
(1)日志分流和定制处理
(2)采集与计算一体化设计