购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.6 实时计算阶段

实时计算其实与数据存储并没有直接的联系。但是随着企业业务的发展,对于实时的要求愈发迫切,支持实时计算的组件逐步替代了传统的数据存储,融入具体的业务场景中。这里最具有代表性的就是Flink。

Flink是最近比较流行的实时计算框架的核心组成部分,是一个针对流数据和批数据的分布式处理引擎,主要代码由 Java 实现,部分代码由 Scala实现。它既可以处理有界的批量数据集,又可以处理无界的实时数据集,例如实时产生的消息日志数据。

Flink内部存在多种机制以保障应用的稳定性,例如多种State保存机制、分布式快照技术、多种时间语义及多种计算时间窗口等。在Flink框架中,数据真正实现了以一次一个事件的方式被处理,即Excatly-once。此外,Flink的灵活时间语义、多种时间窗口结合水印处理延迟数据等技术也满足了不同类型的应用需求。

由于Flink主要是实时计算,那么必然涉及生产者、消费者以及消息中间件等部分。当生产者与消费者对于消费的速率不匹配时就会产生一些异常。例如,生产者产生速度较快,无法及时消费,导致消息的积压,从下游逐步向上游传导,简称反压。

同时由于Flink处理的是实时数据流,当整个实时计算的集群进行重启或者数据计算逻辑发生变化时,就会涉及整个集群数据的初始化以及任务的重新执行等。Flink提供了多种类型的重启策略,例如固定延迟重启策略、故障率重启策略、没有重启策略、后背重启策略等4种不同的重启策略,以满足实时作业的要求。

由于Flink的兴起,企业数据仓库产生两种主流的框架:流批一体化(Lambda架构)以及纯实时架构(Kappa架构)。二者的主要区别在于是否保留离线计算层(即Batch层),在后续的内容中会进行详细的介绍,这里不再展开。 ccxBRKOtGWcOCjHOgETdo0TkhwbIEvfK5hOnbYVpBLpdnNSKa6iKoZHXbaVwKjJJ

点击中间区域
呼出菜单
上一章
目录
下一章
×