对于2pc、3pc的过程我就不详细描述了,网上有一大堆,以后有时间再详细描述一下,今天主要记录我对2pc、3pc的理解
2pc,缺点:
1、阻塞,第一阶段precommit就开始锁资源了,这过程中别人无法修改被锁资源,只能阻塞,所以性能差
2、单点故障问题,TM如果在第一阶段锁资源后就开始单点故障了,那么被锁资源无法释放,就会一直被锁着
3、一致性问题,第二阶段会发生一个提交失败,一个成功
3pc,主要解决了2p中单点故障问题,采用了如果事务参与者资源被锁住,并长时间没得到TM的命令,那么就会自动提交事务(为了解决一直锁着的问题,要么回滚,要么提交事务,所以采用了后者)
所以3pc除了没有单点故障问题,也有阻塞和一致性的问题。