1.概述
流处理是一种用来处理无穷数据集的数据处理引擎。通常无穷数据集具有以下几个特点:
- 无穷数据:持续产生的数据,它们通常会被称为流数据。例如:银行信用卡交易订单、股票交易就、游戏角色移动产生的数据等;
- 低延时:流数据通常都是实时处理,数据实时产生,然后流处理引擎实时处理流数据,因此延时很短。
2.内容
2.1 什么是流处理
对于存储在Kafka系统内的数据,Kafka系统提供了一种进行处理和分析的功能——流处理,它具有以下特性。
1. 是一个轻量级的类库
Kafka流处理提供了一个非常轻量级的Java类库,它能够轻而易举地集成到任意的Java应用程序中,打包和部署的方式也没有特殊的要求。
2. 拥有良好的可扩展性和容错性
Kafka流处理除了依赖Kafka系统外,对外界不存在任何依赖。在系统达到瓶颈时,Kafka流处理可以使用Kafka系统的分区机制,轻松地实现水平扩展来解决瓶颈问题。同时,通过记录状态(窗口操作、聚合操作等)来实现高效的操作。
3. 拥有丰富的应用接口
Kafka流处理对底层的应用接口进行了封装,同时,对拓扑结构进行了高度抽象。
4. 具有灵活的弹性伸缩功能
在只读取数据一次的情况下,流处理应用程序无需用户介入,也能自动修改参数,实现应用程序的自动扩容和减容。
2.2 什么是流式计算
通常情况下,流式计算与批处理计算会放在一起做比较分析。
(1)在流式计算模型中,数据的输入是持续不断的,这意味着永远不知道数据的上限是多少,因此,计算产生的结果也是持续输出的,流程如下图所示。流式计算一般对实时性要求较高,为了提升计算效率,通常会采用增量计算来替代全量计算。
(2)在批处理计算模型中,通常数据上限是可知的,一般会先定义计算逻辑,然后进行全量计算,并将计算结果一次性输出。流程如下图所示。