本文开头附:Flink 学习路线系列 ^ _ ^
1.2PC简介
两阶段提交(two-phase commit, 2PC)是最基础的分布式一致性协议,应用广泛。
在分布式系统中,为了让每个节点都能够感知到其他节点的事务执行状况,需要引入一个中心节点来统一处理所有节点的执行逻辑,这个中心节点叫做协调者(coordinator),被中心节点调度的其他业务节点叫做参与者(participant)。
2PC。顾名思义,2PC将分布式事务分成了两个阶段,两个阶段分别为提交请求(投票)和提交(执行)。协调者根据参与者的响应来决定是否需要真正地执行事务,具体流程如下。
ZooKeeper 中的数据一致性,也是用到了2PC协议。如需了解,请参考:ZooKeeper数据一致性协议—2PC协议
2.Flink 中的 2PC 应用
在 Flink 中,2PC的最常见应用场景其实是关系型数据库,比如MySQL InnoDB存储引擎的XA事务系统。
Flink作为流式处理引擎,自然也提供了对 Exactly-Once 语义的保证。端到端的 Exactly-Once 语义,是输入、处理逻辑、输出三部分协同作用的结果。F