当前位置: 首页 > article >正文

告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系

用户行为数据埋点指标是数据仓库中不可或缺的重要数据源之一,同时也是企业最宝贵的资产之一。通常情况下,用户行为数据分析包含两大数据源:用户行为分析日志和上游关系型数据库(如 MySQL)。基于这些数据,企业可以进行用户增长分析、用户行为研究,甚至通过用户行为分析精准排查用户问题。

用户行为数据分析的挑战

用户行为数据分析的特点决定了要构建一套可扩展、灵活且低成本的分析架构并非易事,具体表现在以下几个方面:

  1. 高流量和大容量:用户行为数据的产生量非常大,对存储和分析能力要求高;
  2. 兼顾多种分析需求:既需支持 BI 报表的静态展示,也需满足灵活的 Adhoc 查询;
  3. 多样化 数据格式:用户行为数据通常包含结构化数据与半结构化数据(如 JSON);
  4. 实时性要求:需要对用户行为快速响应,实现及时反馈。

由于这些复杂性,大多数初创企业和中小型公司通常会选择通用埋点系统(如 Google Analytics、Mixpanel)作为用户行为分析的起点。这些系统只需在网站中插入 JSON 代码,或在 APP 中嵌入 SDK,即可自动采集并上传埋点数据,生成访问量、停留时间、转化漏斗等指标。 

然而,通用埋点系统虽然简单易用,但在实际使用中存在以下不足:

  1. 数据 明细 的缺失。 通用埋点系统往往不会提供用户具体的访问明细日志,只能在 UI 中查询预设的报表;
  2. 自定义查询能力不足。 通用埋点系统的查询模式并非标准 SQL 查询接口,当数据科学家希望构建复杂的 adhoc 查询时,由于缺少 SQL 能力,难以支持复杂的自定义查询;
  3. 成本快速上升。 通用埋点系统一般采用阶梯计费模式,往往到了一个阶梯时,费用会翻倍。随着企业流量的持续增长,如果要查询更大范围的用户行为数据时,成本会迅速增加。

自建用户行为分析体系的复杂性

为了应对通用埋点系统的局限性,不少企业在业务增长到一定阶段后,往往都会选择自建一套用户行为埋点数据分析体系。通常情况下,传统自建架构多基于 Hadoop 大数据生态,典型实现流程如下:

  1. 在客户端(APP、网站)中埋入 SDK,采集用户行为日志 activity logs;
  2. 使用 Activity gateway 埋点指标网关,收集客户端发来的日志,并将日志转到 Kafka 消息总线;
  3. 利用 Kafka 将日志 logs 落到 Hive 或 Spark 等计算引擎;
  4. 通过 ETL 工具将数据导入数据仓库,生成用户行为分析报表。

虽然这一架构在功能上能够满足需求,但其复杂性和维护成本极高:

  1. Kafka 需要依赖 Zookeeper ,还需要配备 SSD 硬盘保障性能。
  2. 从 Kafka 到 Data Warehouse 需要 kafka-connect ;
  3. Spark 要运行在 YARN 上,ETL 需要 Airflow 管理;
  4. 当 Hive 存储达到上限,可能还需要将 MySQL 换成 TiDB 等分布式数据库。

这种架构不仅需要大量的技术团队投入,还极大增加了运维负担。而在企业不断追求降本增效的背景下,传统 Hadoop 架构已不再适合需要简单、高效的业务场景。

新选择:基于 Databend Cloud 的轻量化用户行为分析

随着技术的演进,企业在设计用户行为数据埋点架构时有了新的选择。Databend Cloud 凭借简洁的架构和灵活性,提供了一种高效且低成本的用户行为分析解决方案。

  1. Databend Cloud 的架构特性

    1. 100% 面向对象存储,完全存储计算分离,显著降低存储成本;
    2. Rust 编写的 Query 引擎性能高,价格低廉。在计算资源闲置时自动休眠,不产生额外费用;
    3. 支持 100% ANSI SQL ,支持半结构化数据分析(JSON 和自定义 UDF)。当用户有一些比较复杂的 JSON,可以用内置的 JSON 分析能力或自定义的 UDF,分析半结构化数据;
    4. 内置 Task 调度驱动 ETL,完全无状态,自动弹性伸缩。

  1. 典型架构实现

企业可以通过以下流程快速搭建用户行为数据分析体系:

  • 日志采集与存储:不再需要 Kafka,用户直接将埋点日志通过 vector 以 ndjson 格式落到 S3。
  • 数据摄入与处理:在 Databend Cloud 中创建一个 copy task 任务,自动把日志拉出来,落到 S3。很多时候,S3 在 Databend Cloud 中可以当做一个 stage,落到 stage 里面的东西就可以被 Databend Cloud 自动吸进来,然后在 Databend Cloud 中进行处理,再从 S3 转出去。
  • 查询与报表分析:通过自动休眠的 Warehouse 运行 BI 报表/即席查询,休眠时不产生任何费用。

通过上述方式,Databend Cloud 能够以最简化的方式实现企业对高效用户行为分析的需求。

案例:Databend Cloud 在用户行为分析的应用实践

某互联网应用公司有一个典型的用户行为分析场景,在做架构选型时选择了 Databend Cloud 进行用户行为数据分析体系的搭建。在使用 Databend Cloud 后,该用户放弃了 Kafka,直接用 Databend Cloud 建了一个 stage ,把用户行为日志落在 S3 中,再用 task 导进 Databend Cloud 中。最终,该公司仅用一个下午便完成了 POC,从复杂的 Hadoop 架构切换到 Databend Cloud,极大简化了运维和操作成本。

用户所需要的准备工作非常简单。首先,准备两个 Warehouse,一个用于 Task 摄入数据,一个用于 BI 报表查询。一般来说,摄入数据的时候可以用一个规格小点的 Warehouse,查询的 Warehouse 规格高一点,因为查询不会一直查,可以节省更多成本。

然后点击 connect 获得一个连接串,这个连接串可以放在 BI 报表用于查询。Databend 提供了各种语言的 Driver。

接下来的准备工作只有三步,一是建表,其中的字段与 NDJSON 格式的日志一致。然后创建一个 stage,将存放用户行为日志的 S3 目录录进来,然后再创建一个 task ,每一分钟或者十秒钟执行一次。它会自动把 stage 里的文件导进来,然后自动把它清理掉。准备工作完成后,就可以源源不断地把用户行为日志录进来。

架构对比与收益

通过对比通用埋点系统、传统 Hadoop 架构和 Databend Cloud,Databend Cloud 的优势显而易见:

  • 架构简洁性:摆脱了复杂的大数据生态,无需 Kafka、Airflow 等组件。
  • 成本优化:利用对象存储和弹性计算实现低成本的存储与分析。
  • 灵活性与性能:支持高性能 SQL 查询,满足多样化的业务场景。

此外,Databend Cloud 提供了快照机制,支持数据的时点回溯(Timetravel),确保数据安全性和可恢复性。

在构建用户行为数据埋点系统时,除了存储、计算方面的成本,维护成本也是架构选型的重要因子。Databend Cloud 通过对象存储与计算分离的架构革新,彻底改变了传统用户行为数据分析体系的复杂性。企业可以轻松搭建一套高性能、低成本的埋点分析架构,实现从数据采集到分析的全流程优化。这一方案无疑为企业在降本增效的同时释放了数据的最大价值。

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

👨‍💻‍ Databend Cloud:databend.cn

📖 Databend 文档:docs.databend.cn/

💻 Wechat:Databend

✨ GitHub:github.com/databendlab…


http://www.kler.cn/a/417901.html

相关文章:

  • Scala学习记录,全文单词统计
  • 《Python基础》之Python中可以转换成json数据类型的数据
  • C++练级计划-> 《IO流》iostream fstream sstream详解
  • 开源 - Ideal库 - Excel帮助类,TableHelper实现(三)
  • 分布式系统中的Dapper与Twitter Zipkin:链路追踪技术的实现与应用
  • 量化交易系统开发-实时行情自动化交易-8.2.发明者FMZ平台
  • 基于VMware 的 deepin 系统 学习 安装 1Panel mysql redis
  • Elasticsearch数据冷热分离
  • IDEA全局设置-解决maven加载过慢的问题
  • 【经典】星空主题的注册界面HTML,CSS,JS
  • Java全栈开发:旅游网站设计与实现
  • C++类中多线程的编码方式
  • Java代码操作Zookeeper(使用 Apache Curator 库)
  • HarmonyOS4+NEXT星河版入门与项目实战(24)------Stage模型
  • Flink CDC 使用实践以及遇到的问题
  • 基于VUE3集成天地图
  • 【Golang TCP应用】
  • 指针与引用错题汇总
  • upload-labs 靶场(11~21)
  • 网络安全之访问控制
  • 你的网站真的安全吗?如何防止网站被攻击?
  • 【AI】JetsonNano启动时报错:soctherm OC ALARM
  • 【ETCD】etcd中配置参数详解
  • 高级java每日一道面试题-2024年11月29日-JVM篇-常见调优工具有哪些?
  • org.apache.commons.lang3包下的StringUtils工具类的使用
  • Maven 内置绑定到底怎么回事?