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


这种情况下 , 原来的做法门槛就比较高了 , 每一个都要单独去做 , 而且成本高效率低 , 在数据的复用性上也比较差 , 容易出错 , 而且没有办法沉淀 。 每一个做完之后代码回收就扔到一块 , 最多下次做的时候 , 想起来我有这个代码了可以稍微借鉴一下 , 但这种借鉴基本上也都是一种手工的方式 。
所以我们希望能有一个平台化的方式 , 从项目的创建、资源分配、服务开发、在线测试、独立部署、服务上线、线上监控、效果分析、资源回收、项目结项整个综合成一站式的服务 。
其实这块我们是借鉴 DevOps 的思路 , 就是你的开发和运营应该是一个人就可以独立完成的 , 有这样一个系统能够去支撑这件事 。 当一个服务在平台上呈现出来的时候 , 有可能会复用到计算的数据 , 比说实时的登录次数或击杀数 , 那这个指标在后面的服务中就可以共用 。
而且有了这样一个平台之后 , 开发者只需主要关注他的开发逻辑就行了 , 其余两条运维发布和线上运营都由平台来保证 。 所以我们希望有一个平台化的方式 , 把数据计算和接口服务统一起来 , 通过数据的标准化和数据字典的统一 , 能够形成上面不同的数据应用 , 这个是我们的第一个目标 。
其实我们现在都是这种方式了 , 第一是要在 DevOps 的指导思想下去做 , 尤其是腾讯去做的时候数据服务的量是非常大的 , 比如我们去年一共做了 5、6 万的营销服务 , 在这种情况下如果没有平台支撑 , 没有平台去治理和管理这些服务 , 单靠人的话成本非常大 。
3 个现代化 , 大数据应用的 DevOps 。
我们的思路也是这样 , 三个现代化 , 而且把大数据应用的 DevOps 思路实现起来 。 规范化:流程规范、数据开发规范和开发框架;自动化:资源分配、发布上线、监控部署(这是 DevOps 里不可缺少的);一体化:数据开发、数据接口开发、测试发布、运维监控 。
所以我们针对大数据的应用系统 , 会把它拆成这样三块 , 一个是大数据的开发 , 另外一个是数据服务接口的开发 , 当然接口后面就是一些页面和客户端 , 这些完了后这些开发还要有一个完整的开发流程支持 。
这样我们就能够为各种数据应用场景提供一站式的数据开发及应用解决服务、统一的活动管理、数据指标计算开发管理和各种数据应用接口自动化生产管理的一站式的服务 。
这样的系统能保障这些的事情 , 而且我们这里也合理拆分 , 不要把大数据和接口混到一块去 , 一定要做解耦 , 这是一个非常关键的地方 。
■ 1)计算存储
这个框架大家可以看一下 , 我认为可以借鉴 , 如果你内部要去做一个数据服务平台的话 , 基本上思路也是这样的 , 底层的 Iass 可以不用管 , 直接用腾讯云或者阿里云或者其他云上的服务就可以了 。
我们主要是做上层这一块的东西 , 最下面的计算存储这个部分我们内部在做系统的时候也不是 care 的 , 这块最好是能承包出去 。 现在 Iass 发展到这个程度 , 这些东西在云上可以直接像 MySQL 数据库或者 Redis 数据库一样购买就行了 , 比如 Kafka、Pulsar、Flink、Storm 。
存储这块我们内部的有 TRedis、TSpider , 其实就是 Redis 和 MySQL 的升级版本 。 基础这块我建议大家如果自己构建的话 , 也不需要太过于关注 。
■ 2)服务调度
系统核心主要是在中间的服务调度这个部分 , 它是统一的调度 API , 就是上层的一些服务能发下来 , 然后去统一调度 。 另外一个就是流程的开发 , 我们有一个不可缺少的调度系统 , 这里我们使用的是 DAG 调度引擎 , 这样我们可以把离线任务、实时任务、实时+离线、离线+函数接口的服务能够组合起来 , 来完成更复杂实时数据应用场景 。
比如我们现在做的实时排行榜 , 把实时计算任务下发到 Flink 后 , 同时会给 Flink 下发一个 URL , Flink 拿到 URL 后 , 它会把符合条件的数据都发送到 URL , 这个 URL 其实就是函数服务 , 这些函数服务把数据 , 在 Redis 里做排序 , 最终生成一个排行榜 。