细数企业数据采集汇聚的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了细数企业数据采集汇聚的方法相关的知识,希望对你有一定的参考价值。
随着互联网、移动互联网、物联网等技术的兴起,企业的业务形态开始多元化,通过行为埋点、爬虫的方式来收集过程数据是企业非常重要的方法和手段。从空间维度来看,用户行为可以分为线上行为和线下行为两类,采集这两类行为所产生的数据所使用的方法是不一样的,而且方法也在随着技术的演进不断发展和变化。
1、线上行为采集
线上行为的主要载体可以分为传统互联网和移动互联网两种,对应的形态有PC系统、PC网页、H5、小程序、App、智能可穿戴设备等。在技术上,数据采集主要有客户端SDK埋点和服务端SDK埋点等方式。其中客户端SDK埋点主要是通过在终端设备内嵌入埋点功能模块,通过模块提供的能力采集客户端的用户行为,并上传回行为采集服务端。
1)客户端埋点
常见的客户端埋点方式有三种:全埋点、可视化埋点和代码埋点。这三种方式的应用场景企业可根据自身需求进行选择。
- 全埋点:将终端设备上用户的所有操作和内容都记录并保存下来,只需要对内嵌SDK做一些初始配置就可以实现收集全部行为的目的。这也经常被称为无痕埋点、无埋点等。
- 可视化埋点:将终端设备上用户的一部分操作,通过服务端配置的方式有选择性地记录并保存。
- 代码埋点:根据需求来定制每次的收集内容,需要对相应的终端模块进行升级。
针对这三种埋点方式,企业可以根据实际业务场景来判断和选择。它们的优劣势对比如下:
- 全埋点适合于终端设计标准化且有统一系统接口的情形,用户在终端上的操作,通过系统提供的事件捕获机制,在对象事件发生时调用埋点工具中的指定处理逻辑,对该事件相关的信息进行记录。这种方法的优点是不用频繁升级,一次性验证并发布后,就可以获取终端的全量行为数据。当突然发现需要对某个对象做分析时,可以直接从历史数据中找到所需的数据,不需要再次进行数据收集。缺点是数据存储、传输的成本会高一些,有些当前不用的数据也需要保留。
- 可视化埋点适合于需要考虑存储和带宽成本的情形,可通过后端配置来降低对象事件行为采集数量,实现机制和全埋点类似。其优点是发布后不需要频繁升级,成本比全埋点低,并且能够灵活配置;缺点是当需要对某一个对象进行分析,但发现其数据没有被采集时,需要重新配置并等数据采集完成再进行后续工作,容易影响业务进度。
- 代码埋点主要适合于终端设计非标准化、事件行为需要通过代码来控制的情形。其优点是灵活性强,针对复杂场景可以单独设计方案,对存储、带宽等可以做较多的优化;缺点是成本高,维护难度大,升级周期较长。
2)服务端埋点
常见的线上埋点还有服务端埋点,通过在系统服务器端部署相应的数据采集模块,将这部分数据作为行为数据进行处理和分析。服务端埋点常见的形态有HTTP服务器中的access_log,即所有的Web服务的日志数据。前面提到的客户端的三种埋点方式,常见的简化实现方案一般也会配合HTTP服务器中的access_log来落地,但有时为了更好地融合,会定制一些服务端的SDK,用于捕获服务端系统中无法通过常规访问获取的数据信息,如内部处理耗时、包大小等数据。
服务端埋点的优点很明显,如果需要获取的用户行为通过服务端请求就可以采集到或者通过服务端内部的一些处理逻辑也能获取时,为了降低客户端的复杂度、避免一些信息安全的问题,常常会采用这种方式来收集用户行为数据。但其弊端也很明显,有些用户的行为不一定会发出访问服务端的请求,这种方式就无法采集这部分数据。因此,服务端埋点一般会和客户端埋点的结合使用,相互补充,以完成整个用户行为的采集。
2、线下行为采集
线下行为数据主要通过一些硬件来采集,如常见的Wi-Fi探针、摄像头、传感器等。随着设备的升级,各种场景中对智能设备的应用也越来越多,安防、客户监测、考勤等都开始深入到生活中。常见的主要有Wi-Fi信号采集、信令数据采集、图像视频采集以及传感器探测等。
通过Wi-Fi信号采集周边移动设备是之前比较常用的方式,但由于有些不合规的使用涉及个人隐私,手机操作系统也针对这类现象做了一定的防采集处理,出于隐私保护、系统防护等原因,现在这种采集方式已经不怎么被使用。其主要原理是通过信号探测的协议,当热点附近的移动设备在探测SSID时,会建立网络连接,从网络协议中获取手机的网络设备号。
图像视频主要通过智能摄像头来采集,目标对象进入相应区域后摄像头可以识别相关信息,然后采集和保存图像并生成唯一标识,如Face ID用于信息的组织。
3、互联网数据采集
网络爬虫又称为网页蜘蛛,是一种按照既定规则自动抓取互联网信息的程序或者脚本,常用来做网站的自动化测试和行为模拟。Google、搜狗、百度等提供的互联网信息检索能力,都是基于它们内部自建的网络爬虫,在遵守相关协议的情况下,不断爬取互联网上的新鲜网页信息,对内容进行处理后提供相应的检索服务。
当企业的内部信息不足时,可以考虑利用外部互联网的数据进行一些“化学反应”,将外部的数据与内部数据有效融合,从而让内部数据在应用上有更多价值。网络爬虫有多种实现方式,目前有较多的开源框架可以使用,如Apache Nutch 2、WebMagic、Scrapy、phpCrawl等,可以快速根据自己的实际应用场景去构建数据抓取逻辑。当然,需要遵守相应的协议和法规,同时避免对目标网站造成过大的请求压力。
4、内部数据汇聚
数据汇聚不同于数据采集,数据采集有一定的数据生产属性,将终端的用户行为信息通过特定的方法记录后,通过中间系统的流转写入目标存储中。当然,也能通过某种形式在某个数据源中落地,如数据库或日志文件等,然后通过数据汇聚的能力实现数据采集和存储。
从数据组织形式来分,数据主要分成三类:
- 结构化数据:规则、完整,能够通过二维逻辑来表现的数据,严格遵循数据格式与长度规范,常见的有数据库表、Excel等二维表。
- 半结构化数据:数据规则、完整,同样严格遵循数据格式与长度规范,但无法通过二维关系来表现,常见如JSON、XML等形式表达的复杂结构。
- 非结构化数据:数据结构不规则或不完整,不方便用二维逻辑表来表现,需要经过复杂的逻辑处理才能提取其中的信息内容,如办公文档、图片、图像和音视频等。
从时效性和应用场景来分,数据汇聚可以分成离线和实时两类: ·
- 离线:主要用于大批量数据的周期性迁移,对时效性要求不高,一般采用分布式批量数据同步的方式,通过连接读取数据,读取数据过程中可以有全量、增量的方式,经过统一处理后写入到目标存储。
- 实时:主要面向低时延的数据应用场景,一般通过增量日志或通知消息的方式实现,如通过读取数据库的操作日志(RedoLog、BinLog)来实现相应的实时处理,业界常见的Canal、MaxWell、StreamSets、NiFi等框架和组件都有较多的实际应用。
在数据建设过程中有ETL(Extract-Transform-Load,抽取–转换–存储)的操作,即在数据抽取过程中进行数据的加工转换,然后加载至存储中。但在大规模数据场景下,一般不建议采用ETL的方式,建议采用ELT(Extract-Load-Transform,抽取–存储–转换)的模式,即将数据抽取后直接加载到存储中,再通过大数据和人工智能相关技术对数据进行清洗和处理。
如果采用ETL的模式在传输过程中进行复杂的清洗,会因为数据体量过大和清洗逻辑的复杂性导致数据传输的效率大大降低。另一方面,ETL模式在清洗过程中只提取有价值的信息进行存储,而是否有价值是基于当前对数据的认知来判断的,由于数据价值会随着我们对数据的认知以及数据智能相关技术的发展而不断被挖掘,因此ETL模式很容易出现一些有价值的数据被清洗掉,导致当某一天需要用这些数据时,又需要重新处理,甚至数据丢失无法找回。相比存储的成本,这种损失可能会更大。
在数据能力建设过程中,很多企业结合自身的场景和最佳实践也开源了一些优秀的汇聚工具,如Sqoop、DataX、Canal等,适用场景不同,也各有优缺点。
以上是关于细数企业数据采集汇聚的方法的主要内容,如果未能解决你的问题,请参考以下文章