Apache Flink 进阶(一):Runtime 核心机制剖析(14)

图11.Region-based 错误恢复策略示例二 。 如果是由于上游失败导致的错误 , 那么需要同时重启上游的 Region 和下游的 Region 。 实际上 , 如果下游的输出使用了非确定的数据分割方式 , 为了保持数据一致性 , 还需要同时重启所有上游 Region 的下游 Region 。

除了 Task 本身执行的异常外 , 另一类异常是 Flink 集群的 Master 进行发生异常 。 目前 Flink 支持启动多个 Master 作为备份 , 这些 Master 可以通过 ZK 来进行选主 , 从而保证某一时刻只有一个 Master 在运行 。 当前活路的 Master 发生异常时某个备份的 Master 可以接管协调的工作 。 为了保证 Master 可以准确维护作业的状态 , Flink 目前采用了一种最简单的实现方式 , 即直接重启整个作业 。 实际上 , 由于作业本身可能仍在正常运行 , 因此这种方式存在一定的改进空间 。

5. 未来展望

Flink目前仍然在Runtime部分进行不断的迭代和更新 。 目前来看 , Flink未来可能会在以下几个方式继续进行优化和扩展: