作者:夏畅
用户背景
斗鱼成立于 2014 年,是一家致力于为所有人带来欢乐的,弹幕式直播分享平台。
平台现状
在斗鱼,实时计算发展的历程如下:
2018 年开始,为了满足一些近实时数据需求,如 5 分钟、1 小时等场景,斗鱼先后引入了 Spark streaming 和 Storm 技术。随着业务的持续发展,实时指标的需求愈加多样性,Spark streaming 和 Strom 也愈加难以支持;
在2019年,斗鱼引入了 Flink 技术,早期主要以 Flink jar 的方式开发业务来支持实时数据需求。但 Flink jar 的方式使用门槛和成本非常高,有开发门槛高、部署成本高、缺乏监控报警和作业版本管理等多个痛点;
在 19 年底 20 年初,斗鱼设计、开发和落地了基于 K8s 的 Flink 实时计算平台,同时支持以 SQL 和 JAR 两种方式的作业开发,在内部这个平台称为 “玄武计算平台”。
玄武实时计算平台构建在 K8s 集群之上,支持多个 Flink 版本,是一站式实时数据开发平台。架构上从上到下,可以分为四层:平台层、服务层、调度层、以及 K8s 集群层。
平台层:提供包括元数据管理、作业管理、作业运维、案例示范、监控大盘、调度管理、告警管理等用户交互功能;
服务层:分为 Flink 作业服务和 Flink 网关服务,提供 SQL 校验、SQL 调试、作业运行、作业停止、日志查询等能力;
调度层:借助 K8s 的容器镜像,实现 Flink 多个版本的共存。每个 Flink 版本都对应一个 K8s 的镜像,从而实现作业版本的随时切换。当然,为了实现一个 SQL 在多个 Flink 版本下通用,我们还做了一层 SQL 的映射,主要为了解决 Flink 版本间 connector 的配置差异。此外,我们还在调度层内提供了完整的作业状态跟踪机制;
K8s 集群层:主要是提供基础的运行环境。
玄武计算平台上线后,支撑了不少业务场景,如广告、大屏,推荐、系统监控、风控,数据分析和实时标签等。截止到 2021 年 3 季度,斗鱼实时计算平台的用户数达到 100+,Vcore 达到 2000+,作业数达到 500+,日处理数据量超过千亿条。
《Apache Flink 案例集(2022版)》——4.云原生——斗鱼-Apache Flink 在斗鱼的应用与实践(下):https://developer.aliyun.com/article/1228037