From implementation or logic complication perspective, the AT_LEAST_ONCE is somehow simpler compared with EXACTLY_ONCE w/o unaligned, since it can always process data without blocking any channels.
------------------------------------------------------------------ From:Lu Weizheng <luweizhen...@hotmail.com> Send Time:2020年6月22日(星期一) 10:53 To:Zhijiang <wangzhijiang...@aliyun.com>; user@flink.apache.org <user@flink.apache.org> Subject:回复: Unaligned Checkpoint and Exactly Once Thank you Zhijiang! The second question about config is just because I find a method in InputProcessorUtil. I guess AT_LEAST_ONCE mode is a simpler way to handle checkpont barrier? private static CheckpointBarrierHandler createCheckpointBarrierHandler( StreamConfig config, InputGate[] inputGates, SubtaskCheckpointCoordinator checkpointCoordinator, String taskName, AbstractInvokable toNotifyOnCheckpoint) { switch (config.getCheckpointMode()) { case EXACTLY_ONCE: if (config.isUnalignedCheckpointsEnabled()) { return new AlternatingCheckpointBarrierHandler( new CheckpointBarrierAligner(taskName, toNotifyOnCheckpoint, inputGates), new CheckpointBarrierUnaligner(checkpointCoordinator, taskName, toNotifyOnCheckpoint, inputGates), toNotifyOnCheckpoint); } return new CheckpointBarrierAligner(taskName, toNotifyOnCheckpoint, inputGates); case AT_LEAST_ONCE: int numInputChannels = Arrays.stream(inputGates).mapToInt(InputGate::getNumberOfInputChannels).sum(); return new CheckpointBarrierTracker(numInputChannels, toNotifyOnCheckpoint); default: throw new UnsupportedOperationException("Unrecognized Checkpointing Mode: " + config.getCheckpointMode()); } } 发件人: Zhijiang <wangzhijiang...@aliyun.com> 发送时间: 2020年6月22日 10:41 收件人: Lu Weizheng <luweizhen...@hotmail.com>; user@flink.apache.org <user@flink.apache.org> 主题: Re: Unaligned Checkpoint and Exactly Once Hi Weizheng, The unaligned checkpoint (UC) only supports exactly-once mode in Flink 1.11 except savepoint mode. The savepoint is probably used in job rescaling scenario and we plan to support it in future release version. Of course UC can satisfy exactly-once semantic as promised. Regarding the config issue, i am not sure I get your point here. The first config is for describing whether the current setting mode (actually only exactly-once) enables UC or not, and the second config is for setting the different mode (exactly-once or at least-once). I guess you refer to merge them by using the first config form. But somehow they seem two different dimensions for config the checkpoint. One is for the semantic of data processing guarantee. And the other is for how we realize two different mechanisms to guarantee one (exactly-once) of the semantics. Best, Zhijiang ------------------------------------------------------------------ From:Lu Weizheng <luweizhen...@hotmail.com> Send Time:2020年6月22日(星期一) 07:20 To:user@flink.apache.org <user@flink.apache.org> Subject:Unaligned Checkpoint and Exactly Once Hi there, The new feature in Flink 1.11 will provide us the Unaligned Checkpoint which means a operator subtask does not need to wait all the Checkpoint barrier and will not block some channels. As the Checkpoint barrier is the key mechanism for Exactly Once guarantee, I am not sure Unaligned Checkpoint could still achieve Exactly Once guarantee or only AT Least Once? FLIP-76 : Unaligned checkpoints will initially be an optional feature. After collecting experience and implementing all necessary extensions, unaligned checkpoint will probably be enabled by default for exactly once. What's more, in the following two configs, Config 1 env.getCheckpointConfig().enableUnalignedCheckpoints(); Config 2 checkpointCfg.setCheckpointingMode(CheckpointingMode.AT_LEAST_ONCE); Does Config 2 use a even simpler way for Checkpoint than Unaligned Checkpoint? Hope for replies! Weizheng