故障恢复与一致性保障
某条数据投递到某个流处理系统后,该系统对这条数据只处理一次,提供Exactly-Once的保障是一种理想的情况。如果系统不出任何故障,那简直堪称完美。然而现实世界中,系统经常受到各类意外因素的影响而发生故障,比如流量激增、网络抖动、云服务资源分配出现问题等。如果发生了故障,Flink重启作业,读取Checkpoint中的数据,恢复状态,重新执行计算。
Flink的State和Checkpoint机制:

Checkpoint和故障恢复过程可以保证内部状态的一致性,但有数据重发的问题,如下图所示。假设系统最近一次Checkpoint时间戳是3,系统在时间戳10处发生故障,在Checkpoint之后和故障之前的3到10期间,系统已经处理了一些数据(图中时间戳为5和8的数据)。从上帝视角来看,我们假设系统在时间戳10处发生的故障,但实际场景中,我们是无法预知故障发生的时间,只能是故障发生后,收到报警信息,并知道最近一次的Checkpoint时间戳是3。重启后,我们可以从最近一次的Checkpoin

最低0.47元/天 解锁文章
948

被折叠的 条评论
为什么被折叠?



