一、项目简介
随着大数据技术的迅猛发展,其在商业领域的应用日益广泛,并为企业创造了显著的价值。通过深入的数据分析来洞悉用户行为模式,构建以用户体验为核心的高效增长策略,已成为现代企业不可或缺的核心竞争力之一。面对不断攀升的成本压力,企业必须摒弃传统的粗犷营销和运营模式,在市场营销、产品开发、销售及客户服务等关键环节转向更加精细化、科学化与高效的管理方式。
系统部署完成后,将致力于收集并分析用户行为数据,推动电商业务的数字化转型。为此,我们基于强劲需求开发了一套用户行为分析解决方案,该方案兼容神策数据提供的开源埋点SDK,用于终端用户行为数据的采集上报。为了确保数据流的高效处理,采用了Nginx作为Web服务器进行初步请求处理,结合Flume进行日志信息的捕捉与格式转换,并利用Kafka消息队列实现数据的可靠传输,最后通过Flink实时计算引擎将处理后的数据写入HDFS分布式文件系统中长期保存。
本项目具体涵盖了四个核心步骤:首先配置Nginx环境以支持前端数据采集;接着通过Flume解析和处理日志格式,确保数据准确性;然后将处理后的明文数据发送至Kafka主题(Topic)中暂存;最后使用Flink消费Kafka中的数据并将埋点数据最终存储到HDFS中。为便于初期的埋点校验与优化调整,在Kafka阶段增加了对埋点数据的JSON格式解析,并将解析结果同步至MySQL数据库中以便于查询和验证。未来,我们还计划扩展支持友盟及其他第三方SDK厂商的埋点处理机制,并进一步集成业务系统日志的自动化采集与入库流程。
二、架构
2.1 技术架构
行为数据采集的来源涵盖了多种终端,包括iOS、安卓、Web、H5页面以及微信小程序等。针对不同平台的特点,我们采用了相应的SDK,这些SDK使用了各平台和主流编程语言的版本来实现埋点功能。采集到的行为数据被格式化为JSON,并通过HTTP POST请求发送至服务端API接口。
服务端的数据接入系统以Nginx为核心,负责接收来自各种终端SDK提交的数据请求。Nginx不仅作为高效的反向代理服务器,还配置了特定的模块用于接收API请求并将接收到的数据写入日志文件中,确保了系统的高可靠性和可扩展性。
为了实现实时的数据处理与传输,我们利用Flume构建了一套完整的日志收集流水线。具体来说,Flume的Source组件实时监控并读取由Nginx生成的日志文件;Channel组件则负责临时存储和管理数据流,保证数据在系统中的稳定传输;而Sink组件最终将经过处理的数据推送到Kafka消息队列中,以便后续进一步分析和应用。
通过这种方式,我们可以确保从多个终端采集到的行为数据能够高效、可靠地传输到后端系统,为后续的大数据分析提供坚实的基础。
2.2 软件架构
三、工作流程与设计思路
3.1 工作流程
完成数据采集技术构建和业务设计,在App、小程序的系统供应商配合下完成用户行为数据采集埋点,并基于埋点的数据构建线上用户行为标签和画像。
埋点设计
:确定需要收集哪些数据以及如何在应用程序或网站中设置这些数据的采集点。
SDK接入
:将软件开发工具包(SDK)集成到应用程序中。这通常是为了自动化数据收集过程,确保数据能够被有效地捕获和传输。
数据上传
:将收集到的数据上传到服务器或数据中心。这一步骤确保了数据的安全存储,并为后续分析做好准备。
数据收集/传输
:涉及数据的进一步收集和传输。这可能包括从多个来源收集数据,并将其传输到一个集中的位置进行处理。
数据存储/建模
:将数据存储在适当的数据库或数据仓库中,并开始对数据进行建模。这一步对于数据分析和洞察提取至关重要。
3.2 架构设计思路
所谓“埋点”,是数据采集领域(尤其是用户行为数据采集领域)的术语,指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。比如用户某个icon点击次数、观看某个视频的时长等等。
3.3 业务设计思路
埋点业务设计,首先需要根据业务分析明确采集的目标行为,进一步搞清楚应该在哪些地方埋什么样的点。过程中建议使用“事件模型( Event 模型)”来描述用户的各种行为,事件模型包括事件( Event )和用户( User )两个核心实体。基于4W1H模型描述用户行为可将整个行为描述清楚,要点包括:是谁、什么时间、什么地点、以什么方式、干了什么。通过这两个实体结合在一起就可以清晰地描述清楚用户行为。
四、第三方埋点SDK集成
引入SDK
:在终端应用配置文件添加 SDK 依赖,不同终端引入方式会有差异,具体操作步骤将在后续SDK技术文档中体现。
配置上报服务端API地址
:用于设置SDK上报API的服务端地址。
开启全埋点
:SDK 可以自动采集一些用户行为,如 App 启动、退出、浏览页面、控件点击。初始化 SDK 时,通过SDK提供的初始化方法可以配置开启全埋点。
五、API接入服务设计
不同渠道的埋点数据通过 HTTP API 发送给服务端API实现数据接入。采用Nginx作为WEB容器接收客户端SDK发送的数据,并且将之写到日志文件上。使用 Nginx 主要是考虑到其高并发、高可靠性与高可扩展性。
六、用户行为采集场景
通过应用场景梳理,实现以场景规划埋点,用场景检验埋点。
场景梳理可以抽象为三个层面:
通用基础场景
:共性操作统一考虑
重要操作场景
:重要操作整体归因
业务主流程场景
:以业务线定义完整过程
七、UI展示
项目🔗
https://gitee.com/xiaoxiangopen/analysis.git
原创 java代码 开源驿站