返回
腾讯奕星:秒级海量游戏营销数据去重的技术实践
见解分享
2023-12-15 23:54:52
导言
在当今数字营销时代,游戏行业也不例外。为了吸引和留住玩家,游戏公司不断推出各种营销活动。随着营销活动的增加,随之而来的是海量数据的涌入,而活动参与人数的去重一直是一项难点。本文将深入探讨腾讯游戏营销活动分析系统——奕星,在去重服务上的技术思路和迭代方案。
技术背景
腾讯内部每天都需要对海量的游戏营销活动数据进行效果分析。这些数据包括玩家参与活动的时间、参与方式、设备信息等。为了确保分析结果的准确性,需要对活动参与人数进行去重处理,即去除重复的玩家记录。
传统的去重方法主要基于哈希算法和布隆过滤器。然而,随着数据量的不断增加,这些方法逐渐难以满足腾讯奕星的高并发和低延迟要求。
技术方案
为了解决上述挑战,腾讯奕星团队提出了基于ClickHouse的秒级去重解决方案。ClickHouse是一种列式数据库,具有高性能、高并发和高压缩率等特点。
算法设计
奕星的去重算法主要分为两步:
- 离线数据预处理: 将历史活动参与数据导入ClickHouse,并创建二级索引。
- 在线实时去重: 当新数据进入系统时,通过二级索引快速查找已参与的玩家记录,并进行去重处理。
系统架构
奕星去重系统架构如下:
+----------------+
| Data Source |
+----------------+
|
|
V
+-----------------------------------+
| |
| Spark 数据处理 |
| |
+-----------------------------------+
|
|
V
+-----------------------------------+
| ClickHouse 数据库 |
| |
+-----------------------------------+
|
|
V
+-----------------------------------+
| 实时去重服务 |
| |
+-----------------------------------+
系统流程
奕星去重系统的流程如下:
- Spark定期从数据源读取历史活动参与数据,并进行数据预处理,包括数据清洗、格式转换和二级索引创建。
- 当新数据进入系统时,实时去重服务从ClickHouse数据库中查询二级索引,快速查找已参与的玩家记录。
- 如果找到匹配记录,则进行去重处理,避免重复记录。
- 如果没有找到匹配记录,则将新数据插入ClickHouse数据库。
性能优化
为了进一步提升去重性能,奕星团队进行了以下优化:
- 二级索引优化: 通过对二级索引进行分片和并行查询,提高索引查询速度。
- 缓存优化: 将最近去重的玩家信息缓存到内存中,减少对ClickHouse数据库的查询次数。
- 并发控制: 采用分布式锁机制,控制并发查询和更新操作,避免数据不一致。
实践经验
经过实际应用,腾讯奕星去重系统取得了显著成效:
- 去重效率大幅提升,秒级处理海量数据,满足业务需求。
- 系统稳定可靠,保障了数据的准确性和完整性。
- 灵活可扩展,支持业务快速增长和新需求的接入。
结语
腾讯奕星秒级海量游戏营销数据去重解决方案基于ClickHouse数据库,通过算法设计、系统架构和性能优化,有效解决了大数据量下活动参与人数去重的挑战。该方案不仅满足了腾讯内部的需求,也为其他行业海量数据去重提供了借鉴意义。