Flink在美团平台的实践与应用在美团平台的实践与应用
美团实时计算平台现状和背景
实时平台架构
上图呈现的是当前美团实时计算平台的简要架构。最底层是数据缓存层,可以看到美团测的所有日志类的数据,都是通过统一
的日志收集系统收集到Kafka。Kafka作为最大的数据中转层,支撑了美团线上的大量业务,包括离线拉取,以及部分实时处
理业务等。在数据缓存层之上,是一个引擎层,这一层的左侧是我们目前提供的实时计算引擎,包括Storm和Flink。Storm在
此之前是 standalone 模式的部署方式,Flink由于其现在运行的环境,美团选择的是On YARN模式,除了计算引擎之外,我们
还提供一些实时存储功能,用于存储计算的中间状态、计算的结果、以及维度数据等,目前这一类存储包含Hbase、Redis以
及ES。在计算引擎之上,是趋于五花八门的一层,这一层主要面向数据开发的同学。
实时数据开发面临诸多问题,例如在程序的调试调优方面就要比普通的程序开发困难很多。在数据平台这一层,美团面向用户
提供的实时计算平台,不仅可以托管作业,还可以实现调优诊断以及监控报警,此外还有实时数据的检索以及权限管理等功
能。除了提供面向数据开发同学的实时计算平台,美团现在正在做的事情还包括构建元数据中心。这也是未来我们想做SQL的
一个前提,元数据中心是承载实时流系统的一个重要环节,我们可以把它理解为实时系统中的大脑,它可以存储数据的
Schema,Meta。架构的最顶层就是我们现在实时计算平台支撑的业务,不仅包含线上业务日志的实时查询和检索,还涵盖当
下十分热门的实时机器学习。
机器学习经常会涉及到搜索和推荐场景,这两个场景最显著特点:一、会产生海量实时数据;二、流量的QPS相当高。此时
就需要实时计算平台承载部分实时特征的提取工作,实现应用的搜索推荐服务。还有一类是比较常见的场景,包括实时的特征
聚合,斑马Watcher(可以认为是一个监控类的服务),实时数仓等。
以上就是美团目前实时计算平台的简要架构。
实时平台现状
美团实时计算平台的现状是作业量现在已经达到了近万,集群的节点的规模是千级别的,天级消息量已经达到了万亿级,高峰
期的消息量能够达到千万条每秒。
痛点和问题
美团在调研使用Flink之前遇到了一些痛点和问题:
1.实时计算精确性问题:在调研使用Flink之前美团很大规模的作业是基于Storm去开发的,Storm主要的计算语义是At-Least-
Once,这种语义在保证正确性上实际上是有一些问题的,在Trident之前Storm是无状态的处理。虽然Storm Trident提供了一
个维护状态的精确的开发,但是它是基于串行的Batch提交的,那么遇到问题在处理性能上可能会有一点瓶颈。并且Trident是
基于微批的处理,在延迟上没有达到比较高的要求,所以不能满足一些对延迟比较高需求的业务。
2.流处理中的状态管理问题:基于之前的流处理过程中状态管理的问题是非常大的一类问题。状态管理除了会影响到比如说计
算状态的一致性,还会影响到实时计算处理的性能以及故障恢复时候的能力。而Flink最突出的一个优势就是状态管理。
3.实时计算表义能力的局限性:在实时计算之前很多公司大部分的数据开发还是面向离线的场景,近几年实时的场景也慢慢火
热起来了。那与离线的处理不同的是,实时的场景下,数据处理的表意能力可能有一定的限制,比如说他要进行精确计算以及
时间窗口都是需要在此之上去开发很多功能性的东西。