数据采集技术简介

【数据采集技术简介】前言
本系列的技术文章不涉及实现细节,仅探讨实现思路 。由于数据仓库不仅仅是一个理论概念,其数据质量等原则包含了大量的技术实现细节,因此从数据采集开始,到数据处理,至最终的数据展现,都需要进行原理上和实现上的思路分析,才能保证最终数据仓库理论的完整实现 。另外,需要强调的是,本系列文章非原创,是笔者多年从业经历的一种思路整理,对于日常理解数据仓库的实现有着很大的帮助,因而用到了非常多其他文章的引用,并介绍很多业界的好用工具及优秀做法 。
一、技术路线图

数据采集技术简介

文章插图
 
二、Web端日志采集的业务概述Web端数据采集主要通过三种方式实现:服务器日志、URL解析及JS回传,详情如下:
  • 服务器日志 ,指Web服务器软件,例如Httpd、Nginx、Tomcat等自带的日志,例如Nginx的access.log日志等 。
  • URL解析 ,指访问服务器时,将URL信息及携带的参数进行解析后,上传服务器,例如访问百度首页:https://www.baidu.com/s?ie=utf-8&wd=你好,我们可以获得本次访问的word为“你好” 。
  • JS回传 ,指在Web页面上添加的各类统计插件,通过在页面嵌入自定义的JAVAscript代码来获取用户的访问行为(比如鼠标悬停的位置,点击的页面组件等),然后通过Ajax请求到后台记录日志 。
浏览器的日志采集种类可以分为两大类:
  • 页面浏览日志 :别名为“展现日志”;指当一个页面被浏览器加载时所采集的日志,该类型为最基础的互联网日志,也是PV及UV统计的基础 。
  • 页面交互日志 :别名为“点击日志”;指当页面加载和渲染完成后,用户可以在页面上执行的各类操作,以便量化感知用户的兴趣点 。
除此之外,还有一些针对特定场合统计的日志,例如页面曝光时长日志、用户在线操作监控等,但原理都基于上述两类日志,只是在统计上有所区分 。
Web端重要指标主要包括三个部分:
  • 页面浏览 :PV、UV、IP、跳出率、平均访问时长、转化次数等 。
  • 页面交互 :搜索词、控件点击、页面跳转等 。
  • 其他 :转化路径分析、设备分析、访客分析、系统环境、地域分布等 。
三、Web端日志采集流程目前典型的网页访问过程是以浏览器请求、服务器响应并返回所请求的内容为主,主要传输html文档,浏览器和服务器之间的通信普遍遵守HTTP协议,并逐渐过渡到最新的HTTP2.0版本 。一次典型的访问过程由如下几部分组成:
  • 用户在浏览器中点击网页链接 。
  • 浏览器在执行时,会解析用户请求内容,并按照HTTP协议中约定的格式将其转化为一个 HTTP请求 发送出去 。
  • 服务器按照业务逻辑处理本次请求,并按照 HTTP协议规定 的格式,将响应结果返回浏览器 。
  • 浏览器收到服务器相应内容,并将其按照文档规范展现给用户 。
在实际的处理过程中,前三步是无法采集用户的浏览日志,采集主要在第四步,也就是浏览器解析文档时才能进行 。因此可以很自然的想得到,HTML文档中适当位置增加一个日志采集节点,当浏览器解析到这个节点时,便会发出一个特定的HTTP请求到日志采集服务器,日志采集服务器接收到请求时,便可以确定浏览器已经成功接收和打开了页面 。目前业界常见的日志采集方案,只是在实现的细节上有所不同,原理都是相通的 。
但只统计页面流浪是不能满足业务需求的,很多场合下用户的具体行为特征也需要采集,因为往往会在特定的位置添加一个JS空间,当用户在页面上执行某个行为时,便会触发一个异步请求,按照约定的格式向日志服务器发送点击、等待、报错等交互行为 。
四、Web端日志的清洗和预处理在大部分场合下,直接收到的日志不能提供给下游使用,只能作为ODS基础日志进行保存,由于大数据平台的半结构化特征要求,需要进行一些修正,转化为DWD基础日志才可以使用,具体原因有如下几种: