于是退而求其次,我们可以让数据在局部时间窗口内有序 。在目前主流的实时流计算框架中,常见的做法是将接收到的事件,按时间戳分发到一个个的时间窗口分片中,在等待一段时候后,再触发时间窗口分片内数据的统一处理操作 。
流数据中的时间有两类:事件发生时间和事件处理时间 。事件发生时间是指事件发生的时刻,而事件处理时间则是系统处理事件的时刻 。这两种时间会导致流计算的过程和结果都有所不同,具体使用哪种时间因场景而异 。
4. 无限性
流数据是一种随时间无限增长的数据序列 。这是流数据和批数据最本质的区别 。批数据在每次处理时数据量是有限的,而流数据没有“每次”的概念,它总在不断产生,无穷无尽 。流数据和批数据的区别,导致它们在系统架构和算法实现上都有所不同 。
在系统架构上,实时流数据的无限性要求系统必须具备高可用性和实时处理能力 。一方面,当系统发生故障时,如果系统没有高可用性,则流数据会丢失,并会暂停流计算 。这与实时流计算的目标(即在实时流数据上获取实时价值)是相违背的,因此不可容忍 。
另一方面,当系统处理能力不能跟上数据流产生的速度时,待处理的消息会越积越多 。当积压数量超过阈值后,具有有限存储空间的系统必然会崩溃 。为了消除已经存在的积压消息,系统处理能力必须超过数据流产生的速度,否则积压情况会一直存在 。
在算法实现上,实时流数据的无限性对原本针对批数据设计的算法提出挑战 。一方面,实时流计算过程中的可用空间和可用时间都有更严苛的限制;另一方面,流计算的输入数据随时间无限增加,这和批处理算法的输入是有限数据集有本质区别 。因此,实时流计算使用的算法相比批处理算法,在算法实现和算法复杂度方面会有明显不同 。
在实时流数据的四大特点中,无限性是流数据相比批数据最大的区别,这直接导致了流处理和批处理的查询模式有所不同 。批处理是在固定数据集上进行不同的查询,而流处理是在无限数据集上进行固定的查询 。实时性、随机性和无序性既是实时流计算系统的特点,也是我们要解决的问题 。
推荐阅读
- 君山银针如何鉴别,教你如何鉴别君山银针的品质
- 温州黄汤品质特点,蒙顶黄芽的功效特点
- 黄茶中的君山银针,君山银针的保质期
- 君山黄茶功效,君山银针的功效
- 北港毛尖的冲泡方法,北港毛尖茶的储藏方法
- 小鹅花钱是什么
- 苹果笔记本电脑怎么装Windows双系统
- 黄茶具有减肥的功效吗,细说最适合喝黄茶的5类人
- 分布式系统架构落地与瓶颈突破 进阶架构师必读,人人都是架构师
- 君山银针的作用有哪些,君山银针的特征