
第 11章
流式处理
Kafka
一般被认为是一个强大的消息总线,可以传递事件流,但没有处理和转换事件的
能力。
Kafka
可靠的传递能力让它成为流式处理系统完美的数据来源。很多基于
Kafka
构
建的流式处理系统都将
Kafka
作为唯一可靠的数据来源,如
Apache Storm
、
Apache Spark
Streaming
、
Apache Flink
、
Apache Samza
等。
有时候,行业分析师声称这些流式处理系统与那些已经存在了二十多年的复杂事件处理
(
CEP
)系统没有什么两样。但是流式处理系统却很成功,而只有寥寥可数的系统在采用
CEP
,他们为此感到很惊讶。笔者认为,
CEP
的主要问题在于缺少事件流的处理能力。
随着
Kafka
越来越流行,最初作为简单的消息总线,后来成为一种数据集成系统。很多
公司的系统里都包含了大量有价值的数据流,它们井然有序地存在了很长时间,好像在
等待一个流式处理框架的出现。换句话说,在出现数据库之前,数据的处理是一项艰巨
的任务。类似地,因为缺少能够提供可靠存储和集成的流式平台,流式处理的发展也受
到了阻碍。
从
0.10.0
版本开始,
Kafka
不仅为每一个流行的流式处理框架提供了可靠的数据来源,还
提供了一个强大的流式处理类库,并将其作为客户端类库的一部分。这样,开发人员就可
以在应用程序里读取、处理和生成事件,而不需要再依赖外部的处理框架。
本章将以解释什么是流式处理作为开头(因为这个术语经常被人误解),然后讨论流式处
理的一些基本概念和流式处理系统常用的设计模式,然后深入介绍
Kafka ...