毕业设计题目:Django+Vue 基于大数据技术的游戏数据可视化系统

一、 系统总体设计目标

  1. 海量数据接入与处理:能够实时或准实时地处理游戏产生的海量数据,包括玩家行为日志、游戏事件、性能指标、经济系统数据等。

  2. 多维度深度分析:支持对用户行为、游戏运营、经济平衡、性能监控等多个主题进行深度、多维度的分析。

  3. 高性能查询与可视化:即使面对十亿级数据,也能在秒级内响应前端的查询请求,并提供流畅、丰富的可视化图表。

  4. 实时与离线分析并存:既支持对历史数据的离线深度挖掘,也支持对实时动态(如在线人数、实时交易)的监控。

  5. 灵活的交互式探索:允许运营和策划人员通过前端界面自由组合维度、筛选条件,进行探索式数据分析。


二、 系统基本框架(六层结构)

这是一个典型的Lambda架构或简化后的Kappa架构,以适应实时和离线的不同需求。

1. 数据采集层

负责从游戏客户端、服务器端实时收集数据。

  • 数据源

    • 游戏客户端:玩家点击、移动、任务、战斗、付费等行为埋点。

    • 游戏服务器:游戏逻辑事件、数据库变更日志、性能监控指标。

    • 数据库:玩家账号、资产等结构化数据的快照或增量。

  • 采集方式

    • SDK/Agent:在客户端和服务端集成SDK,将日志发送到日志代理。

    • 日志代理FilebeatFlume 或自研的TCP/UDP接收服务。

    • 消息队列:采集的数据首先写入高吞吐的消息队列,作为数据的缓冲区和分发中心。这是大数据架构的基石

    • 推荐技术Apache Kafka 或 RocketMQ

2. 数据存储与计算层

这是系统的核心,分为实时和离线两条处理管道。

  • 实时流处理管道

    • 计算引擎Apache Flink(首选,状态管理强大,Exactly-Once语义)或 Apache Spark Streaming

    • 处理逻辑:从Kafka中读取实时数据流,进行实时ETL、聚合计算(如每分钟在线人数、实时热力图、异常交易监控)。

    • 结果存储:将实时聚合结果写入OLAP数据库或高速缓存(如Redis),供前端实时查询。

  • 离线批处理管道

    • 存储:将Kafka中的原始数据落地到分布式文件系统,如 HDFS 或 阿里云OSS,构建数据湖。

    • 计算引擎Apache Spark 或 Hive。负责处理T+1的离线任务,进行复杂、耗时的数据清洗、关联和深度聚合,生成宽表。

    • 调度系统Apache Airflow 或 DolphinScheduler,用于定时调度复杂的Spark作业。

  • OLAP引擎

    • 角色:承接实时和离线处理的结果,并为前端即席查询提供极快的响应。这是可视化系统性能的关键

    • 推荐技术

      • ClickHouse强烈推荐,单表查询性能极致,非常适合游戏日志分析场景。

      • Apache Doris:兼容MySQL协议,易用性好,支持高并发。

      • StarRocks:Doris的升级版,性能更优。

3. 后端服务层

基于 Django 提供统一、安全的数据访问接口。

  • Django 项目结构

    • 核心Appgame_analytics_api

    • 模型:定义与OLAP数据库中表结构对应的Django模型(主要用于查询)。

    • 序列化器:使用 Django REST Framework 将查询结果序列化为JSON。

    • 视图:提供一系列RESTful API端点,如:

      • api/real-time/online_count/ (实时在线人数)

      • api/analysis/user_retention/ (用户留存分析)

      • api/analysis/payment_arpu/ (付费用户平均收入)

      • api/funnel/mission/ (任务漏斗分析)

    • 过滤器:使用 django-filter 实现复杂的数据筛选(如时间范围、服务器、渠道、玩家等级等)。

    • 认证与权限:JWT Token认证,区分不同角色(如运营、策划)的数据访问权限。

4. 前端可视化层

基于 Vue 构建高度交互式的数据工作台。

  • Vue 项目结构

    • 路由:使用 Vue Router 管理不同分析主题的页面。

    • 状态管理:使用 Pinia 管理全局状态,如当前选中的服务器、时间范围、用户分群等。

    • HTTP客户端:使用 Axios 调用后端Django API,并处理错误和加载状态。

    • 可视化组件

      • 图表库Apache ECharts(功能最全面,定制能力强),是游戏数据分析(如热力图、路径图、技能释放序列)的不二之选

      • 地图库:如果游戏有地理信息,可使用ECharts GL或Mapbox。

      • UI框架Element Plus 或 Ant Design Vue,用于快速搭建表单、表格和布局。

    • 典型页面

      • 实时监控大屏:全屏展示,包含在线、收入、服务器状态等核心实时指标。

      • 用户分析中心:留存、新增、活跃、流失用户分析。

      • 游戏运营分析:任务完成漏斗、关卡难度分析、活动效果评估。

      • 经济系统分析:虚拟货币流通、商品销量、物价波动。

      • 性能分析:服务器帧率、延迟、错误日志统计。

5. 数据服务与查询层

这一层是后端与数据存储之间的桥梁,优化查询性能。

  • ORM/Driver:Django应用通过 clickhouse-driver 或 sqlalchemy 直接连接ClickHouse执行查询。

  • 查询优化

    • 建立合适的物化视图(在ClickHouse中)。

    • 设计合理的表引擎和索引(如ClickHouse的 MergeTree 系列引擎)。

  • 缓存:对热点数据或聚合结果使用 Redis 进行缓存,减轻OLAP数据库压力。

6. 任务调度与协同层

负责协调整个数据流水线。

  • 调度器Apache Airflow,用于编排和监控离线ETL任务(如每日用户画像更新、周报数据生成)。

  • 监控告警:对数据流延迟、任务失败、数据质量进行监控和告警。


三、 核心工作流程(以“用户次日留存率”分析为例)

  1. 数据采集:玩家登录、登出事件被SDK采集,发送到Kafka。

  2. 离线处理

    • 凌晨,Airflow触发Spark作业。

    • Spark从HDFS上读取T日和T-1日的登录日志。

    • 通过计算,得到T日新增用户在T+1日再次登录的名单,并计算出留存率。

    • 将结果写入ClickHouse的 user_retention_daily 表。

  3. 前端查询

    • 运营人员在Vue前端选择日期范围和数据维度(如渠道、服务器)。

    • 前端通过Axios向Django发送请求:GET /api/analysis/user_retention/?start_date=...&channel=...

  4. 后端响应

    • Django视图接收到请求,组装SQL查询ClickHouse。

    • ClickHouse在毫秒到秒级内返回聚合结果。

    • DRF序列化器将数据转为JSON格式返回给前端。

  5. 可视化渲染:Vue前端接收到数据后,使用ECharts绘制出留存率趋势曲线图。

运行结果展示:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐