某历史养成类游戏开发公司实时计算和数据仓库方案

方案亮点:实时计算峰值百万级TPS、10倍性能提升

业务挑战

某些恶意用户利用信用卡或者别的漏洞刷单(代充),系统需要实时查询多种日志(比如登入日志,充值日志等)从而识别并拦截游戏代充订单,才能避免损失代充订单的钱。

随着业务快速发展,用户行为日志快速增长,需要从海量的点击流日志和激活日志中挖掘数据的价值,比如广告转化率、激活率,每安装用户成本等等。

原来使用Greenplum做实时计算和统计分析。但是Greenplum存在以下缺陷,难以应对业务的快速发展:

1)Greenplum架构难以应对日益复杂的计算任务;

2)Greenplum的单表分区数目有限制,同时多级分区支持不够友好,不适用单表数据量比较大且需要永久保存的日志,如果单个分区表数据量比较大的时候查询性能无法满足业务性能需求;

3)Greenplum扩容时由于数据要重分布会比较慢;

4)Greenplum不适合处理非结构化的数据。

解决方案

客户选择云数据库Lindorm SQL(Phoenix)服务+ 数据湖Spark服务构建实时计算和数据仓库解决方案。

  • Lindorm SQL提供在线查询能力、Spark提供流式处理、复杂分析等能力来满足业务需求;

  • 梳理业务数据,对数据进行分层存储在Lindorm SQL+Spark中:

1)操作数据层:手游客户端、用户中心、广告监测、游戏服务器等产生的原始日志;

2)数据明细层:操作数据层使用Spark Streaming等进行数据去噪、去重、字段规范后写入Lindorm SQL服务,也可以直接使用JDBC写入数据;

3)数据汇总层:数据明细层的数据可以定期(按天或者按小时)ETL(比如关联维表、过滤、聚合)后写入到数据汇总层。数据汇总层的数据供后续的复杂分析;

4)应用数据层:直接对外提供数据查询服务(基于Lindorm SQL服务)支撑上层大数据风控、广告推荐、海量数据精细化运营;数据汇总层的数据经过处理后会把结果数据写入到Lindorm SQL中对外提供查询服务。

点触架构

客户价值

  • 毫秒级识别拦截代充订单Lindorm SQL高并发实时读写,TPS可达百万量级,并发十万量级,毫秒级简单查询;

  • Spark优秀的计算能力同样作业Spark基于列式存储Parquet的分析在数据量大的情况下比Greenplum集群有10倍的性能提升。支撑了广告转化率、激活率,安装用户成本,数据驱动精细化运营等业务计算需求;

  • 一站式解决方案:Spark服务原生支持通过SQL读取Lindorm SQL数据能力,具备列裁剪、谓词下推、分区裁剪等优化;高效地把Lindorm SQL在线库的数据ETL后归档到Spark数据仓库;

  • 聚焦业务:全托管的Spark服务保证了作业运行的稳定性,释放运维人力,同时数据工作台降低了Spark作业管理成本。