一种游戏日志实时处理系统及方法

文档序号:9667243阅读:1518来源:国知局
一种游戏日志实时处理系统及方法
【技术领域】
[0001] 本发明涉及一种游戏日志实时处理系统及方法。
【背景技术】
[0002] 随着数据平台接入的游戏量越来越多,各个游戏的层次、级别、受关注度不同,以 至于对日志解释、处理、统计、分析甚至于表现形式都有着不同的需求。每当一款对外测试 的游戏上线和游戏日志数据接入后,一些关键的指标,包括运营、监控、计费等,对实时性的 要求都是希望在"秒级"及时刷新,实时报告,实时监控。图1是现有技术的采用Hadoop 方式进行指标统计的工作流程图,当接入一个新的游戏日志时,结合Python的脚本对 HDFS(HadoopDistributedFileSystem,Hadoop分布式文件系统)上面的游戏日志进行 处理和拆分。最终根据配置字段(该字段的顺序与Hive目标表定义的字段顺序一致)方 式,将HDFS上的日志文件按行拆分成符合Hive表的记录文件,加载入对应的表。然后通过 Hive的计算对关心的指标进行统计与处理,最终导出到MySQL数据库,交由Web的数据系统 进行图形的展现。这种基于Hadoop+Hive的MapReduce批处理的计算方式,但Hadoop方案 在实际应用中存在如下一些问题:
[0003] (1)由于MapReduce是批处理的编程模型,每次的计算都至少是分钟级,无法满足 时效性,其模型是针对大数据量进行分布式处理与计算,无法用在实时数据处理中。即使 采取了各种技术优化手段,由原来处理频率是"天"到"小时",再改良最终达到20-30分钟 的处理速度;
[0004] (2)MapReduce的作业调度很大程度受到资源管理器的限制,系统繁忙的时候,会 有比较大的延迟;
[0005] (3)从增量的数据文件到达,到最终计算出指标到展现,正常的情况下都得30分 钟处理过程;
[0006] (4)多作业之间的协作通过依赖关系配置,受到外部调度系统的影响,并且容易受 到堵塞;
[0007] (5)计算新增角色的数据通常都是依赖于日全量数据,计算时段的新增用户非常 麻烦;
[0008] (6)每次MapReduce的计算过程都涉及到大量的10,性能很难明显提高。
[0009] 此外,另一种实现游戏实时日志处理过程的手段为实时计算框架(Storm)的 topology,参见图2是现有技术的采用Storm方式进行指标统计的示意图,通过将Spout接 入HDFS的数据文件,当发现有新增加的数据文件时,也是通过HadoopAPI将数据以Tuple 的形式发送出来,从而进入到各个Bolt进行ETL(Extract-Transform-Load,抽取、转换、加 载)的处理,以及最终的指标统计存储和导出,被目前业界认为是比较成熟的实时流行数 据处理框架。
[0010] 然而,storm的方案还存在以下问题:
[0011] (1)需要将Storm部署到集群,带来一定的安装与运维成本;
[0012] (2)对Strom组件深入的掌握及开发过程会有一定的学习曲线和周期;
[0013] (3)需要投入SA人员进行调研和各种测试,时间上会受限于系统管理员;
[0014] (4)涉及到大数据角色或账号查重,需要批量缓存查重,当任务失败或异常情况退 出时,为了使得计算框架自动重调时不丢失信息,会大大增加开发难度或发现问题的难度; 由于Storm中的某个节点出现异常时都会自动重启,会导致内存中缓存的数据丢失;如果 不经过缓冲,每一个数据的到达都直接与HBase进行交互,又将会带来一定的性能开销;
[0015] (5)数据存储在HDFS文件上,当并发读取分片时很难保证事务性;
[0016] (6)出现问题很难快速恢复生产,可控性不高;
[0017] (7)由于指标的需求变化很大,需要能够快速的开发、测试与部署升级。
[0018]综上所述,采用MapReduce+Hive的计算方式来统计指标无法满足对时效性的要 求,可是使用Storm的技术方案来实现仍然存在未解决的诸多问题,另外其对内存的开销 也有较高的要求,因此,需要根据具体的业务和数据特点以及实时性指标统计的要求,独立 开发一套"游戏实时日志处理"系统,以最小的代价来完成数据的实时处理任务,也使得数 据的扩展更加灵活与方便。

【发明内容】

[0019] 本发明目的在于提出一种游戏日志实时处理系统及方法,以提高游戏日志处理的 实时性。
[0020] 为此,本发明提出一种游戏日志实时处理系统,包括:
[0021] 数据获取模块,用于从分布式文件系统中以行级获取流数据,并将所述流数据存 储在内存中;
[0022] 数据处理模块,用于对所述流数据进行处理,得到有效数据;以及
[0023] 指标统计模块,用于利用所述有效数据进行指标统计运算,得到指标统计结果。
[0024] 优选地,所述游戏日志实时处理系统还包括NoSQL类型数据库,所述NoSQL类型数 据库用于存储历史全量数据和/或实时处理过程的中间数据。
[0025] 优选地,所述指标统计模块包括若干个指标组件;其中,每个指标组件包括:
[0026] 计算单元,用于利用所述有效数据进行计算得到第一结果;
[0027] 聚合单元,用于将属于特定维度的若干个第一结果进行聚合,得到当前周期的第 二结果;以及
[0028] 汇总单元,用于将所述当前周期的第二结果与当前周期之前的第二结果进行汇 总,得到所述指标统计结果。
[0029] 优选地,所述指标统计模块还包括调用单元,当满足所述内存的缓存触发条件时, 所述调用单元将调用所述内存中的所述第一结果和/或所述第二结果,并将所述第一结果 和/或第二结果写入NoSQL类型数据库中。
[0030] 优选地,所述若干个指标组件为新增帐号指标组件、登录指标组件、实时在线指标 组件和付费指标组件中的一种或多种。
[0031] 优选地,所述数据获取模块包括:
[0032] 分片获取单元,用于每隔扫描周期获取所述分布式文件系统中的文件分片;
[0033] 分片合并单元,用于将所述文件分片根据文件标识进行合并,得到若干个完整文 件;以及
[0034] 检测判定单元,用于检测所述若干个完整文件中是否有未被处理过的文件,若有, 则所述未被处理过的文件为本次扫描周期中的新增文件,并从所述新增文件中行级获取流 数据。
[0035] 优选地,所述数据获取模块还包括排序单元,所述排序单元用于对所述新增文件 按到来的时间先后进行排序。
[0036] 优选地,所述数据处理模块包括:
[0037] 格式解析单元,用于将不同日志类型的数据进行解释得到具有统一日志类型的有 效数据;
[0038] 业务过滤单元,用于将不满足业务条件的数据进行过滤;以及
[0039] 业务转换单元,用于根据不同业务的特点对数据的内容进行转换,得到具有一致 性的有效数据。
[0040] 优选地,所述数据处理模块还包括数据预处理子模块,所述数据预处理子模块,包 括:
[0041] 清洗单元,用于将数据与各类型日志约定的格式进行格式匹配,将不符合格式的 数据进行清洗;
[0042] 转换单元,用于将数据中的非法字段进行编码或剔除;以及
[0043] 编解码单元,用于对加密数据进行解密或者对非UTF-8编码的字符进行统一编 码。
[0044] 优选地,还包括监控模块,所述监控模块用于对所述游戏日志实时处理系统的运 行状况进行监控。
[0045] 优选地,所述监控模块包括:
[0046] 进程监控单元,用于监控所述游戏日志实时处理系统的进程是否存在;
[0047] 日志监控单元,用于监控所述游戏日志实时处理系统是否有错误日志;以及
[0048] 指标监控单元,用于通过计算得到的指标统计结果与小时作业或天作业的指标统 计结果比对从而进行监控。
[0049] 优选地,还包括运维模块,用于对所述游戏日志实时处理系统的运行状况进行维 护。
[0050] 优选地,所述运维模块包括:
[0051] 初始化部署单元,用于在游戏日志实时处理系统启动之前进行基础信息的配置, 并初始化数据;
[0052] 运行控制单元,用于所述游戏日志实时处理系统运行过程的控制;以及
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1