在了解Flink之前,我们需要先简单了解批量、流式计算和离线、实时计算。
首先需要明确的一点是,批量、流式计算和离线、实时计算是按照不同维度划分的两套数据处理方式。
(1)批量、流式计算体现在数据计算方式的不同上。那如何理解这里提到的数据计算方式呢?我们可以分别看一下什么是批量计算、什么是流式计算?
- 批量计算
顾名思义,就是对数据进行批量的处理。通常,我们都会先统一收集数据,并且把数据以数据表的形式存储到数据库中,再按照不同的计算逻辑,对全部的数据进行统一的批量处理,待全部数据处理完成后,才会输出最终的结果。
- 流式计算
在流式计算的世界中,数据是持续流动的,因此我们需要及时地对数据进行处理计算。与批量计算不同的是,流式计算需要先定义好计算逻辑,然后提交到流式计算系统中,等流数据到达后就会触发计算逻辑进行计算,并且这个计算作业的逻辑在整个运行期间是不可更改的。
(2)离线、实时计算则体现在对数据计算时延的要求上。如离线计算对数据计算结果的时延要求一般是一天、数天、数周甚至是数月;准实时计算一般是1小时或几小时;而实时计算则是分钟级、毫秒级的。
流批计算和离线、实时计算这两套数据处理方式之间不完全相同,但也并非完全独立,有时候我们也会看到它们同时出现,比如常见的离线批计算、实时流计算,当然在实际操作中,更重要的是根据项目需求,灵活地搭配使用不同的数据处理方式。