当前位置:

首页 > 系统应用 > 直播实录|37手游如何用StarRocks实现用户画像分析

直播实录|37手游如何用StarRocks实现用户画像分析

作者:向伟靖,37 手游大数据开发工程师37 手游使用 StarRocks 已有半年多,在此期间非常感谢 StarRocks 团队的积极协助,感受到了服务速度和产品速度一样快,辅导我们解决了产品使用上的一些问题。首先介绍下 37 手游的背景。37 手游主要专注于移动端游戏发行和游戏运营,成功发行运营

作者:向伟靖,37 手游大数据开发工程师37 手游使用 StarRocks 已有半年多,在此期间非常感谢 StarRocks 团队的积极协助,感受到了服务速度和产品速度一样快,辅导我们解决了产品使用上的一些问题。首先介绍下 37 手游的背景。37 手游主要专注于移动端游戏发行和游戏运营,成功发行运营了《斗罗大陆:魂师对决》、《云上城之歌》等游戏。数据是游戏运营的基石,查询效率对业务人员的体验感受非常重要,因此提升查询效率是我们团队一直努力的目标。本次分享主要内容包含:37 手游的数据架构、StarRocks 对数据架构产生的影响,以及 StarRocks 在用户画像实践上的应用。业务和技术的痛点在业务上,我们遇到了以下几个主要痛点:第一,数据分析性能不足。因为我们游戏用户维度指标特别多,数据需要复杂关联查询,才能得到相应的分析指标。有时候甚至还需要传说中的 SQL Boy 帮忙取数。还有就是高并发查询时间周期特别长的数据,响应特别慢,例如 LTV 这些分析指标,就需要查询数据周期特别长。这些也是业务经常反馈比较多的问题。第二,实时分析场景不足。主要体现在运营推广等数据实时清洗出现延迟,影响到游戏运营和广告投放的策略。同时,我们还面临几项主要的技术难点:第一,大数据产品复杂组件多,运维成本高。第二,实时同步 MySQL 数据到 OLAP 查询引擎秒级查询。当前部分业务数据存储在 MySQL 上需要同步到 OLAP 进行提速查询,所以技术需要保证业务数据一致性、时效性和查询性能。第三,千万级维表数据关联查询性能低下。第四,业务发展使数据快速膨胀,线性扩容成本高。旧数据架构和 OLAP 选型先来瞧瞧37手游的数据架构,这可是个相当经典的实时离线架构哦。从下往上看,存储层由离线传统的Apache Hadoop(以下简称Hadoop)集群,加上数据湖Apache Hudi(以下简称Hudi)组件和Apache Kafka(以下简称Kafka)消息队列构成;实时离线处理引擎层则是由Apache Hive(以下简称Hive)和Apache Flink(以下简称Flink)组件组成;分析层是众多且复杂的OLAP组件;业务层主要提供接口、BI报表展示等功能。其中分析层OLAP组件众多,数据分析也相对分散,这就意味着使用这些组件的成本会比较高。​以下是我们用过的 OLAP 组件,各有优缺点:1)Apache Kylin(以下简称 Kylin):作为国产第一个 Apache 顶级项目,当时让国内众多开发者看到了原来我们可以离开源项目这么近。如今国内众多优质开源项目百花齐放,比如我们使用的海豚调度系统、StarRocks 等。Kylin 利用空间换取时间的方式,提前预构建好数据进行快速查找。这就使得构建数据需要消耗大量计算资源和存储资源,时效性也比较差,慢慢变得不太适用 37 手游的场景。2)ClickHouse:这匹俄罗斯黑马的单表查询性能特别强悍,但是随着业务的深入使用,从单机到集群构建,发现其运维复杂,且稳定性和数据一致性也有问题。这个时候就要根据我们的业务诉求开始调研其他 OLAP 组件。3)StarRocks:我们是从技术博客上发现了 StarRocks。随着对 StarRocks 的系统架构和产品特性深入了解后发现,其产品能力基本解决了我们的痛点。主要体现在以下四点:部署监控运维简单,兼容 MySQL 协议和标准 SQL 语法,大表多表关联查询性能优异,支持不同数据来源高效导入和支持数据实时更新。经过业务数据导入进行测试,StarRocks 基本满足我们的测试性能基准。当前线上部署了3 台 FE 和 5 台 BE , FE 的硬件配置单台 8核 32G, BE 的硬件配置单台 32核 128G。当前集群相对较小,后面随着业务迁移会逐渐申请扩容。​这里有一张简短的数据流程图,可以看出旧架构数据流向和使用的中间组件,这里使用 ElasticSearch 存储用户画像数据来提供服务应用查询,中间的 Kafka 作为消息队列经过 Logstash 消费到 ElasticSearch。为什么历史数据会推到 Kafka 上呢?主要在于 ElasticSearch 读写性能瓶颈。开始我们尝试了将离线的 Hive 表,通过外部表的方式直接同步到 ElasticSearch 。在这种方式下,十亿级别历史数据初始化到 ElasticSearch,会导致其服务负载高、同步时间特别长。因此才把历史数据推到 Kafka 利用其削峰填谷的能力,减轻 ElasticSearch 的部分压力。但是实践证明减缓不了多少压力,另外业务读取和实时离线写入也会出现因负载高导致业务查询超时的情况。此外,ElasticSearch 不能满足复杂关联聚合查询的需求,不同维度索引无法关联并且没有强大的 SQL 查询能力。ElasticSearch 的限制导致了在复杂查询场景下不能满足需求。简单总结一下画像选型的变更时间线:​ElasticSearch 在用户画像应用使用时间周期是比较长的。因为 ElasticSearch 单索引能快速满足简单的圈选人群需求。但是随着业务发展,需要索引间复杂关联分析,此时 ElasticSearch 支持不了。ClickHouse 会出现大表关联查询性能低、数据一致性等问题。最终 StarRocks 测试表现性能相当优异,千万级维表关联查询秒级返回,数据实时同步延迟低等。​从上图可以看到,测试事实表数据量两亿多,维表数据量四千多万。ClickHouse 的关联查询时间大概 50s左右, StarRocks 关联查询在 1s 内,性能差异明显。ClickHouse 的关联查询是直接把维表数据全部读取出来进行匹配关联查询,而 StarRocks 对这块做了关联优化下推,这也体现了 StarRocks 大表关联查询性能优异。替换 StarRocks 后的用户画像架构​替换为 StarRocks 后的数据架构新增了使用 FlinkCDC 实时同步 MySQL 数据到 OLAP 引擎上,这样就增加了关联数据的多样性。读写性能大幅度提升:1)满足 ElasticSearch 旧架构读写性能;2)内置多种导入方式,性能高效,测试使用 Broker load 导入 Hive 十亿级数据 ,120 分钟就能完成处理,资源占用低,也解决了旧架构读写的问题;3)增加了联邦查询功能,提供外部表连接 Hive 等异构数据源查询加速。关联查询性能优异:1)满足了画像不同维度数据的复杂关联;2)测试 ClickHouse 关联查询千万级维度表,查询时长为 1min,而 StarRocks 是在 5s 内;3)画像时可以利用 Bitmap 位图技术对复杂人群圈选进行提速。​上图是一个简单数据开发流向图,从 Hive 离线清洗出用户画像纵表、宽表和基础维表。纵表就是一个用户、一个标签、一个值。例如,一条记录是,用户小明,标签age,标签值18。另外一条记录是,用户小明,标签sex,标签值man。这在纵表中存有两条记录,在宽表里面构建,就只有一条记录,两列分别存取年龄和性别的标签值。然后把开发好的纵表同步到 StarRocks 上用于构建 Bitmap 表,宽表同步到 StarRocks 的主键表,维表使用 StarRocks 外部表连接。实时数据同步到对应的基础数据表上用于关联查询。

用户画像Bitmap表的开发设计

​基于数据流向,这里首先阐述下 Bitmap 数据表的开发设计。上图展示了 Hive 明细纵表推送到 StarRocks 后的更新模型表。在 StarRocks 聚合模型的 Bitmap 表中,就有构建 Bitmap 表的一个 SQL 语句,到此 Bitmap 表构建设计已完成。我们在明细数据聚合表设计上遇到过一些性能问题。一开始,我们根据 Hive 直接设计 StarRocks 更新表 Key 和桶顺序分别是 uid,tag_type 这样的顺序的。但是我们构建 Bitmap 表的时候基本是使用 where tag_type in 的方式来查询构建的,导致每次读取 IO 基本打满,影响实时数据写入。后来,我们重新设计表的 Key 值顺序,把 tag_type 提到 uid 前,修改之后读取 IO 只占用 20% 以下了。

用户画像查询性能对比

​再看下简单查询性能对比,当前明细纵表数据接近六百亿数据,100多个标签值,构建完 Bitmap 表后数据量在四十万左右。上图简单查询对比了 Apache Impala(以下简称 Impala)和 StarRocks 的 Bitmap 表的圈选速度,使用 StarRocks 后提升了接近 26 倍。​上图左是一个 Bitmap 表使用的 SQL 示例,右边是画像业务实现的 SQL 逻辑。左边示例中,应该填写其他维度画像的 Bitmap 表,或者填写其它基础数据表进行复杂关联查询圈选,这样可能会更好地展现 StarRocks 优势。

用户画像提供的基础查询服务

​在基于 Bitmap 表实现的人群圈选的功能模块中,现在支持按规则或非规则创建人群包,自定义上传人群包,自由组合创建人群包。 未来会支持外联更多数据我们还直接使用了 StarRocks 提供的监控模版直接使用配置相关监控告警。下图是 StarRocks 实时消费 Kafka 监控面板。​展望接下来我们会有更多业务接入 StarRocks,替换原有 OLAP 查询引擎;运用更多的业务场景,积累经验,提高集群稳定性。未来希望 StarRocks 优化提升主键模型内存占用,支持更灵活的部分列更新方式,持续优化提升 Bitmap 查询性能,同时优化多租户资源隔离。今后我们也会继续积极参与 StarRocks 的社区讨论,反馈业务场景。之前我经常参加社区群进行讨论,在社区群里获得过很多技术上的支持和答疑。在此,感谢流木大佬、颖婷等 StarRocks 社区伙伴在技术上的耐心指导!本文整理自 37 手游 Meetup 直播收看视频回顾请至:https://www.bilibili.com/video/BV1ES4y1v7Eu?spm_id_from=333.999.0.0如需完整版讲师 PPT,请添加小助手微信 StarRocks-1,报暗号“37”关于 StarRocks StarRocks自创立至今,已逾两年时光。这期间,它始终聚焦于打造世界一流的新一代极速全场景MPP数据库,旨在助力企业构建“极速统一”的数据分析新模式,为企业的全面数字化经营提供有力支撑。截至目前,StarRocks已成功帮助腾讯、携程、顺丰、Airbnb、滴滴、京东、众安保险等超110家大型用户,为他们构建了全新的数据分析能力。在这些用户的生产环境中,稳定运行的StarRocks服务器数量高达数千台。2021年9月,StarRocks源代码正式开放,在Github上的星数现已突破3000个。StarRocks的全球社区更是发展迅猛,至今已有超百位贡献者,社群用户数也突破了5000人,还吸引了几十家国内外行业头部企业积极参与共建。
本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
系统应用 大数据
相关文章 更多
Win11专业版和家庭版安装流程有什么区别
Win11专业版和家庭版安装流程有什么区别

Windows 11 家庭版和专业版在安装步骤上并无本质差异,主要区别在于产品密钥激活和功能解锁。本教程指导你如何检查硬件兼容性、使用官方媒体创建工具制作安装盘,以及在安装过程中正确选择版本。同时解析安装后如何验证激活状态,以及从家庭版升级到专业版的正规路径,确保系统稳定且合规。

除了界面,Windows11和Win10还有哪些实质差异
除了界面,Windows11和Win10还有哪些实质差异

除了开始菜单的变化,Windows 11在TPM 2.0安全要求、窗口贴靠布局、驱动兼容性以及系统更新策略上与Windows 10有显著不同。本文详解两者实质差异,助你判断是否值得升级。

win10专业版和家庭版关闭更新方法差别在哪
win10专业版和家庭版关闭更新方法差别在哪

详解Windows 10家庭版和专业版在关闭或暂停自动更新时的操作区别。涵盖通用的暂停更新、活动时间设置,以及专业版独有的组策略管理入口,帮助不同版本用户合理控制更新节奏,避免系统安全风险。

win10暂停更新最长可以设置多少天怎么操作
win10暂停更新最长可以设置多少天怎么操作

想知道Win10暂停更新最长能设多久?官方支持最长暂停35天。本文图文演示如何在设置中开启暂停、确认生效日期,以及到期后如何恢复更新或调整活动时间以避免打扰。

win10怎么屏蔽win10系统更新的弹窗提醒
win10怎么屏蔽win10系统更新的弹窗提醒

本教程介绍如何在Windows 10中通过暂停更新、设置活动时间及安排重启时间来减少更新弹窗提醒。包含通知隐藏技巧及更新失败排查步骤,帮助你在保持系统安全的同时减少工作打扰。

win10更新后台占用CPU过高怎么关闭自动更新
win10更新后台占用CPU过高怎么关闭自动更新

Windows 10 更新时 CPU 占用过高怎么办?本教程演示如何通过任务管理器确认更新进程,使用“暂停更新”功能临时停止后台活动,并设置“活动时间”防止自动重启干扰工作。提供安全的故障排查步骤,避免直接禁用系统服务带来的风险。

win10正在玩游戏弹出更新重启怎么禁止
win10正在玩游戏弹出更新重启怎么禁止

Win10玩游戏时突然弹出更新重启提示?不要强制关机。本文教你如何通过设置“活动时间”避免自动重启,利用“安排重启”规划空闲时间,以及合理使用“暂停更新”功能。区分不同状态下的应对策略,既保护游戏进度又维持系统安全。

win10自动更新抢占网络带宽该怎么处理
win10自动更新抢占网络带宽该怎么处理

Win10自动更新抢占带宽导致游戏卡顿或网页打不开?本教程教你通过任务管理器确认更新进程,利用暂停更新、按流量计费连接和传递优化带宽限制,精准控制Windows Update下载速度,解决网络拥堵问题。

win10家庭版有没有简单办法阻止强制更新
win10家庭版有没有简单办法阻止强制更新

Win10家庭版用户常受强制更新困扰。本文详解如何利用系统自带的暂停更新、活动时间和安排重启功能,在不破坏系统稳定性的前提下减少更新打扰,并分析注册表修改的风险及系统支持现状。

win10升级新版本后取消开机密码失效怎么修复
win10升级新版本后取消开机密码失效怎么修复

Windows 10更新后开机突然要求输入密码?本文解析自动登录失效的真实原因,提供通过netplwiz重新保存凭据、关闭Windows Hello干扰及排查账户策略的完整步骤,助你恢复免密进入桌面。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)
Windows

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。