Skip to content

31 分布式共识(上):想用好分布式框架,先学会Paxos算法吧

你好,我是周志明。从这节课起,我会用两讲带你学习分布式共识算法。

可靠与可用、共识与一致

在正式开始探讨分布式环境面临的各种技术问题和解决方案之前,我们先把目光从工业界转到学术界,学习两三种具有代表性的分布式共识算法,为后续分布式环境中操作共享数据打好理论基础。

我们先从一个最简单、最常见的场景开始:如果你有一份很重要的数据,要确保它长期存储在电脑上不会丢失,你会怎么做?

这不是什么脑筋急转弯的古怪问题,答案就是去买几块磁盘,把数据在不同磁盘上多备份几个副本。

假设一块磁盘每年损坏的概率是5%,那把文件复制到另一块磁盘上备份后,数据丢失的概率就变成了0.25%(两块磁盘同时损坏才会导致数据丢失)。以此类推,使用三块磁盘存储数据丢失的概率就是0.00125%,使用四块则是0.0000625%。换句话说,使用四块磁盘来保存同一份数据,就已经保证了这份数据在一年内有超过99.9999%的概率是安全可靠的。

对应到软件系统里,保障系统可靠性的方法,与拿几个磁盘备份并没有什么本质区别

单个节点的系统宕机导致无法访问数据的原因可能有很多,比如程序运行出错、硬件损坏、网络分区、电源故障,等等,一年中出现系统宕机的概率也许比5%还要大。这就决定了软件系统也必须有多台机器能够拥有一致的数据副本,才有可能对外提供可靠的服务。