海量游戏数据的即时分析和挖掘
在 360 游戏, 我们每天要产生数亿条数据, 而且这个数据量每天都在增长, 其中包括用户的充值记录, 游戏数据, 各种行为等等. 如何高效地分析和挖掘这些海量数据是一个非常大的挑战.
我们首先遇到了数据的生产问题. 如何生产所需要的数据, 同时不影响主业务流程? 我们分为前端生产和后端生产. 不敏感的数据主要由前端生产, 而敏感的数据由后端生产. 而生产的方式也有多种, Web Server 的访问日志, 各个模块和子系统的访问日志, 主动增加的业务日志等等.
第二个问题是数据的汇总. 我们的服务器不是简单的一台, 而是多个机房的服务器组, 如何及时地将所有日志汇总? 我们使用了 Linux 自带的 syslog, 由 syslog 组成一个分布式日志系统, 最终日志被汇总到中心节点组.
第三个问题的数据的存储和获取. 存储是为了获取, 所以存储的方式是由获取方式决定的. 海量的数据显然无法存储在单台机器的硬盘上, 如果人工定期备份到磁带上也不合适, 无法方便读取. 我们分级存储的策略, 即时数据在内存中, 最近常用的数据存储在硬盘里, 备份的数据在 Hadoop 的 HDFS. 对于外部来说, 无法是历史的数据还是未来的数据(数据订阅服务), 都可以使用统一的接口来获取, 因为我们开发了日志读取服务, 将存储结构对日志的读取者隐藏. 这个决定让之后的日志分析和挖掘变得非常轻松.
第四个问题的日志的分析和挖掘. 既有历史数据的挖掘用于未来决策, 也有实时的统计以便像股票趋势图一样实时的展示在管理层人员的屏幕上让其把握趋势. 目前, 我们已经实现了常用的统计方法配置化. 统计是一门科学, 不仅仅是简单的代码编写, 还需要学科理论来支撑, 我们需要这样的人才, 如果你有兴趣, 可以联系我(邮件地址在 http://www.ideawu.net/blog/about).
最后一个问题是统计结果的展示. 这同样属性统计科学的范畴. 我们目前有常用的柱状图, 线图, 表格等等. 根据我在 另一篇日志中提到的数据模型, 我们的数据展示是可以细化和概化的, 既可以展示总体的数据, 也可以细化到分类来展示.
在业界来说, 只有少数公司才有如此大量的数据需要处理, 这是一个挑战, 同时机会也在向你 – 这篇日志的读者 – 开放, 如果你愿意用你的理论和实践能力来处理海量数据, 欢迎加入我们! 再一次, 联系地址见上文.
Related posts:
你现在看的文章是: 海量游戏数据的即时分析和挖掘