黑科技王者荣耀背后的实时大数据平台用了什么黑科技?( 三 )


再往下的这个调度器 , 你可以不断地去横向拓展 , 比如我可以做 Storm 的调度器、Flink 的调度器、Spark 的调度器等等一系列 。 在这块可以形成自己算法库 , 这个算法库可以根据场景去做 , 比如有些是 Flink 的 SQL 的分装 , 也就是把 SQL 传进来 , 它就能够计算和封装的 Jar 包 。 另外比如一些简单的数据出发、规则判断也可以去做 , 直接把算法库分装到这块就行 。
其实这块和业务场景没有直接关系的 , 但算法库一定是和场景是有关系的 , 另外下层我们会有写文件通道 , 比如说一些 Jar 包的分发 , 这里腾讯用的是 COS , 能够去做一些数据的传输和 Jar 包的提交 。
还有一个命令管道 , 它主要针对机器 , 比如提交 Flink 任务的时候一定是通过命令管道 , 然后在一台机器去把 Jar 包拉下来 , 然后同时把任务提交到 Flink 集群里去 。 数据管道也是类似的一个作用 。
■ 3)各种管理
另外还要将一个蛮重要的内容 , 右边绿色这块的运营监控、集群管理、系统管理(用户权限管理 , 业务管理 , 场景管理 , 菜单配置管理等等) , 还有消息中心、帮助文档 , 这些都是配套的 , 整个系统不可缺少的 。
还有一部分是组件管理 , 包括大数据组件管理、函数管理、服务的二进制管理都可以在这里能够做统一的管理 。
数据资产 , 比如我们通过 Flink 或者 Storm 能够生成的数据指标 , 它的计算逻辑的管理都在这里面 , 包括我们计算出来后 , 把这些指标打上标签或者划后 , 我们也作为数据资产 。
还有一个最重要的是数据表的管理 , 我们无论是 Flink 或 Storm , 它的计算最终的落地点一定是通过一个数据表能算出来的 。 其他都还好 , 数据报表 , 比如每天计算多少数据 , 成功计算多少 , 每天有多少任务在跑 , 新增多少任务 , 这些都在里面可以做 , 包括我们版本的发布变更 。
还有一个是外部管理端 , 这个根据业务场景去做就行了 , 等会演示我们管理端的时候大家就可以看到 , 其实我们的菜单相对来说比较简单 , 根据比如我们的数据接入 , 从源头把数据接入到 Kafka 或者 Pulsar 里去 。 然后数据指标基于接入的数据表 , 进行数据指标的计算 , 比如一些特性的 Jar 包 , 它是多张表的数据混合计算 , 或者是加上的表的混合计算 , 等等一系列通过硬场景做的一些分装 。
我们最终把这些做完后 , 所有的大数据都是通过对外的服务 API 暴露出去的 , 比如最终游戏任务是否完成 , 用户 ID 过来后我们能看这个用户的任务是否完成 , 这样的一些应用场景可以直接使用 API 去操作 。
这是整个流程 , 讲得比较细后面大家才会更清晰 。
1、数据开发流程
这是我们整体的数据应用流程:
我们的 Game Server 先把数据上传到日志 Server(数据接入部分) , 日志 Server 再把数据转到 Kafka 或者 Pulsar , 就是消息队列里 。
接进来后是数据表 , 数据表是描述 , 基于描述的表去开发指标、数据 。 比如我们这里一共有三类 , 一类是 SQL , 另外一类是我们已经分装好的框架 , 你可以自己去填充它的个性代码 , 然后就可以在线完成 Flink 程序的编写 。
还有一种是自己全新的在本地把代码写好 , 再发到系统里去调测 。 之前说了在大数据计算和数据接口一定要做解耦 , 我们解耦的方式是存储 , 存储我们用 Redis 。 它这种做法是把 Redis 和 SSD 盘能够结合起来 , 然后再加上 RockDB , 就是 Redis 里面它 hold 热点数据 , 同时它把这些数据都通过这个 RockDB 落地到 SSD 盘里去 , 所以它的读写性非常好 , 就是把整个磁盘作为数据库存储 , 而不像普通的 Redis 一样再大数据情况下智能把内存作为存储对象 。
在大数据把数据计算存储进去后 , 后面的就简单了 , 我们提供查询的服务有两种 , 一种是计算的指标 , 点一下就可以生成接口 , 我们叫规则接口;然后我们另外一种 , 也提供特性化的存储到介质里 , 我可以自己去定义他的 SQL 或者查询方式 , 然后在数据进行加工处理 , 生成接口。