- 离线处理与实时处理
实时处理是指从数据产生到根据该数据计算的结果产生之间的这段延迟可以满足业务的需求,假如业务需求是延迟不超过10ms,而你的处理延迟为15ms,就不能算实时处理,而假如业务要求处理数据的延迟为30min,而你的数据可以在20min内计算出来,这也算实时处理。
离线处理是指数据计算的时间与线上的业务系统无关,换句话说,对时效性没有要求,啥时候得到计算结果对业务系统没影响。
- 有界流与无界流
有界流有一个定义的开始和结束。在执行任何计算之前,可以通过摄取所有数据来处理有界流。处理有界流不需要有序摄取,因为有界数据集总是可以排序的。
无界流有一个开始,但没有定义的结束。它们不会在生成数据时终止并提供数据。必须连续处理无边界流,即,事件在被摄入后必须立即处理。等待所有输入数据到达是不可能的,因为输入是无界的,并且不会在任何时间点完成。处理无界数据通常需要以特定的顺序接收事件,例如事件发生的顺序,以便能够推断出结果的完整性。无界流是一种不断增长的,本质上无限的数据集。这些通常被称为“流数据”。
- 批处理与流处理
处理有界流的计算称之为批处理,处理无界流的结算称之为流处理。
- 一个问题?流处理一定是实时处理吗?批处理一定不是实时处理吗?
不一定,假如流处理的延迟满足不了业务系统的需求,即使它一直在处理无界数据,它也不是实时计算,假如连续的批处理可以满足业务系统对时效性的需求,它就是实时计算,SparkStreaming是一个典型的可以做到使用批处理来完成实时计算的引擎。
最终总结: 离线和实时应该指的是:数据处理的延迟; 批量和流式指的是:数据处理的方式。