技术架构

神策分析的技术选型与架构实现
 
  1. 整体架构流程
      • 数据处理过程涵盖数据接入、传输、存储、查询等环节,遵循常见的数据平台处理原则。
      • 整体架构包括数据接入子系统、ETL 子系统、批量计算子系统、查询引擎、前端展示子系统、存储子系统、调度器、Monitor 元数据子系统等,各子系统相互协作,确保数据的顺畅流转与高效处理。
  1. 数据采集子系统
      • 前端操作采集:支持全埋点、可视化埋点和代码埋点三种方式。全埋点采集所有可采集控件操作,可视化埋点通过可视化选择采集,代码埋点则通过调用 SDK 接口发送数据。以京东提交订单页面为例,全埋点能知点击按钮,可视化埋点能知提交订单,代码埋点可获取更多自定义属性。神策分析以代码埋点为主,结合可视化埋点和全埋点,并针对 SDK 数据发送策略优化,如本地缓存、特定网络下发送、多种触发发送条件及强制发送接口等。
      • 后端日志采集:相比前端采集,具有传输时效性强、数据可靠性高、能获取更丰富信息等优势,建议优先采集后端日志,并提供相应 SDK 和工具。
      • 业务数据采集:针对供销存等业务数据,提供导入工具和 API 完成数据导入。
      • ID - Mapping:通过自定义用户 ID 和 track_signup 接口实现不同数据源用户行为打通,目前采用一对一映射方案。
  1. 数据接入子系统:采用 Nginx 接收 API 数据并写入日志,Extractor 模块读取处理日志并发布到 Kafka,同时进行数据格式校验等操作,Kafka 作为缓冲和备份,并对外提供 API。
  1. 数据模型:采用 Event + User 模型。Event 描述用户行为,由用户 ID、Event 名称和自定义属性组成,以追加为主,有有限删除能力;User 描述用户特征,由用户 ID 和自定义属性组成,可任意修改,其属性来源多样。
  1. 数据导入与存储
      • 存储优化:分为 WOS(Kudu)和 ROS(Parquet),Kudu 用于实时写入,达到阈值后转换为 Parquet 格式存储,Parquet 按日期和事件名称分区,文件内有序并含索引,以减少扫描量。
      • 关键模块:包括 KafkaConsumer 负责从 Kafka 写入 Kudu,KuduToParquet 实现 Kudu 到 Parquet 转换,LoaderDemon 进行元数据操作,Merger 定期合并 Parquet 碎文件。
  1. 数据查询子系统:WebServer 接收查询请求并转发给 QueryEngine,QueryEngine 翻译成 SQL 在 Impala 中查询,通过多种优化手段保证秒级查询性能,如优化查询模型、使用聚合函数替代 Join、精细缓存、提供抽样功能等。
notion image
notion image
notion image
notion image
notion image

私有化部署

notion image

其他

读写分离

读写分离——WOS 文件需要定期转换为 ROS 文件,同时因为 ROS 在数据仓库当中一般是分为多个 Partition 存在,所以一个 WOS 可能转化为多个 ROS。转化的过程需要是原子操作,因为对上层查询引擎来说,同一时刻,同样的数据只能有一份。
notion image
 
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP