这其中原因是 Flink 利用了一套非常经典的 Chandy-Lamport 算法,它的核心思想是把这个流计算看成一个流式的拓扑,定期从这个拓扑的头部 Source点开始插入特殊的 Barriers,从上游开始不断的向下游广播这个 Barriers。每一个节点收到所有的 Barriers,会将 State 做一次 Snapshot,当每个节点都做完 Snapshot 之后,整个拓扑就算完整的做完了一次 Checkpoint。接下来不管出现任何故障,都会从最近的 Checkpoint 进行恢复。
Flink 利用这套经典的算法,保证了强一致性的语义。这也是 Flink 与其他无状态流计算引擎的核心区别。
Flink 是如何做到在 Checkpoint 恢复过程中没有任何数据的丢失和数据的冗余?来保证精准计 算的?
最新推荐文章于 2024-07-24 12:14:12 发布