Paxos和2PC
Paxos协议和2PC协议在分布式系统中的作用是不同的。
Paxos协议用于保证同一个数据分片的多个副本之间的数据一致性。
2PC协议用于保证属于多个数据分片上的操作的原子性,这些数据分片可能分布在不同的服务器上,2PC协议保证多台服务器上的操作要么全部成功,要么全部失败。
Paxos协议有两种用法:
一种是用它来实现全局的锁服务或者集群配置相关的服务,比如Google Chubby的锁服务和Apache Zookeeper的配置服务。
另外一种用法是用它来将用户数据复制到多个数据中心,例如Google Megastore和Google Spanner。
2PC协议最大的缺陷在于无法处理协调者宕机。如果协调者宕机,那么2PC协议中的每个参与者可能都不知道事务应该回滚还是提交,整个协议被阻塞,执行过程申请的资源无法释放。因此,常见的做法是将2PC和paxos协议结合起来,通过2PC保证多个数据分片上操作的原子性,通过paxos协议实现同一个数据分片的多个副本之间的一致性。另外,通过Paxos协议解决2PC协议中协调者宕机问题。当2PC协议中的协调者出现故障时,通过Paxos协议选举出新的协调者继续提供服务。