- 准备通过一个系列聊下分布式系统一致性问题,主要会介绍两阶段提交(2pc),三阶段提交(3pc),vector clock,paxos, zap等。
提个问题?
- 人们会使用计算机存储各种数据,一个常见的需求就是:如何能够保证一个数据写入到某台或某组机器上,并且计算机返回成功,那么无论机器是否断电,都能够保证数据不会丢失,并且能够保证数据按照我写入的顺序排列呢?
解决思路
单机系统
- 解决数据写入断电不丢失的最直观的方案就是将数据持久化到磁盘,这样就能解决写入成功数据丢失问题。但是磁盘可能会损坏,所以又引入了一种技术,叫做磁盘阵列。这似乎完美解决了数据安全写入顺序排列不丢失的问题。
多机系统
- 在单机系统时代,如果这台机器挂了,服务就不可用。但是如果有更多的机器,我们就能够极大的提高整个系统的可用性,安全性。并且随着系统机器越多,可用性越强。比如常见的数据备份就有同城跨机房备份,异地跨机房备份,甚至跨国家备份等。总结一下,将数据写到越多的机器上,数据的可用性安全性越高。但是多机系统并非没有缺点,在多机系统引入复制机制后,不同的数据节点之间由于网络延时等原因很容易产生数据不一致的情况。所谓的分布式系统一致性问题应运而生。
分布式系统
- 狭义的分布式系统指由网络连接的计算机系统,每个节点独立地承担计算或存储任务,节点间通过网络协同工作。广义的分布式系统是一个相对的概念,