在分布式系统里的多台服务器要对数据状态达成一致,其实是一件很有难度和挑战的事情,因为服务器集群环境的软硬件故障随时会发生,多台服务器对一个数据的记录保持一致,需要一些技巧和设计。
Paxos 算法就是用来解决这类问题的,多台服务器通过内部的投票表决机制决定一个数据的更新与写入。
应用程序连接到任意一台服务器后提起状态修改请求,该服务器会将这个请求发送给集群中其他服务器进行表决。如果某个服务器同时收到了另一个应用程序同样的修改请求,它可能会拒绝该服务器的表决,并且自己也发起一个同样的表决请求,那么其他服务器就会根据时间戳和服务器排序规则进行表决。表决结果会发送给其他所有服务器,最终发起表决的服务器,会根据收到的表决结果决定该修改请求是否可以执行,从而在收到请求的时候就保证了数据的一致性。