Flink 在米哈游的应用实践

简介: 米哈游大数据实时计算团队负责人张剑在 FFA 2022 主会场的分享。

摘要:本文整理自米哈游大数据实时计算团队负责人张剑,在 FFA 的分享,本篇内容主要分为三个部分:

  1. 发展历程和平台建设
  2. 场景应用实践
  3. 未来展望

点击查看直播回放 & 演讲PPT

一、发展历程和平台建设

米哈游成立于 2011 年,致力于为用户提供高品质、超出预期的产品和服务。公司陆续推出多款人气产品,如崩坏学园 2、崩坏 3、未定事件簿、原神以及社区产品米游社等。

1

随着公司的快速发展,实时计算需求应运而生。我们基于 Flink 计算引擎构建了实时计算平台。依据需求及主要工作的不同划分为三个阶段。

第一阶段,以 Datastream API 开发为主的 Flink 平台。第二阶段,以 Flink SQL 为主的一站式开发平台。第三阶段,一站式开发平台的功能深化和场景覆盖。

2

为什么选择 Flink?首先是基于 Flink 框架优异的特性,如毫秒延迟、窗口计算、状态管理、容错恢复。同时蓬勃发展的社区,对 Flink 的引入充满信心。

3

1.0 阶段主要是以 Datastream API 开发为主,初步具备了任务管理以及运维能力。但随着开发人员增多,基于 Datastream API 开发弊端稍加显现,如开发难度大,版本易冲突、运维难度大等。

2.0 阶段为了解决大家的问题,构建了以 Flink SQL 为主的一站式开发平台,主要基于 Flink 1.10 和 1.12。平台的主要工作主要分为如下四个方面:

  1. 加强多云跨区域任务管理能力的建设。
  2. 增强 Flink SQL 能力以及丰富上下游连接器。
  3. 构建指标和日志体系。
  4. 完善元数据以及任务血缘的管理。

基于一站式开发平台较大的提高了大家的开发效率。截止目前,Flink SQL 占比总任务数达 90%以上。

4

随着业务的发展,大家提出了新的期望。总结起来有如下几点:

  1. 越来越多的同学加入,对任务的调优和调参方面希望能够降低成本。
  2. 部分业务的流量波动性较大,希望能有任务的自动扩缩容管理机制。
  3. 部分常见的 ETL 任务,用 Flink SQL 开发也有较大的成本,希望能够基于配置生成 Flink 任务。
  4. 对数据的时效性有了新的期望,希望数据入仓能够分钟可查,或者基于近实时数仓开发。

基于此,3.0 阶段主要是一站式平台开发功能深化和场景覆盖。我们思考的方向主要有如下四个方面:

  1. 静态和动态资源调优。
  2. 自动扩缩容。
  3. 资源弹性能力。
  4. 加强近实时数仓的建设。

静态资源调优指用户开发完一个任务,依据其基本的业务逻辑及探测当前时刻的任务流量,结合本身任务的设置来给定初始资源,同时优化一些不合理的选项,避免用户反复调试。动态调优指一个任务已经上线运行。根据作业收集的指标信息,不断调整任务的资源,来满足任务的正常运行,避免反压及流量波动所带来的影响。从中可以看出,动态调优需要平台具备自动扩缩容的管理机制。而自动扩缩容的管理机制又对底层资源的弹性具有一定的要求。

5

平台的整体架构,主要分三个部分:

  1. 用户权限及鉴权。
  2. 功能和服务。主要包含:概览大盘、作业开发、版本管理、作业运维、作业日志、元数据及血缘、监控告警、资源调优、自动扩缩容、弹性资源管理、安全管控。
  3. 资源和环境。主要包含:多元环境执行端、资源管理器、跨云跨区域的环境管理。

6

二、场景应用实践

第一个重要的应用场景是全球游戏日志标准化采集加工。众所周知,日志处理是大数据处理的重要方面,有些日志的重要性不亚于数据库里的数据。Flink 承担着公司全球游戏业务每天近百亿的日志处理,峰值流量过千万。依据采集方式的不同将数据来源分为两大类。

  1. 通过 Filebeat 的采集。
  2. 通过日志上报服务接收之后传输到 Kafka 实时数据总线。

经过 Flink SQL 处理、加工、写入下游的存储,比如 Clickhouse、Doris、Iceberg。同时,我们会对采集、加工、处理等环节的数据延迟和数据质量加以监控和校正。提供给下游的业务,比如客服查询系统、运营实时分析、离线数仓等。

7

第二个应用场景是实时报表和实时大屏。放到一起是因为它们通常会涉及到聚合指标的计算。我们针对重要的指标,根据业务需求提供实时大屏服务,同时针对运营基于 BI 报表提供实时指标的应用查看,让运营能够及时了解当前游戏的运行状况,方便给业务侧做分析判断。

8

基于实时指标的应用的案例:社区帖子排序。主要用到的是实时指标。社区帖子排序通常会涉及到数据关联,这也是 Flink 比较强项的能力。

社区帖子排序的数据主要源于两个方面。第一个是通过客户端埋点上报,通过 Kafka 接收,Flink 通过流式消费 Kafka 来实现数据的接入。第二个是在业务库,比如 MySQL 的分库分表,我们通过 Flink CDC 能够很方便的获取 Binlog 的实时数据,然后将分库分表的数据写入下游 KV 存储,通过另外一个任务进行流表关联,实现数据打宽的目的。

9

但为什么和上图内容不一样呢?这是因为这一常见链路有两个弊端。第一个是引入了 KV 存储,如 Hbase,任务链路的复杂度就会提高。第二个是这里假定流的速度慢于维表更新的速度,否则就会导致数据关联不上。

为了解决这些问题,我们在 Flink SQL 中将流表关联任务和 Flink CDC 任务在同一个任务里进行接入,采用的是 Regular Join 的方式。这里可能就会有同学会有疑问,用 Flink SQL 需要设置一个统一的状态过期时间,那么维表状态数据会被清理掉,这样不就没办法进行关联了吗?

这里我们拓展了 Flink SQL 的能力,能够在 SQL 层面控制底层状态细化的生存周期。比如可以将维表的状态设置为不过期,从而实现数据关联,之后再经过指标计算,提供给后端帖子排序服务做前端展示。

第三个应用场景是近实时数仓。主要有两个方面:

第一个方面是离线入仓近实时化改造。

以前数据离线入仓往往是通过小时级 ETL 任务进行的,每个小时数据入仓后,下游的调度任务才能够依次启动。对于较大的日志数据,更是可能会耗费 10-20 分钟不等,占据每个小时的 20%~30% 的时间。

经过日志入仓近实时化的改造,通过实时任务来写入 Iceberg 表,同时对采集、加工、写入的延迟加以监控,通过日志文件的元信息和实时计算的元信息进行比对来保证数据质量。最后,针对 Iceberg 表建立 Iceberg Manager 管理中心,主要是小文件合并优化、快照清理等。

从离线日志近实时数仓改造能得到两个明显的收益。一是离线存储的 IO 从之前的每个小时波动性较大到现在较为平稳,二是数据入仓的时效从以前的每小时到分钟级。

第二个方面是数据库数据一键入湖。

相较日志,数据库的数据 Schema 相对具有结构化,我们可以自动探测 Schema 一键生成入湖的任务。依托平台的自动调优以及扩缩容的能力,自动提交任务运行。

10

针对数据库的数据同步,主要会分为两条链路。第一个是通过 Flink CDC 进行全量同步写入 Iceberg V2 表,同步时关闭 upsert 功能,保证写入不会产生太多 delete file。第二个是采用 Flink CDC 做增量同步,通过 Flink SQL 再写入同一个 Iceberg V2 表。过程中我们发现,有时候很多任务可能会对同一个数据源进行消费,这一过程会对上游业务库有一定的压力。所以我们做了一定的优化,将 Flink CDC 采集的数据先写入 Kafka。后面如果再有新的任务对同一个数据源消费,会被自动感知,切换到已经同步过数据的 Kafka 上,避免对业务库产生压力。

数据库数据一键入湖的收益:一方面是从原来需要经过 Flink SQL 到现在基于配置式任务开发,在开发效率上有较大的提高,另一方面从以前离线的批量拉取,过渡到现在对 Binlog 的实时消费,避免了数据库的压力。

下面分享一个近实时数仓的应用案例。如下图所示,这是我们提供的玩家战绩查询,主要是通过 Flink SQL 任务将实时数据写入 Iceberg 表,然后通过实时任务进行排序、计算等操作,写入中间 Iceberg 表,最后通过同步任务将数据同步给战绩服务,给玩家提供查询。

11

第四个应用场景是实时风控。在米哈游,风控团队和实时计算团队联系密切,我们一起拓展了在风控领域的作用。良好的风控服务无疑也是彰显 Flink 在风控领域较为强大的作用,我们基于风控引擎构建了一套相对自动化的任务管理方式,让实时计算平台服务化。

首先根据指标规则,自动拆解任务,自动化做任务创建以及任务调优运行。依靠底层的弹性能力能够比较方便的保证任务的正常运行。同时,我们会对计算完成的指标数据以及原始数据实时入湖。经过每个小时做全量指标校验以及线上规则全面监控来保证实时数据的准确性。拓展的应用场景比如登陆校验、游戏反作弊、人机校验等。

12

三、未来展望

第一、Flink 奠定了实时计算领域的基础,我们将着重加强平台能力的建设,主要有如下四个方面:

  1. 加强 Flink SQL 及本身能力的建设,包括流处理、批处理的能力。
  2. 增强资源调优,包括静态资源调优,动态资源调优。目的是让业务开发人员更多的关注业务本身,而无需关心其他技术性问题。
  3. 做好自动化运维的工作,降低用户的运维成本。
  4. 拓展弹性能力。我们现在是基于 Yarn On K8s 的模式,未来我们将推进 Flink Native K8s,借助 K8s 本身优秀的资源管理能力,来实现弹性和更好的应用体验。

13

第二、探索更多的使用场景,有如下三个方面:

  1. 基于 Flink SQL 实现延迟消息的服务结合 Kafka,就能相对简单的提供给消息队列团队,帮助其更好的发展。
  2. 基于 Flink CDC 的 Binlog 服务提供给运维团队,助力业务发展。
  3. 加强应用级别指标能力建设,帮助业务开发团队更好的发展业务。

14

最后,数据湖和 Table Store 的不断实践,主要有如下方面:

首先,数据湖正处于高速发展,Table Store 也崭露头角。随着新版本的发布,让我们基于流批一体的生产实践有了基础,我们也在不断探索流批一体的生产实践。

15

其次,在进一步探索近实时数仓的建设。过去离线数仓、实时数仓相对割裂,在建设近实时数仓时,如何基于数据的确定性和数据的无界性,在近实时数仓中得以平衡。比如,我们是否可以基于近数据源产生类似 WaterMark 的一种机制来在流数据上保证一定的确定性,或者是文件的 FileMark 来实现等同于离线批处理的确定性含义呢?另外,离线数仓往往有完善的任务调度和依赖,方便用户进行补数、重跑等操作。那么在建设近实时数仓管理中心的时候,我们是否也需要相应的功能呢?这些都是值得我们探索和思考的地方。

点击查看直播回放 & 演讲PPT


更多内容

Flink Forward Asia 2022

本届 Flink Forward Asia 更多精彩内容,可点击阅读原文或扫描图片二维码观看全部议题的视频回放及获取 FFA 2022 峰会资料!

img

PC 端观看:https://flink-forward.org.cn/建议前往 FFA 2022 大会官网观看全部议题的视频回放


img

活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算Flink版现开启活动:
99 元试用 实时计算Flink版(包年包月、10CU)即有机会获得 Flink 独家定制卫衣;另包 3 个月及以上还有 85 折优惠!
了解活动详情:https://www.aliyun.com/product/bigdata/sc

image.png

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
8月前
|
存储 监控 数据挖掘
京东物流基于Flink & StarRocks的湖仓建设实践
本文整理自京东物流高级数据开发工程师梁宝彬在Flink Forward Asia 2024的分享,聚焦实时湖仓的探索与建设、应用实践、问题思考及未来展望。内容涵盖京东物流通过Flink和Paimon等技术构建实时湖仓体系的过程,解决复杂业务场景下的数据分析挑战,如多维OLAP分析、大屏监控等。同时,文章详细介绍了基于StarRocks的湖仓一体方案,优化存储成本并提升查询效率,以及存算分离的应用实践。最后,对未来数据服务的发展方向进行了展望,计划推广长周期数据存储服务和原生数据湖建设,进一步提升数据分析能力。
817 1
京东物流基于Flink & StarRocks的湖仓建设实践
|
6月前
|
资源调度 Kubernetes 流计算
Flink在B站的大规模云原生实践
本文基于哔哩哔哩资深开发工程师丁国涛在Flink Forward Asia 2024云原生专场的分享,围绕Flink On K8S的实践展开。内容涵盖五个部分:背景介绍、功能及稳定性优化、性能优化、运维优化和未来展望。文章详细分析了从YARN迁移到K8S的优势与挑战,包括资源池统一、环境一致性改进及隔离性提升,并针对镜像优化、Pod异常处理、启动速度优化等问题提出解决方案。此外,还探讨了多机房容灾、负载均衡及潮汐混部等未来发展方向,为Flink云原生化提供了全面的技术参考。
387 9
Flink在B站的大规模云原生实践
|
7月前
|
SQL 存储 NoSQL
Flink x Paimon 在抖音集团生活服务的落地实践
本文整理自抖音集团数据工程师陆魏与流式计算工程冯向宇在Flink Forward Asia 2024的分享,聚焦抖音生活服务业务中的实时数仓技术演变及Paimon湖仓实践。文章分为三部分:背景及现状、Paimon湖仓实践与技术优化。通过引入Paimon,解决了传统实时数仓开发效率低、资源浪费、稳定性差等问题,显著提升了开发运维效率、节省资源并增强了任务稳定性。同时,文中详细探讨了Paimon在维表实践、宽表建设、标签变更检测等场景的应用,并介绍了其核心技术优化与未来规划。
728 10
Flink x Paimon 在抖音集团生活服务的落地实践
|
7月前
|
资源调度 Kubernetes 调度
网易游戏 Flink 云原生实践
本文分享了网易游戏在Flink实时计算领域的资源管理与架构演进经验,从Yarn到K8s云原生,再到混合云的实践历程。文章详细解析了各阶段的技术挑战与解决方案,包括资源隔离、弹性伸缩、自动扩缩容及服务混部等关键能力的实现。通过混合云架构,网易游戏显著提升了资源利用率,降低了30%机器成本,小作业计算成本下降40%,并为未来性能优化、流批一体及智能运维奠定了基础。
447 9
网易游戏 Flink 云原生实践
|
9月前
|
存储 运维 监控
阿里妈妈基于 Flink+Paimon 的 Lakehouse 应用实践
本文总结了阿里妈妈数据技术专家陈亮在Flink Forward Asia 2024大会上的分享,围绕广告业务背景、架构设计及湖仓方案演进展开。内容涵盖广告生态运作、实时数仓挑战与优化,以及基于Paimon的湖仓方案优势。通过分层设计与技术优化,实现业务交付周期缩短30%以上,资源开销降低40%,并大幅提升系统稳定性和运营效率。文章还介绍了阿里云实时计算Flink版的免费试用活动,助力企业探索实时计算与湖仓一体化解决方案。
1039 3
阿里妈妈基于 Flink+Paimon 的 Lakehouse 应用实践
|
9月前
|
存储 SQL Java
Flink CDC + Hologres高性能数据同步优化实践
本文整理自阿里云高级技术专家胡一博老师在Flink Forward Asia 2024数据集成(二)专场的分享,主要内容包括:1. Hologres介绍:实时数据仓库,支持毫秒级写入和高QPS查询;2. 写入优化:通过改进缓冲队列、连接池和COPY模式提高吞吐量和降低延迟;3. 消费优化:优化离线场景和分区表的消费逻辑,提升性能和资源利用率;4. 未来展望:进一步简化用户操作,支持更多DDL操作及全增量消费。Hologres 3.0全新升级为一体化实时湖仓平台,提供多项新功能并降低使用成本。
718 1
Flink CDC + Hologres高性能数据同步优化实践
|
9月前
|
SQL 存储 调度
基于 Flink 进行增量批计算的探索与实践
基于 Flink 进行增量批计算的探索与实践
240 1
基于 Flink 进行增量批计算的探索与实践
|
10月前
|
SQL 存储 HIVE
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
本文整理自鹰角网络大数据开发工程师朱正军在Flink Forward Asia 2024上的分享,主要涵盖四个方面:鹰角数据平台架构、数据湖选型、湖仓一体建设及未来展望。文章详细介绍了鹰角如何构建基于Paimon的数据湖,解决了Hudi入湖的痛点,并通过Trino引擎和Ranger权限管理实现高效的数据查询与管控。此外,还探讨了湖仓一体平台的落地效果及未来技术发展方向,包括Trino与Paimon的集成增强、StarRocks的应用以及Paimon全面替换Hive的计划。
1252 1
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
|
9月前
|
存储 运维 BI
万字长文带你深入广告场景Paimon+Flink全链路探索与实践
本文将结合实时、离线数据研发痛点和当下Paimon的特性,以实例呈现低门槛、低成本、分钟级延迟的流批一体化方案,点击文章阅读详细内容~
|
9月前
|
SQL 弹性计算 DataWorks
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
453 6

热门文章

最新文章

相关产品

  • 实时计算 Flink版