B站实时流计算实践:Flink与Spark的应用与挑战

需积分: 9 8 下载量 144 浏览量 更新于2024-07-16 收藏 4.18MB PPTX 举报
"本次分享主要介绍了Flink在哔哩哔哩(B站)的实际应用情况,包括遇到的问题、解决方案以及构建一站式实时流计算平台的过程。分享者为B站的资深开发工程师,也是平台技术负责人郑志升。内容涵盖了Flink在B站的应用背景、存在的问题、需求多样性以及对监控告警体系的改进。" 正文: Flink作为一款强大的开源流处理框架,在B站的实践中扮演了重要角色。然而,实际应用中也面临一些挑战,例如开发门槛高、作业运行质量差、监控告警成本高等问题。开发门槛高主要源于Flink基于底层实时引擎的特性,需要开发者具备一定的知识基础,如环境配置、语言编程、数据可靠性以及作业质量控制。此外,随着业务需求的多样化,Flink需要支持native流处理与batch处理,以及window和join等复杂操作。 在作业运行质量方面,B站曾使用纯流式Flink streaming和微批次的Spark streaming,但由于Spark 2.4.x版本对某些Operations支持不够完善,导致作业稳定性差。同时,不同作业通过命令行单独提交,增加了维护成本。Yarn的切换和抖动也影响了作业的稳定性,缺乏有效的自恢复机制。因此,监控告警成本较高,业务方需要自行检测作业状态并进行容错恢复,而且没有统一的监控告警体系,接入成本和重复开发维护问题突出。 为了解决这些问题,B站构建了一站式可视化实时流计算平台,支持Spark和Flink等多种实时引擎。该平台强调极致的工程效率,通过SQL和DAG(有向无环图)工作流,简化代码编写,提高开发效率。同时,通过流计算模型抽象,将Source、Transform、Sink的语义进行规范化,定义标准的Source和Sink,支持自定义Transform。 数据集成阶段引入了Schema标准化,确保数据输入、输出和状态的一致性。监控方面,平台实现了Metric化,提供通用指标模型,包括输入源条数、任务消费条数、数据堆积lag、延迟反压情况等。此外,还封装了通用打点SDK,支持业务方直接进行个性化指标打点,并建立了指标化告警体系,根据预设规则(如上下限、周同比、断流等)进行自动告警。 通过这些改进,B站在Flink的应用上实现了更高效、稳定和可监控的实时流处理,降低了开发和运维成本,提升了整个平台的健壮性和用户体验。这一实践不仅展示了Flink在实际业务中的潜力,也为其他企业提供了借鉴和参考。
2021-11-13 上传