分布式下数据一致性问题
对于一个将数据副本分布在不同得分布式下的系统来说,如果对一个节点的数据进行更新,但是其他节点的数据却没有进行相应的更新,于是在读取其他节点的数据时,便不是最新的数据,即脏数据,这就是典型的数据不一直问题。
为解决这个问题,涌出了大批的算法和协议,其中较为经典的就是二次提交,三次提交,以及Paxos算法。
2PC概念
2PC是Two-Phaso-Commit的缩写,即二阶段提交,是计算机网络尤其是数据库领域内,为了使基于分布式系统架构下的所有节点在进行事务处理过程中,能够保持事务的原子性和一致性设计的一种算法。
二阶段提交协议被认为是一种一致性协议,用来保证分布式系统数据一致性,绝大部分的关系型数据库都采用二阶段提交协议来完成事务的处理。
2PC提交过程
阶段一:提交事务请求+执行事务
1.事务询问:协调者向所有的参与者发起事务内容,询问是否可以执行事务的提交,并开始等待各参与者的响应。
2. 执行事务:各参与者节点执行事务操作
3. 各参与者向协调者反馈事务询问响应:成功返回yes,失败返回no
该阶段在形式上近似于协调者组织参与者对一次事务进行操作的投票表态过程,因此二阶段提交协议也被称为:“投票阶段”。