StarRocks实战——华米科技埋点分析平台建设

2024-04-05 06:52

本文主要是介绍StarRocks实战——华米科技埋点分析平台建设,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

一、原有方案及其痛点

二、引入StarRocks

三、方案改造

3.1 架构设计

3.2 数据流程

3.3 性能指标

3.4 改造收益


前言

     华米科技是一家基于云的健康服务提供商,每天都会有海量的埋点数据,以往基于HBase建设的埋点计算分析项目往往效率上会相对比较低,查询方式不够灵活 。

    在埋点分析中,用户往往是基于单维度或者多维度组合去观测某个指标,这里的维度可以是时间,事件名称,城市或者设备属性等,指标可以是用户量、某个埋点的次数等。在此海量埋点数据背景下,如何比较灵活,高效的完成维度+指标的计算,满足用户快速查询分析的需求,是一个值得探索的问题。基于高效的OLAP引擎建设埋点分析平台就成为了业务发展中的重要一环。

一、原有方案及其痛点

    在之前的架构中,华米科技的埋点数据统计相关信息,需要根据统计的指标,优先将需要计算的指标(例如PV、UV)通过Spark /Hive进行预计算操作,然后写入到HBase中,对下游相关用户提供点查的能力。

对于该方案,以下三点是较为不便的:

  • 在HBase中,数据以KV形式存储,只能提供点查能力,不具备复杂的统计分析能力;
  • 无法使用Bitmap 相关技术,将需要的指标事先计算出来,方式不够灵活,不能做集合操作;
  • 流程链路较长,维护复杂度高,不具备模型抽象能力,业务升级有所不便

二、引入StarRocks

   针对数据存储层的问题,着力于寻找一款高性能、简单易维护的数据库产品来替换已有的 Spark + HBase 架构,同时也希望在业务层上能突破HBase点查的限制,通过实时多表关联的方式拓展业务层的需求。

    目前市面上的 OLAP 数据库产品很多,诸如 Impala、Druid、ClickHouse 及 StarRocks。在经过一系列的对比之后,选择了 StarRocks 来作为 华米的 OLAP 引擎,替换原有的HBase成为存储层的新选择。

    从上面的对比可以看出,StarRocks是一款极速全场景 MPP企业级数据库产品,具备水平在线扩缩容,兼容Mysql协议和Mysql生态,提供全面向量化引擎与多种数据源联邦查询等重要特性,在全场景OLAP业务上提供统一的解决方案,适用于对性能,实时性,并发能力和灵活性有较高要求的各类应用场景。

三、方案改造

3.1 架构设计

   当前埋点数据经由网关转入kafka,采用Hudi on Flink 的模式进行数据清洗,过滤,转换,基于流式数据湖构建OLAP的预处理层。根据数据特性和写入的性能要求以及成本的权衡,分别基于Hudi 的 Upsert 和 Append 模式构建 DWD 层(借助 Hudi 的去重、追加能力),定时离线处理数据转入DWS,考虑数仓的整体架构以及成本优化,将DWS数据定时离线导入到StarRocks中,最后经由统一的查询分析平台查询StarRocks数据。

3.2 数据流程

 详细流程如下:

(1)对原始数据进行数据转换处理,然后根据数据特性,分别以Upsert 模式和Append模式接入Hudi(对数据重复不敏感的业务数据直接以Append 模式高效写入Hudi)

(2)将产出的数据经由 Broker Load 写入带有Btimap字段的聚合模型,生成业务Btimap数据;

(3)根据业务需求,自定义对Btimap进行集合操作(当前的应用场景为生成PV,UV等数据);

(4)用户根据查询分析平台进行自助业务指标查询;

3.3 性能指标

  通过StarRocks的监控平台可以看到查询的平均耗时在100ms左右,P99延迟大概在250ms 左右,能够很好地满足埋点数据分析平台业务上的需求。

3.4 改造收益

  • 高效:能够快速响应用户的查询分析需求,很多大查询效率从分钟级别降低至秒级。
  • 灵活:满足多维度、多时间段自由组合的指标统计分析,不需要提前计算冗余统计指标。
  • 节约空间:StarRocks 自身的高效存储结构,同等业务量的数据存储成本较以往下降20%;
  • 简单:相较于 ClickHouse,维护管理所需的人力成本有所降低。
  • 便捷:用户自助查询便捷,取数体验有所提升,部分指标点查速度从之前的分钟级降低到秒级,部分指标可以达到毫秒级。

参考文章:

https://mp.weixin.qq.com/s/ci9iRMz4FvqcXs5FtBSxKg

这篇关于StarRocks实战——华米科技埋点分析平台建设的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/877911

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制