-
背景
-
Flink + Kafka 平台化设计
-
Kafka 在实时数仓中的应用
-
问题 & 改进
直播回放:https://developer.aliyun.com/live/2894
一、背景介绍
(一)流平台通用框架
目前流平台通用的架构一般来说包括消息队列、计算引擎和存储三部分,通用架构如下图所示。客户端或者 web 的 log 日志会被采集到消息队列;计算引擎实时计算消息队列的数据;实时计算结果以 Append 或者 Update 的形式存放到实时存储系统中去。
目前,我们常用的消息队列是 Kafka,计算引擎一开始我们采用的是 Spark Streaming,随着 Flink 在流计算引擎的优势越来越明显,我们最终确定了 Flink 作为我们统一的实时计算引擎。
(二)为什么选 Kafka?
Kafka 是一个比较早的消息队列,但是它是一个非常稳定的消息队列,有着众多的用户群体,网易也是其中之一。我们考虑 Kafka 作为我们消息中间件的主要原因如下:
-
高吞吐,低延迟:每秒几十万 QPS 且毫秒级延迟;
-
高并发:支持数千客户端同时读写;
-
容错性,可高性:支持数据备份,允许节点丢失;
-
可扩展性:支持热扩展,不会影响当前线上业务。
(三)为什么选择 Flink?
Apache Flink 是近年来越来越流行的一款开源大数据流式计算引擎,它同时支持了批处理和流处理,考虑 Flink 作为我们流式计算引擎的主要因素是:
-
高吞吐,低延迟,高性能;
-
高度灵活的流式窗口;
-
状态计算的 Exactly-once 语义;
-
轻量级的容错机制;
-
支持 EventTime 及乱序事件;
-
流批统一引擎。
(四)Kafka + Flink 流计算体系